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

Gekoppelte DGL nach Variable höchster Ordnung auflösen

 

b166er
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2013, 13:50     Titel: Gekoppelte DGL nach Variable höchster Ordnung auflösen
  Antworten mit Zitat      
hallo,

ich habe 3 gekoppelte differentialgleichungen 2. ordnung.

wie kann ich diese mit matlab nach der 2. ableitung auflösen, um das ganze in ein system 1. ordnung zu überführen?

das ganze sieht beispielhaft so aus

f1(x,dx,d2x,y,dy,d2y,z,dz,d2z) = 0

f2(x,dx,d2x,y,dy,d2y,z,dz,d2z) = 0

f3(x,dx,d2x,y,dy,d2y,z,dz,d2z) = 0

die 3 ausdrücke sind so kompliziert, dass es sich nicht von hand erledigen lässt. ich habe das ganze mit symbolischen variablen vorliegen.

sprich:

Code:

syms x dx d2x y dy d2y z dz d2z
 


nun möchte ich zum beispiel nach

Code:

d2x = f (x,dx,y,dy,z,dz)
d2y = f (x,dx,y,dy,z,dz)
d2z = f (x,dx,y,dy,z,dz)
 


auflösen.
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: 01.06.2013, 14:42     Titel:
  Antworten mit Zitat      
Hallo,

Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2013, 15:03     Titel:
  Antworten mit Zitat      
hallo,

wenn ich folgendes eingebe:

Code:


syms x y z dx dy dz d2x d2y d2z

f1 = x*y*z*dx^2*d2z + d2x*y*dz + d2y*z^2;
f2 = cos(z)*sin(x)*d2x*z + d2y*cos(z)*sin(y)*dz^2 + d2z*cos(x)*x^2;
f3 = cos(z)*sin(x)*d2z*z + d2x*cos(z)*sin(y)*dy^2 + d2y*cos(x)*x^2;

[d2x,d2y,d2z] = solve(f1,f2,f3);

 


sagt matlab:

Warning: Explicit solution could not be found.
> In solve at 179
In test_solve at 7
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: 01.06.2013, 15:59     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich bin leider ein matlab anfänger, wie genau benutze ich diesen befehl.

Genau diese Informationen findest du in der Dokumentation. Dort findest du auch folgende Beispiele:

Code:
syms x y
S = solve(x + y == 1, x - 11*y == 5)


Code:
syms a u v
[solutions_a, solutions_u, solutions_v] =...
 solve(a*u^2 + v^2 == 0, u - v == 1, a^2 + 6 == 5*a)


Wenn du die DGL anschließend numerisch lösen willst und die Gleichungen linear in den zweiten Ableitungen sind, musst du jedoch gar nicht auflösen, sondern kannst eine mass matrix angeben - siehe Doku der DGL-Löser.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2013, 16:04     Titel:
  Antworten mit Zitat      
hallo,

ich habe meine vorherige antwort aktualisiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
b166er
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2013, 17:14     Titel:
  Antworten mit Zitat      
Code:


syms x y z dx dy dz d2x d2y d2z

f1 = d2z*x + d2x*y + d2y*x;
f2 = d2x*x + d2y*z + d2z*x;
f3 = d2z*y + d2x*z + d2y*x;

[d2x,d2y,d2z] = solve( f1 , f2 , f3 , d2x , d2y , d2z);

 


selbst diese gleichung funktioniert nicht. d2x d2y und d2z sind immer = 0 am ende.
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: 01.06.2013, 20:02     Titel:
  Antworten mit Zitat      
Hallo,

(0,0,0) ist ja auch eine Lösung.
Das ist für michr bei dem zweiten sowie dem eigentlichen Problem auch das merkwürdige: es sind lineare, homogene Gleichungssysteme in den zweiten Ableitungen, d.h. es gibt entweder nur die Null-Lösung oder unendlich viele.
Bist du sicher, dass das so richtig ist?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2013, 20:26     Titel:
  Antworten mit Zitat      
was genau meinst du mit richtig ?

mein ziel ist es nach den 2. ableitungen umzustellen, so dass keine höheren ableitungen mehr auftreten.

wenn ich matlab folgendes berechnen lasse:
Code:

syms x y z dx dy dz d2x d2y d2z

f1 = x*y*z*dx^2*d2z + d2x*y*dz + d2y*z^2;
f2 = cos(z)*sin(x)*d2x*z + d2y*cos(z)*sin(y)*dz^2 + d2z*cos(x)*x^2;
f3 = cos(z)*sin(x)*d2z*z + d2x*cos(z)*sin(y)*dy^2 + d2y*cos(x)*x^2;

[d2x,d2y,d2z] = solve(f1,f2,f3,d2x,d2y,d2z);
 


kommt raus:

d2x = 0

d2y = 0

d2z = 0

ich brauche aber:

d2x = f(x y z dx dy dz)

usw.

womit wir bei der anfangsfrage wären.
wie genau mache ich das mit matlab ?
so wie oben funktioniert es anscheinend nicht.
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: 01.06.2013, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

(0,0,0) ist eine Funktion, wenn auch nicht die, die du wohl wolltest.

Meine Erklärung von oben bedeutet, dass diese eine von dir gewünschte Funktion für dieses System so mathematisch nicht möglich ist, also kann sie solve auch nicht liefern.

Deswegen frage ich, ob das DGL-System korrekt aufgestellt ist.

Wenn du beispielsweise
Code:
[d2x_sol,d2y_sol,d2z_sol] = solve(f1==0,f2==0,f3==1,d2x,d2y,d2z)

rechnen lässt, dann gibt es eine Lösung.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2013, 00:21     Titel:
  Antworten mit Zitat      
mein beispiel war beliebig aus der luft gegriffen, da ich nur wissen wollte wie man nach den variablen höchster ordnung auflöst.
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: 02.06.2013, 09:49     Titel:
  Antworten mit Zitat      
Hallo,

dann hast du dir ein denkbar ungünstiges Beispiel ausgesucht ;)
Die Frage ist somit beantwortet?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2013, 16:33     Titel:
  Antworten mit Zitat      
ja danke.
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.