RUNGE-KUTTA
!Program name: RK
!Runge-Kutta
method for differential equation dy/dx=-xy
!The
exact solution: y=exp(-x^2/2)
!Interval
X=0 to X=3 where y(0)=1
!Y(n+1) <=> X+h
program Runge_Kutta
real ::
x, y, h, exact, error
Real ::
k1, k2, k3, k4
integer
:: i
f(x,y)=-x*y
!fourth
order Runge-Kutta
h=0.05
nstep=3./h !60 steps
y=1. !y(0)=1
do i=0,nstep
x=h*i
k1=h*f(x,y)
k2=h*f(x+0.5*h,y+0.5*k1)
k3=h*f(x+0.5*h,y+0.5*k2)
k4=h*f(x+h,y+k3)
y=y+(1/6.*(k1+2.*k2+2.*k3+k4))
exact=exp((-(x+h)**2)/2)
error=exact-y
print *, i, x+h, y,exact, error
!for
h=0.05 y(1)=0.60653 error=-0.00000
!for
h=0.05 y(3)=0.00111 error=-7.63E-08
end do
Print *,
!Second
order Runge Kutta
h=0.05
nstep=3./h
!60 steps
y=1. !y(0)=1
do
i=0,nstep
x=i*h
!It guarantees interval from 0 to 3
k=h*f(x,y)
y=y+h*f(x+0.5*h,y+0.5*k)
exact=exp((-(x+h)**2)/2)
error=exact-y
print *, i, x+h, y,exact, error
!for
h=0.05 y(1)=0.60137 error=--0.00515
!for
h=0.05 y(3)=0.00871 error=-0.00240
end do
stop
Comentários
Postar um comentário