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

Berechnung einer DGL mit dsolve Funktion

 

pegasus
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2016, 10:57     Titel: Berechnung einer DGL mit dsolve Funktion
  Antworten mit Zitat      
Hallo Zusammen,
ich habe eine DGL für die eine geschlossene Lösung existiert. Leider wird in der Literatur nicht die Lösungsfunktion y(t) angegeben. Nun möchte ich diese mit der dsolve Funktion in Matlab selbst erzeugen.

Dabei gehe ich folgendes ein:

Code:

dsolve('Dy/(((y/1.0*10^5)^((1.4-1)/1.4)*sqrt(((y/1.0*10^5)^((1.4-1)/1.4)-(2/(1.4+1)))) = -(7.09^-4/8*10^-3)*sqrt(1.4*296.8*334)*1.4*sqrt((2/(1.4-1)))*(2/(1.4+1))^(1/(1.4-1))*t','y(0)=1.3*10^5','t')
 


Anschließend bekomme ich folgende Fehlermeldung:

Code:

Error using sym>convertExpression (line 1391)
Conversion to 'sym' returned the MuPAD error: Error: Invalid input. ')' is expected. [line 1, col 209]

Error in sym>convertChar (line 1302)
    s = convertExpression(x);

Error in sym>convertCharWithOption (line 1285)
        s = convertChar(x);

Error in sym>tomupad (line 999)
        S = convertCharWithOption(x,a);

Error in sym (line 142)
            S.s = tomupad(x,'');

Error in dsolve>mupadDsolve (line 327)
sys = [sys_sym sym(sys_str)];

Error in dsolve (line 189)
sol = mupadDsolve(args, options);

Error in dsolve_bsp (line 1)
dsolve('Dy/(((y/1.0*10^5)^((1.4-1)/1.4)*sqrt(((y/1.0*10^5)^((1.4-1)/1.4)-(2/(1.4+1)))) =
-(7.09^-4/8*10^-3)*sqrt(1.4*296.8*334)*1.4*sqrt((2/(1.4-1)))*(2/(1.4+1))^(1/(1.4-1))*t','y(0)=1.3*10^5','t')
 


Woran liegt es, dass ich die Funktion nicht plotten kann ?

pegasus
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

aus der Doku:
Zitat:
Character vector inputs are not recommended. Instead, use syms to declare variables and replace inputs such as dsolve('Dy = y') with syms y(t); dsolve(diff(y,t) == y).


Bei der komplexen Gleichung wirst du irgendwo einen Syntaxfehler haben. Mit der empfohlenen Schreibweise wirst du dir da leichter tun.

Du kannst die DGL dann auch mit mehreren Befehlen schrittweise aufbauen.

Grüße,
Harald
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: 10.11.2016, 12:10     Titel: Re: Berechnung einer DGL mit dsolve Funktion
  Antworten mit Zitat      
Hallo pegasus,

Die Fehlermeldung ist eindeutig:
Zitat:
Invalid input. ')' is expected.

Der Ausdruck vor dem Komma hat zwei öffnende Klammern mehr als schließende.

Hier eine vereinfachte Formel:
Code:
Dy / (y/1e^5)^(2/7)*sqrt((y/1e5)^(2/7)-5/6) = -1.63557021224262e-05 * t

Ich habe mal geraten, dass die ersten beiden (( überflüssig sind.

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

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.11.2016, 12:16     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich glaube, du warst beim Entfernen von Klammern zu großzügig, denn
a / (b * c) ist nicht gleich a / b * c.

Grüße,
Harald
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: 10.11.2016, 18:42     Titel:
  Antworten mit Zitat      
Hallo Harald,

Ja, das ist möglich.
Der Ausdruck "(y/1.0*10^5)" ist verwirrend. Das ist natürlich "y*1e5" und nicht "y*1e-5". Welches schräge Programm erzeugt denn eine Formel, bei der eine Zahl durch 1 dividiert wird? Da muss doch "(y/(1.0*10^5))" gemeint sein, oder?! Das wäre doch sonst sinnfrei.
da aber sowieso zwei verwaiste Klammern in dem geposteten Ausdruck vorkommen, ist meine Vereinfachung natürlich nur wildes Raten. Wie die Gleichung wirklich aussieht, weiß nur der OP.

Jedenfalls kann man die Gleichung aber auch mit menschlichen Fähigkeiten viel mehr Lesbarkeit einhauchen und muss nicht die Symbolic Toolbox damit quälen. Und sowie die Konstanten zusammen gefasst sind, werden solche Klammerfehler weniger mystisch.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
pegasus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2016, 10:52     Titel:
  Antworten mit Zitat      
Es heisst in der Tat (y/1e5).

Wenn ich die fehlenden Klammern setze kann Matlab die Funktion verarbeiten. Allerdings bekommt dsolve keine explizite Lösung heraus (2014b).

In der Literatur wird hierfür allerdings erwähnt, dass die Gleichung geschlossen lösbar sei, aber die Lösungsfunktion wird nicht angegeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn du den korrigierten Code postest, teste ich es gerne im aktuellen Release.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 10:59     Titel:
  Antworten mit Zitat      
Hallo Harald,

hier der korrigierte Code:

Code:

dsolve('Dp/(((p/1.89e5)^((1.4-1)/1.4)*sqrt(((p/1.89e5)^((1.4-1)/1.4)-(2/(1.4+1)))))) = -(7.09e-4/8*e-3)*sqrt(1.4*296.8*334)*1.4*sqrt((2/(1.4-1)))*(2/(1.4+1))^(1/(1.4-1))*t','p(0)=1.3e5','t')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

auch R2016b findet hier keine Lösung.
Du könntest dich noch an den Technischen Support von MathWorks wenden, ob man dort Vorschläge für dich hat.

Grüße,
Harald
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.