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

Symbolic Toolbox: System von 4 lin. DGln. mit Anf.-Werten

 

helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 17.07.2018, 22:26     Titel: Symbolic Toolbox: System von 4 lin. DGln. mit Anf.-Werten
  Antworten mit Zitat      
Ich möchte die DGl. des Foucault-Pendels algebraisch mit diesem Code lösen:

Code:

   syms x u y v x0 y0 u0 v0 o O
   S=dsolve('Du = 2*O*v-o^2*x', 'Dv = -2*O*u-o^2*y', 'Dx = u', 'Dy = v', 'x(0) = x0', 'u(0) = u0', 'y(0) = y0', 'v(0) = v0')
 


Die Fehlermeldung lautet:
??? Error using ==> sym.sym>convertExpression at 2515
Error: Illegal operand [_mult]

Error in ==> sym.sym>convertChar at 2426
s = convertExpression(x);

Error in ==> sym.sym>convertCharWithOption at 2410
s = convertChar(x);

Error in ==> sym.sym>tomupad at 2164
S = convertCharWithOption(x,a);

Error in ==> sym.sym>sym.sym at 111
S.s = tomupad(x,'');

Error in ==> dsolve>mupadDsolve at 189
sys = sym(sys_str);

Error in ==> dsolve at 97
[R,vars] = mupadDsolve(ignoreConstraints,varargin{1:narg});

Error in ==> probier at 240
S=dsolve('Du = 2*O*v-o^2*x', 'Dv = -2*O*u-o^2*y', 'Dx = u', 'Dy = v', 'x(0) = x0', 'u(0) = u0', 'y(0) = y0', 'v(0) =
v0');

Was in der Syntax stimmt da nicht?

'Gruß, helmat
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2018, 08:28     Titel:
  Antworten mit Zitat      
Hallo,

die in der Dokumentation empfohlene Syntax ist in vielerlei Hinsicht anders:
* du übergibst die Gleichungen als Zeichenketten, in der Doku wird == empfohlen.
* du übergibst mehrere Gleichungen als mehrere Argumente, in der Doku wird ein Array in [ ] empfohlen.
* du verwendest Dx etc., in der Doku heißt es diff(x, t)

Die Beispiele "Solve System of Differential Equations" für die Angabe der Gleichungen und "Solve Differential Equation with Condition" für die Angabe der Bedingungen sollten helfen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 18.07.2018, 10:03     Titel:
  Antworten mit Zitat      
Danke Harald,
ich benutze die Maltlab-Version 7.11.0.584.

IIn der Dokumentatin finde ich einschlägig:

Setting Initial and Boundary Conditions

dsolve('Dy = a*y', 'y(0) = b')

ans =
b*exp(a*t)

dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')

ans =
(1/exp(a*t*i))/2 + exp(a*t*i)/2

Solving a System of Differential Equations


z = dsolve('Dx = y', 'Dy = -x')

z =
x: [1x1 sym]
y: [1x1 sym]


Enter z.x and z.y to see the results: etc. etc.

Die Version mit den von Dir angegebenen Syntaxelementen habe ich leider nicht. Die DGl. kommt mir aber nicht so kompliziert vor, dass meine Version sie nicht beherrschen könnte. Deshalb setze ich immer noch auf einen Syntaxfehler meinerseits.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2018, 11:07     Titel:
  Antworten mit Zitat      
Hallo,

mit anderen Worten, Release R2010b?
Es wäre sehr hilfreich, wenn du diese Information in dein Profil einträgst oder sie von Anfang an angibst. Seit R2010b hat sich sehr viel geändert, wie du ja auch an der Doku ablesen kannst.
Ich sehe da auf Anhieb keinen Fehler. Ist allerdings halt in der damaligen Syntax auch unübersichtlich.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 18.07.2018, 12:12     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:


mit anderen Worten, Release R2010b?...

Ja, genau!

Wenn R2010b es nicht kann
Dann geh ich eben hirnlich ran.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.07.2018, 12:29     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das in Matrix-Vektor-Schreibweise darstellst, sollte expm helfen.

Ich würde übrigens nicht sagen, dass R2010b das nicht kann. Ich kann dir nur auf Anhieb auch nicht sagen wie.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 19.07.2018, 21:29     Titel:
  Antworten mit Zitat      
Hallo,
ich habe es noch mit der trial-Version von 2018a versucht.

Code:
syms x u y v x0 y0 u0 v0 o O
   dsolve(diff(u,t) == 2*O*v-o^2*x', diff(v,t) == -2*O*u-o^2*y, diff(x,t) == u, diff(y,t) == v, x(0) == x0, u(0) == u0, y(0) == y0, v(0) == v0)


Dann wird garnichts angezeigt außer "busy", der Bildschirm friert ein, das Programm kann nicht mit Ctrl +C gestoppt werden und auch nicht nicht mit 'Strg+Alt+Entf. Nach 1 Stunde "Business" musste ich den Strom abschalten. Keine gute Erfahrung!
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.07.2018, 22:16     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht, ob es einen Unterschied macht, aber laut Doku sollte man die DGLen und die NBen mit [ ] zusammenfassen.
Im Zweifelsfall auch mal beim Technischen Support nachfragen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 20.07.2018, 11:27     Titel:
  Antworten mit Zitat      
Hallo Harald,
nochmal danke für Deine Tipps!

Matriziell sollte es so aussehen:
Code:
 
syms x(t) y(t) u(t) v(t) x0 y0 u0 v0 o O  
   w=[x;y;u;v];
   A=[0 0 u 0;0 0 0 v;-o^2 0 0 2*O;0 -o^2 -2*O 0]
   S=dsolve(diff(w) == A*w,w(0) == [x0;y0;u0;v0])
 


Da friert nichts mehr ein, auch keine Fehlermeldung, Matlab bleibt "busy", aber nach 30 min (Ende meiner Geduldsspanne) kommt auch nichts raus.

Für den Fall, dass die Trial-Version stark verzögert wird: Könntest Du die vier Zeilen mal auf Deiner Maschine laufen lassen?
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2018, 12:01     Titel:
  Antworten mit Zitat      
Hallo,

ich bekomme nach wenigen Sekunden
Zitat:
Warning: Unable to find explicit solution.


Die Trial-Version sollte da keine Abweichungen haben.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 20.07.2018, 13:33     Titel:
  Antworten mit Zitat      
Danke Harald,
in der Trial-Version will MATLAB vielleicht keine "Unability" bekennen. Fände ich aber besser, als einen einfäch unbegrenzt warten zu lassen.

Du hast mit sehr geholfen.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2018, 13:50     Titel:
  Antworten mit Zitat      
Hallo,

Frage nebenbei: müsste es nicht
Code:
  A=[0 0 1 0;0 0 0 1;-o^2 0 0 2*O;0 -o^2 -2*O 0]

heißen?

Um die Lösung zu bestimmen, kann zudem wie gesagt expm helfen.

In dem Zusammenhang auch: ohne Anfangswerte wird das bei mir gelöst.

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 ;)
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 - 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.