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

Nichtlineare DGL, numerische Lösungsmöglichkeiten

 

J0ph33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2011, 13:31     Titel: Nichtlineare DGL, numerische Lösungsmöglichkeiten
  Antworten mit Zitat      
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:
Code:

Warning: Failure at t=5.604575e-008.  Unable to meet integration tolerances without reducing the step size below the
smallest value allowed (1.058791e-022) at time t.
> In ode23 at 358
  In test_DGL at 1
 

Ä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

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.05.2011, 18:06     Titel:
  Antworten mit Zitat      
Hallo,

für phi < 0 wird die Funktion unter der Wurzel kleiner 0, die Wurzel damit komplexwertig. Ist das wirklich beabsichtigt?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2011, 20:58     Titel:
  Antworten mit Zitat      
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:

Code:
b = 38.6816865;
q = 1.602e-19;
e = 1.0625e-10;
n = 2.25e20/p;

ydot = [0];

ydot(1) = -2/b*sqrt(q*p*b/2/e*((exp(-b*y(1))+b*y(1)-1)-n/p*(exp(b*y(1))-b*y(1)-1)));


p variiert zwischen 1e13 und 1e21 oder gar mehr...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.05.2011, 21:29     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
J0ph33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2011, 00:21     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.05.2011, 17:14     Titel:
  Antworten mit Zitat      
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
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: 17.05.2011, 20:55     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
J0ph33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2011, 23:14     Titel:
  Antworten mit Zitat      
nein, derart kompliziert und zeitaufwendig sollte es natürlich nicht werden Wink

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 Smile

denke aber mal mit den ode-solvern komme ich auch zurecht.
 
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.