Euler method: Difference between revisions

Added Algol W
(Added Swift solution)
(Added Algol W)
Line 203:
80.000: 20.005
90.000: 20.002
done
</pre>
 
=={{header|ALGOL W}}==
{{Trans|ALGOL 68}}
Which is
{{Trans|D}}
<lang algolw>begin % Euler's method %
% Approximates y(t) in y'(t)=f(t,y) with y(a)=y0 and t=a..b and the step size h. %
real procedure euler ( real procedure f; real value y0, a, b, h ) ;
begin
real y, t;
y := y0;
t := a;
while t < b do begin
write( r_format := "A", r_w := 8, r_d := 4, s_w := 0, t, ": ", y );
y := y + ( h * f(t, y) );
t := t + h
end while_t_lt_b ;
write( "done" );
y
end euler ;
 
% Example: Newton's cooling law %
real procedure newtonCoolingLaw ( real value time, t ) ; -0.07 * (t - 20);
 
euler( newtonCoolingLaw, 100, 0, 100, 10 )
end.</lang>
{{out}}
<pre>
0.0000: 100.0000
10.0000: 44.0000
20.0000: 27.2000
30.0000: 22.1600
40.0000: 20.6480
50.0000: 20.1944
60.0000: 20.0583
70.0000: 20.0175
80.0000: 20.0052
90.0000: 20.0015
done
</pre>
3,032

edits