|
|
DGL mit zeitabhängigem Vektor |
|
Lakitu |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2017, 13:38
Titel: DGL mit zeitabhängigem Vektor
|
|
|
|
|
Hallo,
ich möchte diese Differentialgleichung lösen
dV/dt=K1*exp(-K2/(K3*T))*(K4-V)
K1,K2, K3 und K4 sind hierbei Konstanten. Die Temperatur T verändert sich allerdings mit jedem Zeitschritt. Also habe ich mit timespan und T zwei Vektoren derselben Länge. Jeder Zeitpunkt wird dabei einer Temperatur zugewiesen.
Meine Frage:
Wie kann ich den Vektor T in die DGL einbauen? In meinem Beispiel habe ich es mit dem ODE-Solver probiert. Hierbei bekomme ich den Fehler, dass die Vektorlängen der Funktion und des Anfangswertes nicht übereinstimmen.
Wenn ich für T einen einzelnen Wert einsetze, funktioniert es, aber natürlich nicht mit dem gewünschten Ergebnis. Kann man vielleicht eine Schleife nutzen?
Bin ich denn mit ODE-solver auf dem richtigen Pfad oder gibt es da eine andere Lösung?
Die beiden Vektoren haben in Wirklichkeit knapp 150 Elemente...ich habe sie aufgrund der Übersichtlichkeit auf 10 gekürzt.
Würde mich sehr freuen, wenn sich jemand findet, der eine Lösung für das Problem hat.
Viele Grüße, Tobi
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.10.2017, 14:40
Titel:
|
|
Hallo,
du musst das passende T heraussuchen, z.B. über Interpolation.
Dabei musst du aus der Anwendung heraus entscheiden, was eine sinnvolle Interpolationsmethode ist.
Grüße,
Harald
|
|
|
Lakitu |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2017, 15:41
Titel:
|
|
Hallo Harald,
damit funktioniert es ganz gut.
Vielen Dank für die schnelle Antwort
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.10.2017, 15:50
Titel:
|
|
Hallo,
"ganz gut" klingt nicht optimal. Was könnte denn besser sein?
Und wie gesagt, auf die richtige Interpolationsmethode achten...
Grüße,
Harald
|
|
|
Lakitu |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2017, 17:27
Titel:
|
|
Doch das läuft spitze. Habe mich da nicht deutlich ausgedrückt;)
Da ich ja genug Messdaten habe, ist eine lineare Interpolation völlig ausreichend!
Bin sehr erleichtert endlich eine Lösung gefunden zu haben.
Versuche allerdings gerade das System etwas zu erweitern und stehe schon wieder ein wenig auf dem Schlauch. Ich möchte, dass V=0 gilt, wenn T<650. Mit anderen Worten, soll die Startbedingung V0=0 erst dann gelten, wenn eine Temperatur 650 und die dazugehörige Zeit erreicht ist.
Habe es mal mit einer Schleife und einer if Bedingung versucht, was aber nicht den Anfangswert verschiebt, sondern nur einen Sprung der Funktion bei T=650 verursacht.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.10.2017, 08:33
Titel:
|
|
Hallo,
wäre es dann nicht sinnvoller, den T-Vektor vor dem Lösung der DGL entsprechend zu kürzen und timespan anzupassen?
Enthält dein tatsächlicher T-Vektor einen Wert, der genau 650 ist?
Grüße,
Harald
|
|
|
Lakitu |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 24.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.10.2017, 11:15
Titel:
|
|
Ja, so habe ich das jetzt auch gemacht. Jetzt habe ich das Ergebnis, was ich haben wollte. Bei meinen Messdaten habe ich keinen genauen Wert für 650. Aber ich habe für alle 3-4 Kelvin einen neuen Wert. Und 650°C ist nur eine grobe Richtung für den Start der Reaktion. Deswegen passt das so.
Vielen Dank nochmal für die Tipps. Das hat mir sehr weitergeholfen.
|
|
|
|
|
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.
|
|