* 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
実行すると、分割数
を尋ねてきますので、色々な値を入力して試してみ
て下さい。各時刻
における
の値(
) を画面に
出力します。
確認用にいくつかの
の値に対する場合の、
の値を書いてお
きます。
の場合
,
の場合
,
の場合
,
の場合
,
.
分割数
が大きくなるほど、真の値
に近付いていくはずです。