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

ODE-System, Chemische Reaktionen

 

blue_plasma
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2010, 17:39     Titel: ODE-System, Chemische Reaktionen
  Antworten mit Zitat      
Hallo!

Ich muss zu meiner Entschuldigung vorausschicken, dass ich nur wenig Erfahrung mit ML habe, und mich so 'durchhangele'... Rolling Eyes

Ich habe ein System von 11 ODE's (8 Konzentrationen, 3 Temperaturen) die ich in der Zeit lösen möchte. Ich habe schon Literatur gewälzt und habe wohl ein "steifes" System. In der ML-Hilfe habe ich gelesen, das man dem Solver helfen kann, indem man ihm Infos zur Jacobi-Matrix gibt...
Muß ich jetzt meine ODEs nach den abh. Var. ableiten und als Matrix dem ODE-Sovler geben, oder geht das auch anders?

blue_plasma
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich würde es zunächst einmal mit ode23s probieren.
Den Weg über die Jacobi-Matirx kannst du dann immer noch beschreiten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2010, 16:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für den Tip, aber leider hat eine Änderung des Solvers nix gebracht... Sad
Ich hab' vergessen zu sagen, dass ich das Ganze mit der Linienmethode (Method of Lines, Rothe-Methode) programmieren will. Meine Lösung für die abh. Var. wird dann in einem Feld (t,yi) ausgegeben.
Leider steigt ML immer nach der "Hälte" der Zeit aus. Die Lösung bis dahin wird ausgegeben und ich bekomme dabei neg. Konzentrationen als Lösung...? Kann man da was machen?

Beste Grüße
blue_plasma
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ohne weitere Kenntnis des Problems schwierig.
Ich würde mal die Toleranzen (AbsTol, RelTol) heruntersetzen.

"Linienmethode" sagt mir nichts.

Ansonsten vielleicht mal den Code posten oder per PN schicken.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 23.04.2010, 09:26     Titel: Re: ODE-System, Chemische Reaktionen
  Antworten mit Zitat      
blue_plasma hat Folgendes geschrieben:
Hallo!
Muß ich jetzt meine ODEs nach den abh. Var. ableiten und als Matrix dem ODE-Sovler geben, oder geht das auch anders?
blue_plasma


Um die ursprüngliche Frage zu beantworten: Ja.

Bei meinen Systemen, die auch sehr steif sind, hilft es tatsächlich sehr, die Tangente/Jacobimatrix analytisch mitzugeben. Zumal das lösen dann auch deutlich schneller geht.

Viele Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2010, 09:29     Titel:
  Antworten mit Zitat      
Noch ein Hinweis:

Je nach Komplexität der Funktionen kann die Symbolic Math Toolbox (sofern vorhanden) beim analytischen Ableiten hilfreich sein.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2010, 11:07     Titel:
  Antworten mit Zitat      
So. Wieder da nach Krankheit... Smile

@Harald: Hat leider nix gebracht... Linienmethode: Schau mal da, ich finde das sehr interessant: http://de.wikipedia.org/wiki/Linienmethode

@nicolas S.: Uiiiii, 11x11 Ableitungen, ich glaub mir wird schlecht... aber da muß ich wohl durch. Ich bilde jetzt also die Ableitungen, schreibe die Elemente in eine Matrix und sage dann ML, dass sie da sind. Ist das prinzipiell richtig? PS: Kennst Du eine Carla? Haha!

Dank und Gruß
blue_plasma
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

willkommen zurück Wink

Wenn ich das richtig verstehe, steckt in der Linienmethode lediglich die Vorarbeit zur Aufstellung der Differentialgleichungen.

Die Ableitung würde ich dann eben auch nicht von Hand berechnen, sondern wie gesagt z.B. mit der Symbolic Math Toolbox.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2010, 13:13     Titel:
  Antworten mit Zitat      
Ok, ich sitz grad wieder vor der Symb Toolbox und versuch' mal laut zu denken. Bitte korrigiert mich, wenn ich falsch liege.
Also meine erste abh. Var. ist CG, die andere CS. Die zeitliche Ableitung ist wie folgt gegeben. z ist für die Ortsableitungen. Ki sind Konstanten.

CGt = -K1*CGz+K2*CGzz+K3*(CS-CG)

Das erste Element der Jacobi-MAtrix sei J(1,1), dafür muß ich CGt nach CG ableiten (also d/dCG(CGt)), richtig?
In der Toolbox bekomme ich als Antwort: -K3

Stimmt das? Ich hab schon länger keine Mathe mehr betrieben... Embarassed

blue_plasma
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das stimmt, da
Code:
CGt = -K3*CG + von CG unabhängige Terme

... und die Ableitung eines linearen Terms ist die Konstante davor.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2010, 13:35     Titel:
  Antworten mit Zitat      
Danke Harald!

Also ich muß die Ableitungen nach dem Ort gar nicht berücksichtigen? Das war nämlich so ein Hintergedanke von mir...

Was mach ich denn, wenn eine Konstante (im Bsp. Ki) vor einer Ortsableitung von meiner abh. Var. abhängt?

Danke und Gruß
blue_plasma
Private Nachricht senden Benutzer-Profile anzeigen
 
blue_plasma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 28.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 17:51     Titel:
  Antworten mit Zitat      
So, s' Wochenende ist vorbei und ich hab meine Jacobi-Matrix erstellt. D.h. ich habe mein Gl.system nach den abh. Variablen abgeleitet, eine (in meinem Fall) 11x11-Matrix erhalten. Manche Elemente sind konstant und manche hängen von abh. Variablen ab.

Ich bin nun am 'Probieren' (leider Crying or Very sad ) wie ich ML sage, dass es die Jac-Mat verwenden soll. Aus den Bsp. in der Dokumentation werd' ich leider nicht so richtig schlau....
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

lies dir mal in der Doku zu ode23s etc. diesen Absatz durch:

"For the stiff solvers ode15s, ode23s, ode23t, and ode23tb, ..."

Mit anderen Worten: du musst eine Funktion schreiben, die die Jacobi-Matrix auswertet. Am einfachsten dürfte es sein, aus der symbolischen Jacobi-Matrix einmalig ein Function Handle zu erstellen. Kleines Beispiel:
Code:
syms x
z = [x, x^2]
zf = matlabFunction(z)
zf(2)


Achtung: zf sollte in deinem Fall zwei Eingabeargumente haben.

Dieses Function Handle dann mit odeset als 'Jacobian' zur Verfügung stellen.

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