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

Frage zu Functions, insb mit DGL

 

Thierry
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2015, 23:36     Titel: Frage zu Functions, insb mit DGL
  Antworten mit Zitat      
Ahoi.

Ich bin dabei, mich etwas tiefer in Matlab hineinzuarbeiten, doch die functions verstehe ich leider immer noch nicht ganz und die meisten Tutorials kratzen nur an der Oberfläche, das vorliegende Skript hilft leider auch nicht weiter. Beispiel: DGL des Sinus, Transformation auf System 1.er Ordnung

d2y=f(t,y,dy)
y(t0)=y0
dy(t0)=y1

Transformation: z1=y, z2=dy

dz1=z2
dz2=f(t,z1,z2)
z1(t0)=y0
z2(t0)=y1

Lösung AWP:
d2y=-y
y(0)=0
dy(0)=1

Lösung:

Code:
function ueb
y0=[0 1];
tspan=[0 2*pi];
[t,y]=ode45(@uebe,tspan,y0)
plot(t,y)
end
function bla=uebe(t,z)
bla(1,1)=z(2);
bla(2,1)=-z(1);
end


Frage: Wie kann es sein, dass -z(1) und z(2) Werte besitzen? Ich kann nicht erkennen, wo die zugewiesen werden.




Anderes Beispiel, es geht um ein Feder-Masse-Dämpfersystem:

d2y*m=-k*y-d*dy
y(0)=0, dy(0)=1
m=10, k=1, d= wahlweise 10^i mit i=0, 1, 2, 3, 4 zum Testen von ode45 und ode15s

Code:
function feder
y0=[1;1];
tspan=[0 100];
[t,y]=ode45(@dgl,tspan,y0);
length(t)
[t,y]=ode15s(@dgl,tspan,y0);
length(t)
plot(t,y)
end
function fmd=dgl(t,y)
k=1;m=10;d=1;
fmd=[y(2);-k/m*y(1)-d/m*y(2)];
end


Kann mir jemand die Zeile fmd=[y(2);-k/m*y(1)-d/m*y(2)]; genauer erklären? y(j) stünde meiner Meinung nach für die j-te Ableitung, aber der Gedanke kann ja nicht so ganz korrekt sein, sonst würde die Formel so nicht stimmen.

Schon mal danke im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2015, 09:56     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Frage: Wie kann es sein, dass -z(1) und z(2) Werte besitzen? Ich kann nicht erkennen, wo die zugewiesen werden.

ode45 ruft intern die übergebene Funktion mit verschiedenen Werten, z.B. zunächst den Anfangsbedingungen, auf.

Zitat:
Kann mir jemand die Zeile fmd=[y(2);-k/m*y(1)-d/m*y(2)]; genauer erklären?

Das ist ähnlich wie bei deinem ersten Beispiel.
y(1) ist die Funktion an sich, y(2) ihre Ableitung.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thierry
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2015, 12:57     Titel:
  Antworten mit Zitat      
Ah ok, kann ich irgendwo finden welche Werte ode45 durchläuft?

Und wie ist bei der Funktion fmd die Schreibweise? Ist das immer [erste Ableitung; Rest der Formel]? Wie sähe es bei höheren Ordnungen aus? [zweite Ableitung; Rest]?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2015, 14:10     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ah ok, kann ich irgendwo finden welche Werte ode45 durchläuft?

Das regelt ode45 intern über eine Schrittweitensteuerung.

Zitat:
Wie sähe es bei höheren Ordnungen aus? [zweite Ableitung; Rest]?

Bei y''' = ... wäre es [erste Ableitung; zweite Ableitung; Rest]. Ich würde die DGLen sicherheitshalber wirklich immer sauber aufstellen, so wie du das auch in deinem ersten Beispiel mit der Transformation gemacht hast.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thierry
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2015, 15:48     Titel:
  Antworten mit Zitat      
Ok, ein paar Fragen noch: Wofür stehen denn die Indizes bei bla(1,1) und bla(2,1)? Und wie müsste das in der gleichen Form für das Federmassedämpfersystem aussehen? Wenn ich wüsste wofür die Indizes genau stehen würde ich es wohl auch hinkriegen. So ist es zumindest falsch, tauschen bringt auch nix:

f(t,y,dy)=(-k*y-d*dy)/m
y(0)=1
dy(0)=1

z1=y, z2=dy

Code:
function feder
y0=[1 1];
tspan=[0 100];
[t,z]=ode45(@fmd,tspan,y0);
plot(t,z);
end
function dy=fmd(t,z)
d=1;m=10;k=1;
dy(1,1)=-d/m*z(2);
dy(2,1)=-k/m*z(1);
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2015, 15:57     Titel:
  Antworten mit Zitat      
Hallo,

dy sind die Ableitungen. Ich würde es dann naheliegenderweise dz nennen. Die Indizes beziehen sich auf die Komponenten. In deinem Fall dann:

Code:
dz(1) = z(2);
dz(2) = -k/m*z(1)-d/m*z(2);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thierry
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2015, 12:26     Titel:
  Antworten mit Zitat      
Ah, jetzt ja! Eine Insel!

Code:
function feder
y0=[1 1];
tspan=[0 100];
[t,y]=ode45(@fmd,tspan,y0);
plot(t,y);
end
function dy=fmd(t,y)
d=1;m=10;k=1;
dy(1,1) = y(2);
dy(2,1) = -k/m*y(1)-d/m*y(2);
end


So funktioniert es, dy muss als Spaltenvektor angegeben werden. Vielen Dank für deine Hilfe!
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.