WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Runge Kutta - freier Fall

 

Otter222
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2012, 21:51     Titel: Runge Kutta - freier Fall
  Antworten mit Zitat      
Hi,
ich moechte ein Programm schreiben, welches die Funktion dv(t)/dt = g- cd/m v(t)² nach dem klassischen Runge Kutta Verfahren löst.

Leider habe ich kein gutes Beispiel gefunden und meine ersten Versuche (unten) sind sehr banal.
Hat mir jm ein gutes Beispiel oder kann mir jm einen Tipp geben?

Vielen Danke
Otter222


Code:


% Zuweisung Startwert

delta_t= 0:1:30;
n=delta_t;
v_rk=zeros(n,1);
%v_rk(1) = 0; %initial condition: Anfangsgeschwindigkeit ist 0

a = @(v)(g -(cd/m)*v^2);

 
for i = 2:n
    k_1 = a*(v_rk(i-1));
    k_2 = a*(v_rk(i-1) + delta_t*1/2 * k_1);
    k_3 = a*(v_rk(i-1) + delta_t*1/2 * k_2);
    k_4 = a*(v_rk(i-1) + delta_t * k_3);
%end
   
% dann muss man noch den Vektor definieren, in dem k1 und k2 Vorkommen

v_rk(i) = v_rk(i-1) + delta_t * 1/6 * (k_1 + 2*k_2 + 2*k_3 + k_4);
end


%Plot der Resultate

figure(3);
plot (n,v_rk);
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 31.05.2012, 23:26 Uhr von denny
Von Matlab intern nach Programmierung


MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.06.2012, 10:29     Titel:
  Antworten mit Zitat      
Hallo,

Code:


clc
clear all

% Zeitraum
t_0=0;
t_n=30; % [sec]
% Schrittweite
stepwidth=1E-2;

% Diskretisierung des Zeitintervalls
steps= t_0:stepwidth:t_n;

% Anfangsbedingung v(t_0)=v_0
v_rk(1) = 0;

% Setzen der Konstanten
% Luftwiderstandskoeffizient
k=2.5;
% Masse
m=80;
% Erdbeschleunigung
g=9.81;

% rechte Seite der DGL definieren
dv = @(v) g - k/m*v.^2;
 
% Iteration (RK-Verfahren)
% wichtiger Hinweis: Das Verfahren ist über eine rechte Seite der Form f(t,y) definiert.
% Da im konkreten Fall diese jedoch nicht von t abhängt, lässt sich die Betrachtung auf f(y) reduzieren

for i = 2:length(steps)

    k_1 = dv(v_rk(i-1));
    k_2 = dv(v_rk(i-1) + stepwidth*1/2 * k_1);
    k_3 = dv(v_rk(i-1) + stepwidth*1/2 * k_2);
    k_4 = dv(v_rk(i-1) + stepwidth* k_3);
   
%  Nachfolger definieren
v_rk(i) = v_rk(i-1) + stepwidth* 1/6 * (k_1 + 2*k_2 + 2*k_3 + k_4);
end


% Visualisierung der Resultate
plot(steps,v_rk)
 


Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.06.2012, 01:45     Titel:
  Antworten mit Zitat      
Hallo MaFam,

Nur eine Nebenbemerkung: Von "clear all" rate ich ab, weil das löschen aller bereits geladenen Funktionen keinen Vorteil bietet, aber das Nachladen sehr zeitaufwändig ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 04.06.2012, 12:49     Titel:
  Antworten mit Zitat      
Hallo Jan,

eine alte, unangenehme Angewohnheit von mir. Danke für den Hinweis.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Otter222
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 29.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2012, 17:07     Titel:
  Antworten mit Zitat      
Vielen Dank fuer die schnelle Hilfe und die Loesung.
Bin total ueberrascht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.