|
|
Zugriff auf Variable mit ode45 Befehl |
|
Maus419 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 17:38
Titel: Zugriff auf Variable mit ode45 Befehl
|
 |
Hey Leute, ich habe folgendes Problem.
Ich habe ein Script geschrieben was mir nach längerer Rechenzeit eine Matrix 'Sol' ausgibt, die ich als Koeffizienten einer Differentialgleichung verwenden möchte. In der einfachen Form:
dx=Sol*x
Die Elemente in Sol hängen auch vom Parameter t ab.
Meine Idee ist jetzt den ode45-befehl folgendermaßen zu verwenden. Ich schreibe wie üblich ein .m script das die Funktion für meine DGL enthält
und darauf will ich dann ganz normal mit dem folgendem Befehl zugreifen:
Mein Problem hier ist jedoch, dass ich die Variable "Sol", die die Koeffizienten enthält nur Workspace habe und die Funktion ode somit nicht darauf zugreifen kann. Jemand eine Idee wie man so etwas löst, bzw die Variable in die Funktion einlesen kann, damit der ode45-solver sie auswerten kann?
Schonmal besten Dank!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 18:07
Titel:
|
 |
|
|
Hase419 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 23:27
Titel:
|
 |
Ah ok, danke! Ich verstehe wie ich die anonymous function verwenden muss und kann damit ungekoppelte DGLs lösen, ich hab nur weiterhin ein Problem damit, mir so eine anonymous function eines Vektors zu definieren. Sprich der Form:
dx=Sol*x
wenn dx, und x jeweils vektoren/arrays sind und Sol eine Matrix ist. Gibt es da eine Möglichkeit?
Beste Grüße!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 09:32
Titel:
|
 |
Hallo,
es ist vollkommen egal, ob die Variablen Skalare oder Vektoren/Matrizen sind. Hier:
und die Funktion nimmt das als Eingabeargument entgegen. dx muss nicht vorbelegt werden - das ist nur bei dynamisch wachsenden Variablen notwendig.
Bei so einfachen Funktionen kann man das alternativ auch so lösen:
Grüße,
Harald
|
|
|
Hase419 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 10:17
Titel:
|
 |
Viele Dank für die ausführliche Antwort Harald! Deswegen ist es mir auch ein wenig peinlich, dass ich es immernoch nicht hinbekomme. Bei mir wachsen die Variablen in der Tat dynamisch, weswegen ich das dx in einer externen Funktion versuche vorzubelegen:
Mein Sol befindet sich im Workspace und hat beispielsweiße die Form
Darauf will ich jetzt mit dem Befehl zugreifen:
Dabei bekomme ich die Errormeldung:
Was ja auch logisch ist, da er Probleme mit dem "t" als symbolischen Ausdruck hat, wenn ich das Sol hier direkt in die Function schreibe, wie dort oben in der auskommentierten Zeile, bekomm ich problemlos eine Lösung. Nur in meinem eigentlichen Programm ist Sol ein sehr langer Ausdruck, das heißt ich brauche einen Weg um es aus dem Workspace irgendwie in der Funktion verwenden zu können. Verstehst du mein Problem?
Nochmals vielen Dank!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 20:33
Titel:
|
 |
Hallo,
es ist generell keine gute Idee, numerische und symbolische Berechnungen zu mischen.
Folgendes ginge z.B.:
mit
Grüße,
Harald
|
|
|
|
|
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 - 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.
|
|