|
Peter0075 |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 15.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2020, 14:57
Titel: Lösen der DGL's mit ODE
|
|
Hallo zusammen,
ich benötige Hilfe beim numerischen Lösen der beiden angehängten DGL's.
Die beiden Variablen x und y sind rot markiert, bei den restlichen Größen handelt es sich um Konstanten.
Generelle Frage sind die DGL's überhaupt so lösbar ?
Leider schaffe ich den nötigen Schritt der Linearisierung der beiden Gleichungen durch Substitution nicht, um diese mit der ODE Funktion numerisch zu lösen. Vielleicht kann einer von euch mir weiterhelfen
Schonmal Danke an alle die es versuchen!
VG
Peter
Beschreibung: |
|
Download |
Dateiname: |
DGL.PNG |
Dateigröße: |
17.44 KB |
Heruntergeladen: |
434 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.04.2020, 17:46
Titel:
|
|
Hallo,
wenn du die DGLen nach x'' und y'' auflöst (alles andere auf die andere Seite bringen) und das dann in ein System von DGLen erster Ordnung umwandelst, sollte das mit ode45 oder ähnlichen Lösern klappen. Eine Linearisierung ist nicht notwendig.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Peter0075 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 15.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2020, 18:42
Titel:
|
|
Danke für deine Rückmeldung!
Ich hab die erste Gleichung jetzt mal in eine DGL erster Ordnung gewandelt (siehe Bild im Anhang).
So könnte ich ODE45 verwenden, wenn da nicht das y' (erste Ableitung von y) wäre.
Bzw. ich verstehe noch nicht wie ich die erste Ableitung von y in die ODE45 Funktion integriere ? (siehe die Fragezeichen in der Matlab Funktion)
Hier mal die Funktion die ich bisher in Matlab habe:
function dydt = numerischeLoesung(x,y)
dxdt = [x(2); 3*K*r*sin(phi)*(r*(cos(phi)*y(1)-sin(phi)*x(1))+omega_2)-2*omega*???? ];
[x,y] = ode45(@numerischeLoesung,[0 20],[2; 0]);
Danke!!!
Beschreibung: |
|
Download |
Dateiname: |
DGL_erste_Ordnung.PNG |
Dateigröße: |
11.56 KB |
Heruntergeladen: |
347 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.04.2020, 19:35
Titel:
|
|
Hallo,
Zitat: |
So könnte ich ODE45 verwenden, wenn da nicht das y' (erste Ableitung von y) wäre. |
Du musst das gleiche mit der anderen DGL machen. Dann ist y' entsprechend y2.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Peter0075 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 15.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2020, 20:01
Titel:
|
|
Danke !
Hab es jetzt so umgesetzt, leider erhalte ich nur Fehlermeldungen.
Was fehlt noch ?
Vielen Dank!!
function [dxdt,dydt] = Numerische_Loesung(x,y)
syms phi r K omega omega_2
dxdt=[
x(2);
3*K*r*sin(phi)*(r*(cos(phi)*y(1)sin(phi)*x(1))+omega_2)-2*omega*y(2)
];
dydt = [
y(2);
-3*K*r*cos(phi)*(r*(cos(phi)*y(1)-sin(phi)*x(1))+omega_2)+2*omega*x(2)
];
Solver:
[x,y] = ode45(@Numerische_Loesung, [0 10],[0; 0.01]);
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.04.2020, 20:25
Titel:
|
|
Hallo,
syms und ode45 passen nicht zusammen. Du meintest doch, dass phi etc. Konstanten wären. Ich bin davon ausgegangen, dass du Werte dafür kennst? Wenn nicht, dann musst du mit dsolve arbeiten. Die Vorgehensweise ist da aber ziemlich anders.
Erste Entscheidung also: numerische oder symbolische Lösung. Beides mischen geht jedenfalls nicht.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Peter0075 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 15.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2020, 07:44
Titel:
|
|
Danke für deine Hilfe das hat mich nochmal ein Stück weiter gebracht!
Ich hab die syms durch Konstante Werte ersetzt.
Ich erhalte folgende Fehlermeldung:
Index exceeds the number of array elements (1).
Error in Numerische_Loesung (line 12)
dt(1)=[x(2); 3*K*r*sin(phi)*(r*(cos(phi)*x(1)*sin(phi)*x(1))+omega_2)-2*omega*x(2)];
Ich hab das Gefühl Matlab versteht nicht das x und y 2 Einträge haben...
Hab es auch schon versucht x und y durch eine Matrix mit zwei Einträgen vorzugeben, Fazit: gleiche Fehlermeldung.
Mein Skript:
[x,y]=ode45(@Numerische_Loesung,[0 20],[0;10]);
Meine Function:
function [dt] = Numerische_Loesung(x,y)
phi = (120/360)*2*pi;
K = 500;
omega = 105;
omega_2=1;
r=0.2;
dt = zeros(2,1);
dt(1)=[x(2); 3*K*r*sin(phi)*(r*(cos(phi)*y(1)*sin(phi)*x(1))+omega_2)-2*omega*y(2)];
dt(2) = [ y(2); -3*K*r*cos(phi)*(r*(cos(phi)*y(1)-sin(phi)*x(1))+omega_2)+2*omega*x(2) ];
dt = [dt(1); dt(2)];
end
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.04.2020, 08:09
Titel:
|
|
Hallo,
du musst x und y zu einem Vektor (hier: u) zusammenfassen. Das erste Argument der Funktion muss die Simulationszeit sein, die nur im Falle einer expliziten Zeitabhängigkeit (externe Anregung) genutzt wird.
Beim Aufruf musst du einen Vektor mit 4 Anfangsbedingungen (für x und y sowie deren Ableitungen; auf die Reihenfolge achten!) übergeben, z.B.:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Peter0075 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 15.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2020, 08:44
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|