Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab

Neue Frage »

Samson_ Auf diesen Beitrag antworten »
Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab
Meine Frage:
Hallo,

ich soll die Bewegungsgleichung eines Federpendels mithilfe des Runge-Kutta-Verfahrens 3. Ordnung lösen.

Die Bewegungsgleichung lautet wie folgt:

(x'(t), v'(t))=f(t,y(t))=(v, g*sin(wt)-c/m*x)

Zudem habe ich zur Hilfe die Grundform des Verfahrens aus meinem Skript:

k1=f(x, y)
k2=f(x+h/2, y+h/2*k1)
k3=f(x+h, y-h*k1+2*h*k2)
...

Ich habe einen Teil des Matlab-Programms bereits gegeben, entscheidend ist vor allem folgender Teil:

for i=1:n
% Erste RK stage
k1 = g*sin(omega*t)-c/m*x;
l1 = v;
% Zweite RK stage
k2 = g*sin(omega*(t+0.5*dt))-c/m*(x+0.5*dt*l1);
l2 = ;

Das Problem an dem ich momentan hänge ist k2. Wieso verwendet man am Ende in der Klammer l1 und nicht k1? Ist das überhaupt richtig so?

Vielen Dank für eure Hilfe!

Meine Ideen:
Ich dachte erst, dass man das aufgrund der x und y in den Grundformen von k1...so machen muss, das hat aber letztendlich eher dagegen gesprochen.
zyko Auf diesen Beitrag antworten »
RE: Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab
So wie das Runge-Kutta-Verfahrens 3. Ordnung im Script steht, ist x die unabhängige Variable und y(x) die abhängige. Dadurch hast du statt einer DGL ein gekoppeltes DGL-System mit zwei Gleichungen.
Du verwendest als unabhängige Variable den zusätzliche Parameter t (Zeitachse).
x(t) und y(t) sind die Koordinaten des Systems.
Deshalb müsste die Bewegungsgleichung lauten:


k1 beschreibt die Systemsituation zum Zeitpunkt
k2 beschreibt die Systemsituation zum Zeitpunkt
Samson_ Auf diesen Beitrag antworten »
RE: Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab
Und wie würde deiner Meinung nach dann k2 aussehen?
Das was ich oben geschrieben habe war ja bereits so gegeben.

insgesamt sieht es bei mir momentan so aus:

for i=1:n
% Erste RK stage
k1 = g*sin(omega*t)-c/m*x; % v-Koordinate (entspricht y)
l1 = v; % x-Koordinate (entspricht x)
% Zweite RK stage
k2 = g*sin(omega*(t+0.5*dt))-c/m*(x+0.5*dt*l1); % v-Koordinate
l2 = v; % x-Koordinate
% Dritte RK stage
k3 = g*sin(omega*(t+dt))-c/m*(x-dt*l1+2*dt*l2); % v-Koordinate
l3 = v; % x-Koordinate
% Geschwindigkeitsupdate
v = v+dt/6*(k1+4*k2+k3);
% Ortsupdate
x = x+dt/6*(l1+4*l2+l3);
% Zeitupdate
t = t+dt;

Ich verstehe vor allem nach wie vor nicht wieso man bei k2 das l1 verwendet...?!
zyko Auf diesen Beitrag antworten »
RE: Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab
In deiner Aufgabe wird

und

benutzt.
Dies bedeutet x und v werden nach t abgeleitet.
Da in den Runge-Kutta-Formeln davon ausgegangen wird, dass

und damit

ist, sind die Runge-Kutta-Formeln deinem Problem insofern anzupassen, dass darin x durch t und y durch (x,v) ersetzt werden.

Konkret zum Zeitpunkt
(t+0.5*dt))
wird angenommen, dass die x-Position (Zeitdifferenz mal Geschwindigkeit)
(x+0.5*dt*l1)=(x+0.5*dt*v)
gewählt wird.

Zitat:
Ich verstehe vor allem nach wie vor nicht wieso man bei k2 das l1 verwendet...?!

Da deine Funktion f zwei Komponenten hat, wird für den Update der ersten Komponente (x der linken Seite, x-Position des Objekts) I1, I2 und I3 verwendet, aber für den Update der zweiten Komponente (v, Geschwindigkeit des Objekts) die entsprechenden K-Werte.
Hierdurch ergibt sich eine Koppelung der beiden DGL.
Zur Berechnung der K-Werte wird nämlich die zugehörige x-Position benötigt.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »