|
|
Nichtlineare DGL, numerische Lösungsmöglichkeiten |
|
J0ph33 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2011, 13:31
Titel: Nichtlineare DGL, numerische Lösungsmöglichkeiten
|
|
|
|
|
hiho
ich bin mit Matlab leider nur sehr wenig vertraut (vor ein paar Tagen angefangen).
Prinzipiell geht es darum eine DGL folgender Struktur zu lösen:
-d'phi'/dx = sqrt((exp(phi)+phi-1))
Ich habe das mit den ode-Solvern auch schon ganz gut hinbekommen, leider nur für bestimmte Anfangswerte. Genauergenommen errechnet er bei der Verwendung von negativen Anfangswerten ziemlichen Unsinn und gibt auch eine Fehlermeldung aus.
Fehlermeldung:
Ähnliches passiert bei allen anderen ode-Solvern ebenfalls.
Ich habe mir nun gedacht man könnte das Ganze ein wenig umstellen, ungefähr derart:
1*dx = -d'phi'/sqrt(...s.o.)
Beide Seiten würde man dann einfach integrieren (nach x bzw. phi).
Da ich das Intervall von x kenne bzw. selbst bestimmen kann [0:x], wäre die linke Seite schon mal kein Problem. Bei phi wird's problematischer, ich kenne eine Grenze, die andere ist im Grunde der gesuchte Wert.
Das Ergebnis soll eine Sammlung von phi(x)-Werten sein. Also prinzipiell würde ich diese Integralgleichung gerne nach einer Grenze vom linken Integral lösen, hab aber kein Plan wie ich das in Matlab bewerkstelligen könnte.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.05.2011, 18:06
Titel:
|
|
Hallo,
für phi < 0 wird die Funktion unter der Wurzel kleiner 0, die Wurzel damit komplexwertig. Ist das wirklich beabsichtigt?
Grüße,
Harald
|
|
|
J0ph33 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2011, 20:58
Titel:
|
|
Nein, ist es nicht...
Die Funktiion sieht eigentlich deutlich komplexer aus, das oben ist nur die grundlegende Struktur...allerdings wird das wohl die Ursache für das Scheitern der Berechnung sein.
Ich werde da mal drüber schauen.
Wie sieht es mit anderen Lösungsmöglichkeiten für die DGL aus?
Hier die Originalfunktion:
p variiert zwischen 1e13 und 1e21 oder gar mehr...
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.05.2011, 21:29
Titel:
|
|
Hallo,
bitte ein konkretes Beispiel inkl. p und Anfangswert posten.
Kann es sein, dass einem diese DGL einfach sofort "um die Ohren fliegt"? (sprich, dass die Lösung gegen unendlich läuft?)
Grüße,
Harald
|
|
|
J0ph33 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2011, 00:21
Titel:
|
|
p bspw. 1e17
Anfangswert im Bereich von 0 bis 0.9.
Wie gesagt, mit den ode-solvern bekomme ich ein recht zufriedenstellendes Ergebnis.
Mir geht es um weiterere Lösungsmöglichkeiten, die vlt. nicht derart "blackbox"-artig sind.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.05.2011, 17:14
Titel:
|
|
Hallo,
was spricht gegen die gegebenen (ode45, ode23s etc.) Löser?
Natürlich kannst du selbst einen Löser implementieren, aber ich sehe wenig Sinn darin.
Grüße,
Harald
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 17.05.2011, 20:55
Titel:
|
|
Hallo J0ph33,
Zum Glück ist ODE45 keine Blackbox, sondern man kann im Source-Code nachlesen, was wann und warum berechnet wird.
Du kannst zwar einen ODE-Solver leicht selbst schreiben. Dabei gibt es aber anstrengende Details: Das Auffinden der Anfangs-Schrittweite, das finden einer passenden Schrittweite für den vorletzten und letzten Schritt, die Wahl einer Norm für die Schrittweiten-Kontrolle, ...
Ich schätze, die Programmierung eines ordentlichen ODE-Solvers braucht einen Monat, das Testen mit ein paar Standard-Problemen verschlingt dann den zweiten Monat. Wenn es das wert ist, ...
Gruß, Jan
|
|
|
J0ph33 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.05.2011, 23:14
Titel:
|
|
nein, derart kompliziert und zeitaufwendig sollte es natürlich nicht werden
eine Alternative zu meiner Lösung habe ich heute zu Gesicht bekommen, rein numerisch per Hand programmiert. Das Verfahren war mir allerdings nicht geläufig...ich bekomme aber bald den Code, dann schaue ich mir das mal an
denke aber mal mit den ode-solvern komme ich auch zurecht.
|
|
|
|
|
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.
|
|