Ik ken zo direct geen programma's behalve dan misschien
wolfram alpha.
Hier heb je een MATLAB scriptje dat vergelijkingen van de vorm y'(t) = f(t,y) kan oplossen via die Runge-*** die ik vermeldde. Misschien werkt het ook voor Octave (gratis).
Code: Selecteer alles
function [y,t] = RK4(f, y0, t0, t_end, h)
t = linspace(t0,t_end,ceil( (t_end-t0)/ h ));
y = zeros(size(t));
y(1) = y0;
for i = 1:length(t)-1
k1 = f(t(i) , y(i));
k2 = f(t(i) + h/2, y(i) + h*k1/2);
k3 = f(t(i) + h/2, y(i) + h*k2/2);
k4 = f(t(i) + h , y(i) + h*k3);
y(i+1) = y(i) + h*(k1 + 2*k2 + 2*k3 + k4)/6;
end
end
Je moet dan nog juist de functie f ergens definiëren. Ik heb het uitgetest met een eenvoudige rechte:
Als je de functie f(t,y) gedefinieerd hebt, dan kan je RK4 aanroepen en het resultaat plotten via:
Code: Selecteer alles
[y,t] = RK4(@f, 0, 0, 10, 0.1);
plot(t,y); xlabel('t'); ylabel('y');
In mijn test krijg ik dan mooi een parabool.