c fall with friction eq of motion mdv/dt= -mg +kv**2
real k,m
k=8.e-4
m=0.5
g=9.8
vscale=sqrt((m*g)/k)
tscale=vscale/g
nstep=2000
dt=2.*tscale/float(nstep)
c selects 40 values to be printed
kprint=int(float(nstep)/40.)
kount=kprint
c initial conditions
x0=0.
v0=0.
x1=v0*dt+x0
v1=dt*(-g+(k/m)*v0**2)+v0
t=0.
write(6,100) t, x0,v0
v0=v1
do 10 i=2,nstep
t=dt*float(i)
v1=dt*(-g+(k/m)*v0**2)+v0
x2=2.*x1-x0+dt**2*(-g)+(k/m)*(x1-x0)**2
if(i.eq.kount)then
kount=kount+kprint
write(6,100)t,x2,v1
endif
x0=x1
x1=x2
v0=v1
10 continue
100 format(2x,e10.3,4x,e10.3,4x,e10.3)
stop
end
RUN
0.000E+00 0.000E+00 0.000E+00
0.399E+00 -0.765E+00 -0.391E+01
0.799E+00 -0.309E+01 -0.780E+01
0.120E+01 -0.696E+01 -0.117E+02
0.160E+01 -0.124E+02 -0.154E+02
0.200E+01 -0.193E+02 -0.192E+02
0.240E+01 -0.276E+02 -0.228E+02
0.280E+01 -0.374E+02 -0.263E+02
0.319E+01 -0.486E+02 -0.297E+02
0.359E+01 -0.611E+02 -0.330E+02
0.399E+01 -0.749E+02 -0.362E+02
0.439E+01 -0.900E+02 -0.392E+02
0.479E+01 -0.106E+03 -0.420E+02
0.519E+01 -0.124E+03 -0.448E+02
0.559E+01 -0.142E+03 -0.473E+02
0.599E+01 -0.161E+03 -0.497E+02
0.639E+01 -0.182E+03 -0.520E+02
0.679E+01 -0.203E+03 -0.541E+02
0.719E+01 -0.225E+03 -0.561E+02
0.759E+01 -0.247E+03 -0.579E+02
0.799E+01 -0.271E+03 -0.596E+02
0.839E+01 -0.295E+03 -0.612E+02
0.878E+01 -0.320E+03 -0.627E+02
0.918E+01 -0.345E+03 -0.640E+02
0.958E+01 -0.371E+03 -0.653E+02
0.998E+01 -0.397E+03 -0.664E+02
0.104E+02 -0.424E+03 -0.675E+02
0.108E+02 -0.451E+03 -0.684E+02
0.112E+02 -0.479E+03 -0.693E+02
0.116E+02 -0.506E+03 -0.701E+02
0.120E+02 -0.534E+03 -0.709E+02
0.124E+02 -0.563E+03 -0.715E+02
0.128E+02 -0.592E+03 -0.721E+02
0.132E+02 -0.621E+03 -0.727E+02
0.136E+02 -0.650E+03 -0.732E+02
0.140E+02 -0.679E+03 -0.737E+02
0.144E+02 -0.708E+03 -0.741E+02
0.148E+02 -0.738E+03 -0.745E+02
0.152E+02 -0.768E+03 -0.748E+02
0.156E+02 -0.798E+03 -0.752E+02
0.160E+02 -0.828E+03 -0.755E+02