Presentation is loading. Please wait.

Presentation is loading. Please wait.

数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)

Similar presentations


Presentation on theme: "数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)"— Presentation transcript:

1 数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回) 常微分方程式(1回) 偏微分方程式(2回) 偏微分方程式(2回) 数値計算の応用(3回) 数値計算の応用(3回) 期末試験(1回) 期末試験(1回) 6月12日(水)5限 今週 来週

2 数値積分 解析的に積分が困難な関数を数値的に積分する

3 数値積分 台形公式 台形公式 関数を直線で近似し、台形の集合体とす る。 関数を直線で近似し、台形の集合体とす る。 x y x0x0 x1x1 x2x2 x3x3 y0y0 y1y1 y2y2 y3y3

4 台形 I = 0.5×h {(y 0 +y 1 )+(y 1 +y 2 )+.. + (y n-1 +y n )} I = 0.5×h {(y 0 +y 1 )+(y 1 +y 2 )+.. + (y n-1 +y n )} = 0.5×h(y 0 +2y 1 + 2y 2 +.. + y n ) = 0.5×h(y 0 +2y 1 + 2y 2 +.. + y n ) x y x0x0 x1x1 x2x2 x3x3 y0y0 y1y1 y2y2 y3y3 h

5 台形公式計算例 x y 012 25 50 75 100 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6 3 I = 0.5×1×(0+2 ・ 3+2 ・ 20+87)=66.5 I = 0.5×1×(0+2 ・ 3+2 ・ 20+87)=66.5

6 Excelで確認 ABC 1XY 20.0=A2^4+2*A2=B2 30.5=2*B3 41.0 51.5 62.0 72.5 83.0=B8 =(0.5/2)*sum(C2:C8) 区間の幅 数値の合計 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6 N = 6

7 Excelで確認 ABC 1XY 20.0=A2^4+2*A2=B2 30.1=2*B3 40.2 302.8 312.9 323.0=B8 =(0.1/2)*sum(C2:C32) 区間の幅 数値の合計 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6 N = 30

8 台形公式による積分 #include #defineN30 doublefunc_y( double ); int main( ) { doubley[N+1]; doublexa = 0.0, xb = 3.0; doublez = 0.0, h, x, s; inti;

9 h = (xb - xa)/(double)N; for(i=0;i<=N;i++){ x = xa + h*(double)i; y[i] = func_y(x); } for(i=1;i<N;i++)z += 2.0*y[i]; s = (h/2.0)*(y[0]+z+y[N]); printf("ANS = %8.4lf\n",s); return 0; } doublefunc_y(double x){ returnpow(x, 4.0) + 2.0*x; } I =0.5×h(y 0 +2y 1 + 2y 2 +.. + y n ) I =0.5×h(y 0 +2y 1 + 2y 2 +.. + y n ) y = x 4 + 2x y = x 4 + 2x

10 数値積分での誤差縮小 分割数を多くする. 分割数を多くする. 曲線で近似 → シンプソン 曲線で近似 → シンプソン

11 厳密解の推定 nanswer 462.6309 858.8636 1657.9163 3257.6791 6457.6198 ∞57.6

12 台形公式(第4章1)

13 台形公式(第4章1) 1 64 1 32 1 16 1818 1414

14 曲線による近似 シンプソン公式 シンプソン公式 2区間毎を二次関数で近似し、積分する。 x y x0x0 x1x1 x2x2 x3x3 y0y0 y1y1 y3y3 y4y4 y2y2 x4x4 2次関数

15 2次関数の積分 x y x0x0 x1x1 x2x2 y0y0 h y1y1 y2y2 h I = h(y 0 + 4y 1 + y 2 ) I = h(y 0 + 4y 1 + y 2 )13

16 2次関数の積分 x012 1 4 y y = x 2 I = x 2 dx =[ ] = I = x 2 dx =[ ] = 2 0 x3x333x3x3333 2 0 83 解析解 I = h(y 0 + 4y 1 + y 2 ) I = h(y 0 + 4y 1 + y 2 ) = 1 × (0 + 4 × 1 + 4)= = 1 × (0 + 4 × 1 + 4)= 13 13 83 数値解

17 シンプソン公式 x y x0x0 x1x1 x2x2 x3x3 y0y0 y1y1 y3y3 y4y4 x4x4 I = h{(y 0 + 4y 1 + y 2 )+ I = h{(y 0 + 4y 1 + y 2 )+ (y 2 + 4y 3 + y 4 ) + ……} (y 2 + 4y 3 + y 4 ) + ……}13 y2y2

18 シンプソン公式 x y x0x0 x1x1 x2x2 x3x3 y0y0 y1y1 y3y3 y4y4 x4x4 I = h{y 0 + 4(y 1 + y 3 +.. ) I = h{y 0 + 4(y 1 + y 3 +.. ) 2(y 2 + y 4 +.. ) + y n } 2(y 2 + y 4 +.. ) + y n }13 奇数番目を4 倍 偶数番目を2 倍 偶数番目 奇数番目 y2y2

19 Excelで確認 ABC 1XY 20.0=A2^4+2*A2=B2 30.5=?*B3 41.0=?*B4 51.5=?*B5 62.0=?*B6 72.5=?*B7 83.0=B8 =(?/?)*sum(C2:C8) 区間の幅数値の合計 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6

20 Excelで確認 ABC 1XY 20.0=A2^4+2*A2=B2 30.5=4*B3 41.0=2*B4 51.5=4*B5 62.0=2*B6 72.5=4*B7 83.0=B8 =(0.5/3)*sum(C2:C8) 初め 数値の合計 奇数番目 偶数番目 最後 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6

21 シンプソン計算例 x y 012 8 16 24 32 I = x 4 +2x dx = I = x 4 +2x dx = 3 0 57.6 3

22 nclude #include #defineN30 doublefunc_y( double ); int main( ){ doubley[N+1]; doublexa = 0.0, xb = 3.0; doublez1 = 0.0, z2 = 0.0, h, x, s; inti; h = (xb - xa)/(double)N;

23 for(i=0;i<=N;i++){ x = xa + h*(double)i; y[i] = func_y(x); } for(i=1;i<=N-1;i+=2)z1 += 4.0*y[i]; for(i=2;i<=N-2;i+=2)z2 += 2.0*y[i]; s = (h/3.0)*(y[0]+z1+z2+y[N]); printf("ANS = %8.4lf\n",s); return 0; } doublefunc_y(double x) { returnpow(x, 4.0) + 2.0*x; } 奇数番目を4 倍 偶数番目を2 倍 最初と最後は1 倍

24 一次(台形)と二次(シンプソン) の精度 n台形 シンプソ ン 462.630957.7266 858.863657.6079 1657.916357.6005 3257.679157.600 6457.619857.600 ∞57.6

25 一次(台形)と二次(シンプソン) の精度 1 64 1 32 1 16 1818 1414


Download ppt "数値解析シラバス C言語環境と数値解析の概要(1 回) C言語環境と数値解析の概要(1 回) 方程式の根(1回) 方程式の根(1回) 連立一次方程式(2回) 連立一次方程式(2回) 補間と近似(2回) 補間と近似(2回) 数値積分(1回) 数値積分(1回) 中間試験(1回) 中間試験(1回) 常微分方程式(1回)"

Similar presentations


Ads by Google