• 締切済み

不等間隔での数値積分

C言語を用いて,数値積分を行っています. シンプソン法を用いて等間隔のデータ列の積分は,理論式も一般の教科書に掲載されていて,プログラムも作製し,実行することができたのですが, 不等間隔のデータ列の場合の対処に困っています. 不等間隔の場合のシンプソン法の理論式は存在するというのはいくつかの教科書やWEBなどでも記述されているのですが,実際の式が掲載されている文献を見つけることができません. 不等間隔のシンプソン法の理論展開をご存知の方がいらっしゃいましたら,ご教授ねがいます.

みんなの回答

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.3

#1訂正 y(t)ではなくてy(x)です。 で、#2の手順で計算すると、 x0-x2間の∫y(x)dxは (h1+h2)(y0+y2)/2 + (h1+h2)^2(y1(h1+h2)-(y2h0+y0h1))/(6h1h2) のような形になるようです。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.2

#1補足 データを平行移動して、 x0=-h1,x1=0, x2=h2 などと置き換えて計算する方が楽かも知れません。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

積分区間内の3点を二次式で補間して、この二次式を積分すれば出そうに思います。 具体的には、区間x0-x2で(y0,x0),(y1,x1),(y2,x2)を通る二次関数は y(t)=(x-x1)(x-x2)/((x0-x1)(x0-x2)) y0 +(x-x0)(x-x2)/((x1-x0)(x1-x2)) y1 +(x-x0)(x-x1)/((x2-x0)(x2-x1)) y2 で表されるます。 y(t)の区間x0-x2での積分は上式から解析的に計算でき、(x0,x1,x2,y0,y1,y2)で表すことができます。 あとは、全積分区間に渡って、和をとってやれば、全区間の数値積分ができるかと。