real y(4),work(27) integer iwork(5) common alpha,q,s external f open (10,file='ruth.in') open (20, file='ruth.out') neqn=4 read(10,*)dt,nt,relerr,abserr,s,q,alpha,y talg=0 tlopp=0 iflag=1 call rkf45(f,neqn,y,talg,tlopp,relerr,abserr,iflag,work,iwork) do i =1,nt tlopp=talg+dt iflag=2 call rkf45(f,neqn,y,talg,tlopp,relerr,abserr,iflag,work,iwork) talg=tlopp write(20,100)y(1:2) 100 format(6f15.5) enddo stop end subroutine f(t,y,dy) real y(4),dy(4) common alpha,q,s dy(1)=y(3) dy(2)=y(4) r=sqrt((y(1)-s)**2+y(2)**2) dy(3)=q*alpha*(y(1)-s)/r**3 dy(4)=q*alpha*y(2)/r**3 return end