情報処理概論 今日の授業内容(第9回) 情報処理概論(第9回) 数値計算 定積分の計算 台形近似法 シンプソン法 SSL Ⅱ(科学用サブルーチンライブラリ)の利用 情報基盤センター 井上 仁 台形近似法(1) 定積分 y = f (x) h = (b-a)/m 区間[xi,xi+1]の積分siを 台形で近似 f(x) oa ∫ b a b Δx n f ( x)dx = lim ∑ n →∞ k =1 b−a = f ( x )Δx Δx n k ∫ a b x0 m等分 xi xm xk= a + kΔx f (x) の原始関数を F (x) b a f(xi+2) f(xi+1) f(xi) si si+1 (i = 0,…,m) f ( x)dx = [ F ( x)] a = F (b) − F (a) b 台形近似法(2) Xi = a + I*h xi xi+1 xi+2 台形近似法(3) si = (h/2){f(xi)+f(xi+1)} S = s0 + s1 + ・・・ + sm-1 = (h/2)[{f(x0)+f(x1)}+ (h/2){f(x1)+f(x2)}+ ・・・ (h/2){f(xm-1)+f(xm)}] h = (b-a)/m s1 = 0.0D0 s0 s1 sm-1 = (h/2)[f(a)+f(b)+2{f(x1)+f(x2)+・・・+f(xm-1)}] DO i =1, m-1 s1 = s1 + f(a+i*h) END DO s = h*(f(a)+f(b)+2*s1)/2 DO構文を用いて計算 第9回 1 情報処理概論 シンプソン法(1) 台形近似法(4) h = (b-a)/2m PROGRAM trapezoid ・・・・・・・・・・・・ END PROGRAM trapezoid FUNCTION f(x) REAL :: f,x f = 4/(1+x**2) END FUNCTION f 区間[x2i,x2i+2]の積分siを (x2i,f(x2i)),(x2i+1,f(x2i+1)), (x2i+2,f(x2i+2))を通る 二次式の積分で近似 f(x) a a+ih b f(x2i+1) 2m等分 x0 xi x2m f(x2i) (i = 0,…,2m) シンプソン法(2) x2i si = (h/3)[f(x2i) + 4f(x2i+1) + f(x2i+2)] si = f(x2i+2) (h/3)[f(x2i) + 4f(x2i+1) + f(x2i+2)] si x2i+1 x2i+2 シンプソン法(3) f(x2i+1) f(x2i) x2i f(x2i+2) x2i+1 x2i+2 S = s0 + s1 + ・・・ + sm-1 = (h/3)[f(x0)+4f(x1)+f(x2)] +(h/3)[f(x2)+4f(x3)+f(x4)] ・・・・・・ +(h/3)[f(x2m-2)+4f(x2m-1)+f(x2m)] S = s0 + s1 + ・・・ + sm-1 f(x) s0a x0 si sm-1 xi b x2m (i = 0,…,2m) シンプソン法(4) h = (b-a)/(2*m) s1 = f(a+h) s2 = 0.0D0 f(a) f(b) = (h/3)[f(x0)+f(x2m) +4{f(x1)+f(x3)+f(x5)+・・・+f(x2m-1)} S1 +2{ f(x2)+f(x4)+・・・+f(x2m-2)}] S2 SSLⅡの利用(simpson2.f90) 科学用サブルーチンライブラリ CALL SIMP2(a, b, f, eps, s, icon) DO i =1, m-1 s1 = s1 + f(a+(2*i+1)*h) s2 = s2 + f(a+2*i*h) END DO s = h*(f(a)+f(b)+4*s1+2*s2)/3 第9回 関数f(x)の区間[a,b]での積分値をシンプソン法で 求める epsは(絶対)誤差で、s0を真の積分値としたとき、 |s - s0 |≦ eps を満たす s を求める 2 情報処理概論 コンパイルの流れ ライブラリのリンク % frt prog.f90 prog.f90 % frt prog.f90 -lfssl2 (ライブラリfssl2をリンクする) Fortran90ソースファイル prog.f90 コンパイル(翻訳) prog.o オブジェクト ファイル ライブラリ prog.o 標準ライブラリ fssl2 リンク(結合編集) a.out 実行可能ファイル a.out 演習9 次回の予定(第10回) 台形近似法とシンプソン法、SSL Ⅱを用いた方 法で、計算結果がどうなるか確認しなさい。 f(x)=4/(1+x**2)とし、積分区間は[0,1]で求 めなさい。 1 4 ∫ 1+ x 0 第9回 数値計算 方程式の解 ニュートン法 丸め誤差と桁落ち dx = 4[arctan( x)]0 1 2 3
© Copyright 2024 ExpyDoc