|
|
ode-Funktion bei wechselnden Variablen |
|
Traumt@nzer |

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 04.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2012, 11:33
Titel: ode-Funktion bei wechselnden Variablen
|
 |
|
 |
|
Hallo Foren-Helfer,
ich habe ein Problem bezüglich einer ode-Funktion bei wechselnden Variablen.
Ich habe ein Zweimassenschwinger mit je einer Masse, Feder und Dämpfer (x1,m1,c1,b1; xA,mA,cA,bA),also ein DGL-System mit 2 DGLs.
Die Anfangsbedingungen sind x1,0, xA,0, x1,0 =0 und xA,0 ungleich 0. Es gilt m1<<mA.
Nun zu meiner Problematik. Bei der maximalen Auslenkung soll sich die Feder c1 nicht mehr ausdehnen. D.h. ich gebe durch eine if-Funktion vor, dass der Dämpfer von b1,0=0 auf einen endlich hohen Wert gesetzt wird und so die Feder festhalten soll. Diese Methode klappt bei einem Einmassenschwinger wunderbar, bei einem Zweimassenschwinger aber nicht mehr.
Bei vielen odes bekomme ich gar keine Ergebnisse in absehbarer Zeit (5 min), bei ode23 dehnt sich die Feder wieder aus.
Ich habe odes für steife und nicht steife DGLS (explizite / implizite Verfahren) ausprobiert; habe RelTol und AbsTol verkleinert. Ohne Erfolg.
Kann mir jemand sagen worin das Lösungsproblem besteht und wie ich das Problem angehen kann!? Durch Recherchen nehme ich an, dass der Integrator ein Problem mit dem Variablensprung hat, da bei kleinen Schrittweiten und Variablenwechsel der Integrator sich totrechnet!? Kann ich das verhindern? Ich habe etwas von einem Event Breaker gelesen.
Ich habe auch versucht die Federsteifigkeit durch eine if-Funktion drastisch zu erhöhen, dies funktioniert aber nicht einmal bei dem Einmassenschwinger (Feder dehnt sich wieder aus).
Vielen Dank für eure Hilfe.
Robert
|
|
|
|
|
Traumt@nzer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 04.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2012, 11:57
Titel:
|
 |
Was noch anzumerken ist, dass bei geringen Variablensprung ode23 ein realistisches Ergebnis liefert. Nur reicht der Dämpferwert nicht aus um die Feder festzuhalten. Der nächst höhere Wert (eine Stelle mehr) kann dann schon nicht mehr berechnet werden.
VG Robert
|
|
|
Thomas84 |

Forum-Meister
|
 |
Beiträge: 546
|
 |
|
 |
Anmeldedatum: 10.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2012, 12:58
Titel:
|
 |
|
|
Traumt@nzer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 04.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.07.2012, 13:28
Titel:
|
 |
Danke schon einmal. Ich schaue mir den Link an.
Kurzgefasst würde ich gerne wissen, warum MATLAB bei einem Variablensprung nicht weiterechnen kann bzw. was ich als Abhilfe tun kann.
Danke und VG Robert
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.07.2012, 14:22
Titel:
|
 |
Hallo Traumt@nzer,
Intergratoren benötigen stetig ableitbare Funktionen. Man kann zwar Funktionen mit Sprungstellen als Input verwenden, aber dann wird die Schrittweitensteuerung des Integrators heftig verwirrt und in der Not die Schrittweite immer kleiner wählen, bis die Rundungsfehler größer sind als der Sprung selbst. Der Integrator wurstelt sich also durch.
Sinnvoll, also aus wissenschaftlicher Sicht die einzig zuverlässige Lösung, ist es, den Integerator beim Sprung zu stoppen (mit einer event-Funktion) und die End-Werte als Startwerte einer neuen Integration mit einer geänderten funktion zu starten.
Gruß, Jan
|
|
|
Traumt@nzer |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 04.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.10.2012, 12:43
Titel:
|
 |
Hat wunderbar mit der Event-Funtion funktioniert.
Danke an die Helfer
|
|
|
|
|
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.
|
|