• ベストアンサー

シンプソン公式

数学が苦手で、わからないので教えていただきたいのですが。 (1)区間0≦x≦1において関数f(x)=1-x^2を台形公式で近似計算するとき、どんなことがいえるのでしょうか。 (2)区間-1≦x≦1において関数f(x)=|1/4-x^2|をシンプソン公式で計算するとき、どんな方針でやればいいのでしょうか。 以上、よろしくお願いいたします。

  • JZ302
  • お礼率92% (1106/1202)

質問者が選んだベストアンサー

  • ベストアンサー
  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.3

No.2です。 質問に答えます。 (1)そうです。 (2)x軸対称なの0≦x≦1で計算し、結果を2倍します。    分割は    0≦x≦1/2   (1)    1/2≦x≦1   (2)   の2分割です (1)ではシンプソン公式によれば  (1*1/4+4*3/16+1*0)*(1/2)/6=1/12 (2)では  (1*0+4*5/16+1*3/4)*(1/2)/6=1/6 よって積分は   (1/12+1/6)*2=1/2 3/16はx=1/4, 5/16はx=3/4におけるf(x) の値です。 真の積分値と比べてみてください。

JZ302
質問者

お礼

ご回答ありがとうございました。 よくわかりました。

その他の回答 (2)

  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.2

(1)曲線の下の面積を分割点と隣の分割点とで構成する台形の面積に置き換えているわけです。従って、f(x)=1-x^2(0≦x≦1)の場合の正しい値よりは必ず小さめに出ます。分割を細かくすれば正解に近づきますが正解に達することはありません。 (2)f(x)=|1/4-x^2|はx=±1/2でx軸と接し、これ以外の点ではすべて正で、y軸に関して対称です。従って0≦x≦1/2と1/2≦x≦1に分けて計算し、2倍すればよいでしょう。シンプソン公式は曲線一般を2次曲線に置き換えて計算することと等価です。従って、この場合シンプソン公式による数値積分は正解を与えます。

JZ302
質問者

お礼

ご回答ありがとうございます。 (1)近似値は常に真の積分値よりも小さいということですか。 (2)何等分すればよいのでしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

いろいろ考えられそうだが, 例えば (1) 分点を無限個設定すれば正確な値が計算できる (2) 偶関数 でいい?

JZ302
質問者

お礼

ご回答ありがとうございます。 無限個の計算はどうやるんですか。 偶関数ってどこからでてくるんですか。

関連するQ&A

  • 台形公式とシンプソン公式

    次の積分を台形公式、シンプソン公式を用いて計算せよ。 ただし、刻みをh=2^-nとし、nと積分値の関係も求めよ。 ∫2~1 1/xdx 刻みの書き方がよくわかりません。それ以外は何とかできそうです。 どなたか教えていただければ幸いです。 因みに、n=1~6だそうです。

  • 台形公式によるf(x)の近似値

    区間[a,b]における連続関数f(x)の低積分S=∫[a→b]f(x)dxの値を求めたい。 [a,b]を幅(b-a)/nの小区間にn当分し、その分点をa=a0<a1<a2<・・・<an-1<an=bとする。 各小区間上に作られる台形の面積の和   Sn=nΣk=1 {f(a(k-1)+f(ak)}/2・(b-a)/n をSの近似値とする。この近似法を台形公式という。 区間[0,π/2]を3等分して、台形公式による∫[0→π/2]sinxdxの近似値S3を求めなさい。 nΣk=1 {f(a(k-1)+f(ak)}/2の部分の計算の仕方がわかりません。 Sn=nΣk=1 {sin(k-1)+sin(k)}/2・(b-a)/n このような形で計算してよいのでしょうか?? 初歩的な質問ですがよろしくお願いします。 

  • ニュートン・コーツの公式について。

    T(0,1)=(1/2)(f(0)+f(1)) T(0,2)=(1/4)(f(0)+2f(1/2)+f(1)) T(0,4)=(1/8)(f(0)+2f(1/4)+2f(1/2)+2f(3/4)+f(1)) で、f(x)の区間[0,1]の連続関数で∫f(x)dxの台形公式による近似を表した時に、ニュートン・コーツの公式で表すと、自分の解答では (1/45)(64T(0,4)-20T(0,2)+T(0,1)) と出たんですが正しいでしょうか?間違いなら正しい解答を教えてください。お願いします。

  • シンプソン法の誤差評価

    (例)台形公式の誤差評価 区間[x(i-1) , x(i)]を考える 真の面積は、ΔS(i-1)=∫(x(i-1) →x(i) )f(x)dx=F(x(i))-F(x(i-1)), 近似面積は、h/2(f(x(i-1)+f(x(i))である。 ところでF(x(i))=F(x(i-1)+h)=F(x(i-1))+f(x(i-1))h+(1/2!)f ' (x(i-1))h^2+,,,,,,であるから 誤差E(i-1)=真の面積-近似面積=ΔS(i-1)-f(x(i-1))h=(-1/12)f '' (x(i-1)h^3+,,,,, 全区間の誤差 E=Σ(i=1,n)E(i-1)=-n((h^3/12)Σ(i=1,n)f ' (x(i-1))+,,,,)=( (x(n)-x(0))/12 )h^2Σ(i=1,n)f ''(x(i-1)+,,,,,, と同様にしてシンプソンの公式の誤差評価も示したいのですが、解答、解法お願いします

  • シンプソンの公式について 積分

    シンプソンの公式について誰か使い方を教えていただけないでしょうか? 仮に ∫[14→2] (x/(x-1)dx という問題があった場合、6parabolasとあった場合、どのように求めていけば いいのでしょうか?

  • シンプソン

    弧の長さを求める問題なのですが、 y=25cos(πx/50) を微分します。 そうすると y'=-25sin(πx/50)(π/50) になりますよね?(ここまではいいですか?) これを公式に当てはめて ∫√1+(-25sin(π^2x/2500))^2 dx (範囲は-25から25です) をシンプソンの法則(n=10)で計算しようとしたのですが、π^2のところでつまってしまいうまくできません。 教えてください。

  • 積分

    ∫(0→1) x{ (e^x)^2 } dx 1,この積分式を求めたいです 2,1の定積分をマクローリン展開(5項まで展開)を利用して近似計算したいです。 3.,積分区間を5等分割(h=1/5)し、1を右端型区分求積法、台形公式、シンプソン法で、それぞれ数値積分したいです。 解法、解答、お願いします。

  • エクセル シンプソン法について

    エクセルのある問題を解いていてわからない問題があったので回答お願いします 関数f(x)=ax^2+bx+cをシンプソン法によっ計算した場合、刻みの幅に関係なく正確な値が得られる。なぜか。

  • 数値解析の問題

    質問させていただきます 次の積分の数値積分を考える I=∫[B→A] f(x)dx [A.B}をn分割して、xの分点をとる、即ち xi=A+ih i=0,1,・・・n h=(B-A)/n n=6の場合、台形公式とシンプソンの1/3公式より Iの近似値を求めよ 但し、xi, fi=f(xi), hを用いてあらわせ 台形公式 I=h(f0+f2n)+2h{(f2+f4+・・・・f(2n-2)} シンプソンの公式 I=h/3{f0+f2n+2(f2+f4+・・・・・+f(2n-2)+4(f1+f3++・・・+f(2n-1)} 公式そのまま書いてみたのですが、あってるかどうか分かりません・・・ xiとかも使ってないし・・・ 詳しいかた回答お願いします

  • シンプソン法の出力結果について

    シンプソン法の区間分割数nを10~100まで10ずつ増やして計算値と計算誤差を求めるプログラムを書きに作成したのですが、出力結果に-7.341865999405491E-5などとあります。この「E-数字」とはJavaではどういうこと示しているのですか? また、計算誤差の求め方は下記のプログラムでいいのですか? public class Simpson { static double f(double x) { // ここに任意の被積分関数を記述 double y = Math.exp(- x * x / 2) / Math.sqrt(2.0 * Math.PI); return y; } public static void main(String[] args) { double a = - 1.0, b = 1.0; // 積分範囲 int n = 100; // 区間分割数 for(n=10; n <=100; n+=10){ double h = (b - a) / (double)n; // 分割幅 double s, s1 = 0.0, s2 = 0.0; for (int i = 1; i <= n / 2; i++) { s1 += f(a + (2 * i - 1) * h); } for (int i = 1; i <= n / 2 - 1; i++) { s2 += f(a + 2 * i * h); } s = h / 3.0 * (f(a) + 4.0 * s1 + 2.0 * s2 + f(b)); double suti = (s-0.68269)/0.68269*100;  //計算誤差=(計算値ー真値)/真                                         値×100 System.out.println("区間分割数 =" + n); System.out.println("シンプソン法による計算値 =" + s); System.out.println("シンプソン法による計算誤差 ="+suti+"\n"); } } }