読者です 読者をやめる 読者になる 読者になる

意識高い系の話

fortranによるオイラー法の数値計算で躓いたので誰か教えて下さい

program
integer i,N,v0
real y(15),t(15)
N=14
v0=20
g=9.8d0
y(0)=0
do i=0,N
t(i)=i
y(i+1)=y(i)+(v0-g*t(i))
write(*,*) t(i),y(i)
end do
end program 

力学で最初によくする投げ上げ運動の微分方程式を解いてみました。

dy/dt=v0-gtから解析的に解くと

y(0)=0としてy(t)=v0*t-1/2*g*t^2になりますが

オイラー法で解くと

まずy(0)=0として

yのn個目が一つ前のn-1個目のyとdy/dtから求まると考え

y(n)=y(n-1)+dy/dt*h ここでhは幅(計算では1とした)

よってここからy(n)=y(n-1)+(v0-g*t(n))として

y(0)=0から順番にy(n)まで求まるはず。