Ich habe wieder einmal ein Problem mit dem ode45 Solver. Diesmal möchte ich ein einfaches linearisiertes DGL-System lösen.
Allerdings kommt ziemlicher Müll dabei raus.
Egal welche linearen DGL-Systeme ich mit dem Solver zu lösen versuche, alle Kurven sehen identisch aus, die Lösungswerte sind zunächst Null und steigen zum Ende der Simulation ins Unermessliche.
Hier ein kleines Beispiel. Über Hilfe wäre ich euch sehr dankbar.
Code:
% Parameter function testlin()
tspan= [020];
dt=0.01;
u=1.5;
Das lineare DGL System 1. Ordnung was ich darstellen möchte, ist eine einfache Positionsbestimmung.
Als Differenzengleichung habe ich diese einfach in einer For-Schleife gelöst da es ein wirklich einfaches system ist habe ich halt immer den letzten wert wieder in das DGL system reingeschoben und das was daraus kommt, sieht meiner Meinung nach richtiger aus als das was der Solver abliefert. Da u konstant ist steigt der wert halt immer weiter an was er ja auch soll. Stabil ist das System auch nicht. Aber muss es das sein? Der Solver soll es doch bloß lösen.
Nur das Ergebnis von oben durch den Solver explodiert ja förmlich. Zudem sind wie gesagt alle meine linearen Beispiele die ich Versuche Kann man denn lineare systeme überhaupt mit Solver lösen?
Code:
%% Deklarieren der Metavariablen
tspan= 20;
dt=0.01;
falls es "von oben heraub" auf dich gewirkt hat, tuts mir leid.
Zurück zum Problem:
Der solver kann natürlich auch instabile Differentialgleichungen lösen. Du bekommst halt dann instabile Lösungen , genauso wie du sie hast.
Das ganze hat nur einen Haken: Bei steigenden exp-funktionen werden die zahlen sehr schnell sehr groß. Bei zu langer simulationsdauer gibt dir das matlab bekannt und verabschiedet sich aus der Simulation. Das ist bei dir nach 20 Sekunden jedoch nicht der Fall.
Deine Lösungen sind halt steigende exp-Funktionen. Das passt schon.
Versuch doch zuerst mal ein simpleres problem:
nimm einfach mal
x'=3*x das kansnt du zm beispiel durch händisches integrieren analytisch lösen, du kommst dann auf a*e^(3*t) (über den vorfaktor bin ich mir gerade nicht sicher,müsst es händisch durchrechnen)
wenn du das dann mit ode45 löst,hast du auch eine steigende e-funktion.
Nochmals zusammengefasst: Deine Lösungen sind instabil,und genau die bekommst ja von ode45 zurück.
Warum akzeptierst du diese Lösungen nicht ?
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
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.