const FMT=" %7.3f"; fcn ivp_euler(f,y,step,end_t){ print(" Step %2d: ".fmt(step)); foreach t in ([0..end_t,step]){ if (t % 10 == 0) print(FMT.fmt(y)); y += f(t,y) * step; } println(); } fcn analytic{ print(" Time: "); foreach t in ([0..100,10]){ print(" %7g".fmt(t)) } print("\nAnalytic: "); foreach t in ([0..100,10]){ print(FMT.fmt(20.0 + 80.0 * (-0.07 * t).exp())) } println(); } fcn cooling(_,temp){ return(-0.07 * (temp - 20)) } analytic(); ivp_euler(cooling, 100.0, 2, 100); ivp_euler(cooling, 100.0, 5, 100); ivp_euler(cooling, 100.0, 10, 100);