Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab |
19.05.2013, 12:04 | Samson_ | Auf diesen Beitrag antworten » | ||
Federpendel mit Runge-Kutta-Verfahren 3. Ordnung - Matlab 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. |
||||
19.05.2013, 13:06 | 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 |
||||
19.05.2013, 14:44 | 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...?! |
||||
19.05.2013, 21:08 | 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.
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. |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|