18 lines
546 B
Ada
18 lines
546 B
Ada
package body Euler is
|
|
function Solve
|
|
( F : not null access function (T, Y : Number) return Number;
|
|
Y0 : Number;
|
|
T0, T1 : Number;
|
|
N : Positive
|
|
) return Waveform is
|
|
dT : constant Number := (T1 - T0) / Number (N);
|
|
begin
|
|
return Y : Waveform (0..N) do
|
|
Y (0) := Y0;
|
|
for I in 1..Y'Last loop
|
|
Y (I) := Y (I - 1) + dT * F (T0 + dT * Number (I - 1), Y (I - 1));
|
|
end loop;
|
|
end return;
|
|
end Solve;
|
|
end Euler;
|