Ich habe Zweifel, wie man ode45
verwendet, da ich weiß, dass es eine interne variable Schrittgröße verwendet. Zum Beispiel habe ich in meinem speziellen Fall ein Modell von ODEs und verwende eine Abtastzeit von 5 Minuten. Daher innerhalb meiner Hauptsimulationsschleife habe ich die folgende Zeile die Ausgabe von meinem Modell zu erhalten, indem es ode45
unter Verwendung der Lösung:Matlab ode45 interner Schritt
[T,X] = ode45(@(t,x) model(t,x,u,data),[t t+scenario.Ts],x0);
Wo u
Eingänge des Modells sind, data
eine Struktur mit Parametern ist, werden x0
die Anfangsbedingungen beim aktuellen Zeitschritt und ist die Anfangs- und Endzeit. Mein Zweifel ist, dass zwischen t
und t+scenario.Ts
der ode45
-solver variable Zeitschritte verwendet und somit die Art und Weise, wie ich meine Eingabeaktionen einführe, u
beeinflusst werden kann. Daher verstehe ich, dass ein Wert eines bestimmten Eingangs u
durch die internen Zeitschritte zwischen konstant gehalten wird. Wenn ich zum Beispiel ein Flussmittel, d. H. Wasser in einen Tank, habe, hat der Zeitschritt eine direkte Auswirkung auf diese u
.
Lassen Sie mich das ein wenig mehr mit einem Beispiel erklären. Wenn über Ich weiß, dass u(1) = 10
. Dann sollte der reale Eingang, den ich verwenden sollte, u(1)=10/(# of time steps between [t0 tend])
sein. Da der interne Schritt jedoch variabel ist, welchen Eingang muss ich verwenden?
Ich hoffe, Sie verstehen mein Problem und können mir helfen.
@ykaragol Wenn Sie den Code in einem [suggest edit] (http://stackoverflow.com/review/suggested-edits/12534423) formatieren, formatieren Sie ihn bitte das nächste Mal. Sonst könnte Ihre Bearbeitung abgelehnt werden, da es keinerlei Verbesserung gibt ... – Matt
Schwer zu sagen, ohne den Code für 'model' zu sehen (oder ein repräsentatives ausführbares Beispiel). Es sieht so aus, als ob Sie versuchen, einen Parameter in Bezug auf die Zeit zu variieren. Sie können ein steifes System erstellen, das zu ineffizienten und sogar falschen Ergebnissen führen kann. Ihre Modellfunktion sollte nicht von der Anzahl der Zeitschritte abhängig sein. 'u' sollte eine Funktion von' t' oder von Ihrem Zustandsvektor 'x' sein. – horchler