なぜ数値積分? 1.原始関数を求めることが難しい, また は求めることが出来ない. 1 + 1 - x2 ∫log | x | dx = ? 2.そもそも原始関数が分かっていてもそ れを厳密に計算することが難しい. 1 + 1- x2 1 + 1- x2 ∫log | x | dx = x log | x | + Arcsinx どうやって数値積分? 1. 原始関数を求めることが難しい, または 求めることが出来ない. 2. そもそも原始関数が分かっていてもそれ を厳密に計算することが難しい. 1. 積分する範囲を区間に分割. 2. 被積分関数を区間ごとに簡単 に原始関数を求められる関数 (例えば多項式)で近似する. 1次多項式近似 ⇒ 台形公式 2次多項式近似 ⇒ シンプソン公式 ラグランジュ補間 ⇒ ニュートン・コーツ公式 台形公式 Y = f (x ) 関数 Y = f (x) を h := (b-a)/3 の幅の区間ごとに1 次式で近似し, それ ぞれの台形の面積で 代用する. x0 =a h x1 =a + h h x2 h =a + 2h x3 =b 1 ∫a f ( x ) dx ≈ 2 h (f (a ) + f ( x1 )) 1 1 + h (f ( x 1 ) + f ( x 2 )) + h (f ( x 2 ) + f (b )) 2 2 1 = h [f (a ) + f (b ) + 2 {f ( x 1 ) + f ( x 2 )}] 2 b 台形公式のアルゴリズム a , b, n T h ← (b -a ) / n T ← (f (a) + f (b))/2 for i = 1,…,n -1 T ← T + f (a +ih ) end T ← hT 1 ∫a f (x ) dx ≈ h [ 2 {f (a ) + f (b )} + {f (x1 ) + f (x 2 )}] b Y = f (x ) シンプソン公式 関数 Y = f (x) を積 分区間 [a,b] で2次 のラグランジュ補間 で近似し, 面積を計 算する. x0 =a h x1 =a + h h x2 =a + 2h ( x - x 1 )( x - x 2 ) ∫a f ( x ) dx ≈ f ( x 0 ) ∫a ( x 0 - x1 )( x 0 - x 2 ) dx b ( x - x 0 )( x - x 2 ) + f ( x1 ) ∫ dx a ( x - x )( x - x ) 1 0 1 2 b ( x - x 0 )( x - x 1 ) + f (x2 )∫ dx a ( x - x )( x - x ) 2 0 2 1 1 = h [f ( x 0 ) + 4f ( x 1 ) + f ( x 2 )] 3 b b (複合)シンプソン公式 関数 Y = f (x) を 2h := (b-a) /n の幅の区間毎に2次 のラグランジュ補間 で近似し, それぞれ の区間ごとにシンプ ソン公式を適用する. 1 x0 =a h Y = f (x ) x1 =a + h h x2 h x3 h x4 =a + 2h =a + 3h =b 1 { h [f ( x 2k ) + 4f ( x 2k +1 ) + f ( x 2k + 2 )]} ∫a f ( x ) dx ≈ k∑ =0 3 1 = h {[f ( x 0 ) + f ( x 4 )] 3 + 4[f ( x 1 ) + f ( x 3 )] + 2[f ( x 2 )]} b (複合)シンプソン公式のアルゴリズム a , b, n S h ← ( b -a ) / 2n S ← f (a) +f (b) for i = 1,…,n -1 S ← S + 4f (a + (2i-1)h ) + 2f (a + 2ih ) end S ← S + 4f (a + (2n-1)h ) S ← h S/3 1 ∫a f ( x ) dx ≈ 3 h [{f (a ) + f (b )} + 4 {f ( x 1 ) + f ( x 3 )} + 2f ( x 2 )] b
© Copyright 2024 ExpyDoc