program Ralston(input, output); {Integration der Gleichung y'(x)=-y(x) mittels des Runge-Kutta- Verfahren 2. Ordnung nach Ralston} var x0, y0: double; {Anfangswerte} xf: double; {Endwert} h: double; {Schrittweite} x, y: double; x1, y1: double; k1, k2: double; function fxy(x, y: double): double; begin fxy := -y end; {fxy} procedure init; begin writeln('Darstellung der Loesung einer expliziten Differentialgleichung'); writeln('mittels des Verfahren von Ralston am Beispiel y`(x)=-y(x)'); writeln; writeln('Geben Sie bitte die Anfangswerte ein'); readln(x0, y0); writeln('Geben Sie nun an, bis zu welchem x-Wert y(x) berechnet werden soll.'); readln(xf); writeln('Und in welcher Schrittweite sollen die x-Werte liegen?'); readln(h); while (xf - x0)*h < 0 do begin writeln('Von ', x0:1:3,' aus koennen Sie ', xf:1:3,' in Schritten von ', h:1:3,' nicht erreichen.'); writeln('Geben Sie noch einmal den Endwert und die Schrittweite ein.'); readln(xf, h) end; {while} x := x0; y := y0; writeln('x y') end; {init} procedure result; begin writeln( x:1:5,' ', y:1:5) end; {result} begin {Ralston} init; while x < xf do begin k1 := fxy(x,y); x1 := x + h*0.75; y1 := y + k1*h*0.75; k2 := fxy(x1,y1); y1 := y + k1*h*0.75; y := y + (k1/3.0 + 2.0*k2/3.0)*h; x := x + h; result end; {while} end. {Ralston}