program prog2 implicit none double precision xex,xe,x2rk,x4rk,t,dt,tfinish,k1,k2,k3,k4,f dt = 0.125 xe = 0 x2rk = 0 x4rk = 0 tfinish = 10 open(13,file="data.d") do 10 t=0,tfinish,dt xex = 1 + (-exp(-t) - cos(t) + sin(t))/2.0 write(13,11) t,xex,xe,x2rk,x4rk,xe-xex,x2rk-xex,x4rk-xex xe = xe + f(xe,t)*dt x2rk = x2rk + (f(x2rk,t) + c f(x2rk + f(x2rk,t)*dt,t+dt))*dt/2.0 k1 = f(x4rk,t)*dt k2 = f(x4rk + 0.5*k1,t+0.5*dt)*dt k3 = f(x4rk + 0.5*k2,t+0.5*dt)*dt k4 = f(x4rk + k3 ,t+dt)*dt x4rk = x4rk + (k1+2.0*k2+2*k3+k4)/6.0 10 continue 11 format(8(f12.8)) close(13) stop end double precision function f(x,t) double precision x,t f = sin(t) + 1 - x return end