Ich würde mich freuen, wenn jemand mit folgendem Problem helfen kann. Ich habe folgende ODE:Absoluter Fehler von ODE45 und Runge-Kutta-Methoden im Vergleich zur analytischen Lösung
dr/dt = 4*exp(0.8*t) - 0.5*r ,r(0)=2, t[0,1] (1)
I (1) auf zwei verschiedene Arten gelöst haben. Mittels der Runge-Kutta Methode (4. Ordnung) und mittels ode45
in Matlab. Ich verglich haben die beiden Ergebnisse mit der analytischen Lösung, die gegeben ist durch:
r(t) = 4/1.3 (exp(0.8*t) - exp(-0.5*t)) + 2*exp(-0.5*t)
Als ich den absoluten Fehler jedes Verfahren in Bezug auf die exakte Lösung plotten, erhalte ich die folgende:
Für RK -Methode, mein Code:
h=1/50;
x = 0:h:1;
y = zeros(1,length(x));
y(1) = 2;
F_xy = @(t,r) 4.*exp(0.8*t) - 0.5*r;
for i=1:(length(x)-1)
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+0.5*h,y(i)+0.5*h*k_1);
k_3 = F_xy((x(i)+0.5*h),(y(i)+0.5*h*k_2));
k_4 = F_xy((x(i)+h),(y(i)+k_3*h));
y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h; % main equation
end
Und für ode45
:
tspan = 0:1/50:1;
x0 = 2;
f = @(t,r) 4.*exp(0.8*t) - 0.5*r;
[tid, y_ode45] = ode45(f,tspan,x0);
Meine Frage ist, warum habe ich Schwingungen, wenn ich ode45
verwenden? (Ich beziehe mich auf den absoluten Fehler). Beide Lösungen sind genau (1e-9
), aber was passiert mit ode45
in diesem Fall?
Wenn ich den absoluten Fehler für die RK-Methode berechne, warum sieht es schöner aus?
Hallo @horchler. Es ist schade, dass ich Ihrer Antwort nur eine Punktzahl geben kann. In diesem Moment bin ich mir nicht sicher, was ich mehr empfinde: Ihre Programmierfähigkeiten oder Ihr mathematisches Verständnis. –
Ich wusste nicht, dass eigentlich die Schritte von ** ode45 ** wo die Punkte von unten sind. Wenn dies der Fall ist, stimme ich zu 100% mit Ihnen überein, die ** Ode ** ist genauer. Könnten Sie einen Tic Toc zu beiden Methoden machen? Ich habe erlebt, dass die ** RK-Methode ** 0,018 Sekunden verwendet, während ** Ode45 ** 0,5 Sekunden verwendet. Kann ich daraus schließen, dass ** ode45 ** genauer, aber langsamer ist? Und ich glaubte, dass der ** adaptive Step-Size-Controller ** von ** ode45 ** sehr gut (?) War –
Ich habe noch nicht versucht, das Integrationsintervall zu vergrößern, aber ich bin wirklich gespannt auf die Ausgabe. Gleichzeitig intrigiert es mich Ihre Kommentare darüber, wie gute Ergebnisse ich von ** Ode45 ** und ** Odeset ** erwarten kann. Ich werde das als Sohn versuchen, wie ich kann! Danke für das Teilen! –