* reidai5-1.f -- 微分方程式の初期値問題を Euler 法で解く program rei51 * 開始時刻と終了時刻 real a,b parameter (a=0.0,b=1.0) * 変数と関数の宣言 integer N,j real t,x,h,x0,f external f * 初期値 x0 = 1.0 * 区間の分割数 N を入力してもらう write(*,*) ' N=' read(*,*) N * 小区間の幅 h=(b-a)/N * 開始時刻と初期値のセット t=a x=x0 write(*,*) t,x * Euler 法による計算 do j=0,N-1 x=x+h*f(t,x) t=t+h write(*,*) t,x end do end ********************************************************************** * 微分方程式 x'=f(t,x) の右辺の関数 f の定義 real function f(t,x) real t,x f=x end
このプログラムをコンパイルしてC.8 実行すると、分割数 を尋ねてきますので、色々な値を入力して試してみ て下さい。各時刻 における の値( ) を画面に 出力します。
確認用にいくつかの の値に対する場合の、 の値を書いてお きます。 の場合 , の場合 , の場合 , の場合 , .
分割数 が大きくなるほど、真の値 に近付いていくはずです。