program class4 double precision x,t,dt,f,exact,k1,k2,k3,k4 open(unit=13,file="data.d") dt = 0.4 x = 0 do 10 t = 0, 12, dt exact = 1.0/2.0*exp(-t)+1.0/2.0*sin(t)-1.0/2.0*cos(t) write(13,*) t,x,exact k1 = f(x,t)*dt k2 = f(x+0.5*k1,t+0.5*dt)*dt k3 = f(x+0.5*k2,t+0.5*dt)*dt k4 = f(x+k3,t+dt)*dt x = x + (k1+2*k2+2*k3+k4)/6.0 10 continue exact = 1.0/2.0*exp(-t)+1.0/2.0*sin(t)-1.0/2.0*cos(t) write(13,*) t,x,exact stop end double precision function f(x,t) double precision x,t f = -x + sin(t) return end