|
|||||||||||||||||||||||||||||
Die Bewegung wird durch ein nichtlineares Anfangswertproblem 2. Ordnung beschrieben: |
|||||||||||||||||||||||||||||
Die nachfolgend gelisteten Dateien S501.m und S501_xpunkt.m sind zum Download verfügbar: |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
Im Aufruf der Funktion zur Lösung des Anfangswertproblems (farblich hervorgehoben) wird auf die Datei S501_xpunkt als Ort der Definition der Differenzialgleichung angegeben: |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
Nach dem Starten von MATLAB wird File | Open gewählt und im Fenster “Open” (unter “Dateityp” sollte “All MATLAB Files” eingestellt sein) wird in das Verzeichnis gewechselt, in dem sich die Dateien S501.m und S501_xpunkt.m befindem. Doppelklick auf S501.m öffnet die Datei in einem neuen Fenster. In diesem Fenster wird Debug | Run gewählt. Möglicherweise öffnet sich ein Fenster “MATLAB Editor”, in dem man das Angebot “Change MATLAB current directory” annehmen sollte. Danach wird die Rechnung ausgeführt. Die mit plot ... eingeleitete Zeile am Ende führt zur graphischen Ausgabe des Bewegungsgesetzes (nebenstehende Abbildung). Bei einem Fall aus Höhe ξ = - 4.493 gelingt es der Masse gerade noch, sich an dem Lager “vorbeizudrängeln”. Die Geschwindigkeit wird vorübrgehend sehr klein, bis der Punkt passiert ist, an dem die Feder am stärksten zusammengedrückt ist.
|
|||||||||||||||||||||||||||||
Die Zeile, in der die MATLAB-Funktion odeset aufgerufen wird, ist zwingend, um korrekte Ergebnisse zu erzielen. Mit options = odeset('MaxStep',0.1); % Ohne Schrittweitensteuerung erhalten wir ein falsches Ergebnis (siehe MATLAB-Help) wird eine Möglichkeit genutzt, die sich fortpflanzenden Fehler in Grenzen zu halten (vgl. Seiten 497 und 498). In der einfachsten Aufrufvariante der Funktion ode45 brauchen diese Optionen nicht angegeben zu werden (sie müssen dann auch nicht mit odeset gesetzt werden). Wenn in der Datei S501.m die entsprechende Zeile in der einfacheren Form [t x] = ode45('S501_xpunkt', verwendet wird, arbeitet MATLAB mit den Default-Einstellungen. Für die Anfangswerte x0 = [-4.493; 0]; führt dies zu dem nebenstehend zu sehenden falschen Ergebnis (die numerischen Fehler führen dazu, dass sich die Masse nicht an der Feder “vorbeidrängeln” kann). Dass die Rechnung fehlerhaft ist, kann man natürlich kaum erkennen, wenn man das richtige Ergbnis nicht kennt. Man beachte deshalb unbedingt die Warnung auf Seite 498 unten. Manchmal sind fehlerhafte Ergebnisse allerdings sofort zu erkennen. Wenn man die gleiche Rechnung (mit den MATLAB-Default-Werten) mit den Anfangswerten x0 = [-4.5; 0]; ausführt, ergeben sich nebenstehend zu sehende Kurven: Die Masse schafft es (das ist richtig), sich bei ihrer Abwärtsbewegung an der Feder “vorbeizudrängeln”, auf dem Rückweg allerdings nicht mehr. Weil das mathematische Modell aber keine Reibung berücksichtigt (und somit keine Energieverluste entstehen), müsste sie stets die Anfangshöhe wieder erreichen. |
|||||||||||||||||||||||||||||
|