シンプソンの法則:公式とその仕組み

シンプソンの法則は数値積分の方法です。言い換えれば、それは定積分の数値近似です。

シンプソンの法則は次のとおりです。

初期化、

  • f(x)被積分関数と呼ばれます
  • a =統合の下限
  • b =統合の上限

シンプソンの1/3ルール

上の図に示されているように、被積分関数f(x)は2次多項式で近似されます。二次補間はP(x)です。

近似は次のとおりです。

(b-a)/2として置き換えるとh

ご覧1/3のとおり、上記の式には要因があります。そのため、シンプソンの1/3ルールと呼ばれています。

関数が非常に振動的であるか、特定の点で導関数がない場合、上記のルールは正確な結果を生成できない可能性があります。

これを処理する一般的な方法は、複合シンプソンの法則アプローチを使用することです。これを行うには、[a,b]小さなサブインターバルに分割してから、シンプソンの法則を各サブインターバルに適用します。次に、各計算の結果を合計して、積分全体の近似値を生成します。

間隔[a,b]nサブ間隔に分割されn、偶数の場合、複合シンプソンの法則は次の式で計算されます。

ここで、x j = a + jh for j = 0,1、…、n-1、n with h =(ba)/ n ; 具体的には、xは0 =X N = B

C ++の例:

以下に示す積分の値を概算するには、n = 8です。

#include #include using namespace std; float f(float x) { return x*sin(x); //Define the function f(x) } float simpson(float a, float b, int n) { float h, x[n+1], sum = 0; int j; h = (b-a)/n; x[0] = a; for(j=1; j<=n; j++) { x[j] = a + h*j; } for(j=1; j<=n/2; j++) { sum += f(x[2*j - 2]) + 4*f(x[2*j - 1]) + f(x[2*j]); } return sum*h/3; } int main() { float a,b,n; a = 1; //Enter lower limit a b = 4; //Enter upper limit b n = 8; //Enter step-length n if (n%2 == 0) cout<

Simpson's 3/8 Rule

Simpson's 3/8 rule is similar to Simpson's 1/3 rule, the only difference being that, for the 3/8 rule, the interpolant is a cubic polynomial. Though the 3/8 rule uses one more function value, it is about twice as accurate as the 1/3 rule.

Simpson’s 3/8 rule states :

Original text


Replacing (b-a)/3 as h, we get,

Simpson’s 3/8 rule for n intervals (n should be a multiple of 3):

where xj = a+jh for j = 0,1,…,n-1,n with h=(b-a)/n; in particular, x0 = a and xn = b.