DDBanner02

Zur Startseite

TM-aktuell

Nichtlineare gedämpfte Schwingung, Lösung mit Matlab

Aus der Differenzialgleichung zweiter Ordnung wird durch Einführen einer neuen Variablen ein Differenzialgleichungssystem 1. Ordnung.

Die nachfolgend gelisteten Dateien NlAWP.m und NlAWP_Dgl.m sind zum Download verfügbar:

% Anhang B: Nichtlineares Anfangswertproblem mit Daempfung

clear all;

options = odeset('MaxStep' , 0.1); % ... zwingend, um ausreichende Genaigkeit zu erreichen

x0   = [2.5 ; 0] ;  % Anfangswerte [x ; v]
tspan = [0 100]  ;  % Zeitintervall

% Integration des Anfangswertproblems:
[t x] = ode45 ('NlAWP_Dgl', tspan , x0 , options) ;

% Grafische Ausgabe von x und v, zunaechst "Sortieren der Ergebnisse":

xi = [1 0] * x' ;  % x' ist die transponierte Matrix der Ergebnisse,
vi = [0 1] * x' ;  % xi und vi sind Vektoren

subplot(3,1,1) ; plot (t , xi) , grid on , title  ('Weg-Zeit-Diagramm:')
subplot(3,1,2) ; plot (t , vi) , grid on , title  ('Geschwindigkeits-Zeit-Diagramm:')
subplot(3,1,3) ; plot (xi , vi) , grid on , title  ('Geschwindigkeits-Weg-Diagramm:')
 

Im Aufruf der Funktion zur Lösung des Anfangswertproblems (farblich hervorgehoben) wird auf die Datei NlAWP_Dgl.m als Ort der Definition des Differenzialgleichungssystems angegeben:

% Anhang B: Nichtlineares Anfangswertproblem mit Daempfung

function xStrich = xStrich_Masse (t , x)

% Parameter:
mgdca = 0.01 ;             % m * g / (c * a)
bda  = 1.2  ;             % b / a
kdwmc = 0.1  ;             % k / sqrt (m * c)

% Berechnung der Ableitungen (als Matrix xStrich = [x(1)Strich x(2)Strich]
% mit x(1)=x und x(2)=v):

xStrich = [x(2) ; - kdwmc * x(2) - 2 * (sqrt(1 + x(1)^2) - bda) * x(1) / sqrt(1 + x(1)^2) - mgdca] ;

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 NlAWP.m und NlAWP_Dgl.m befindem. Doppelklick auf NlAWP.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 subplot ... eingeleitete Zeile am Ende führen zur graphischen Ausgabe der Bewegungsgesetze (nebenstehende Abbildung).

Die Masse kommt im negativen Bereich zur Ruhe. Die Endposition entspricht einer statischen Ruhelage des Systems .

Bei einer nur geringfügigen Änderung der Anfangsauslenkung von
x0 = 2,5 auf  x0 = 2,49  ergibt sich eine andere Endlage der Masse. Bei einer Änderung der entsprechenden Zeile in der Datei NlAWP.m auf

x0 = [2.49 ; 0] ;  % Anfangswerte [x ; v]

erhält man folgendes Ergebnis (hier wird nur die Weg-Zeit-Funktion gezeigt):

Man sollte noch etwas experimentieren. Mit der Zeile

x0   = [2.491 ; 0] ;  % Anfangswerte [x ; v]

in der Datei NlAWP.m ergibt sich wieder eine Endlage im positiven Bereich. Das nebenstehende Diagramm zeigt dies, und es wird auch deutlich, warum sich bei so geringfügigen Änderungen ganz andere Bewegungsverläufe ergeben: In der Nähe der instabilen statischen Gleichgewichtslage kommt die Masse fast zum Stillstand.

Natürlich sind solche Situationen im Bewegungsverlauf ganz besonders kritische Stellen für die Näherungslösung, denn ganz kleine Fehler können zu einem nachfolgend völlig falschen Bewegungsvelauf führen.

 Deshalb ist für dieses Problem das Setzen der entsprechenden Optionen mit der MATLAB-odeset-Funktion zwingend. Ohne die Zeile

options = odeset('MaxStep' , 0.1);

kann die MATLAB-ode45-Funktion mit den Standardeinstellungen entsprechend

[t x] = ode45 ('NlAWP_Dgl', tspan , x0) ;

aufgerufen werden.

Dies führt zu falschen Ergebnissen, wie für die nachfolgend gezeigte Rechnung besonders deutlich wird:

 

Homepage TM-aktuell

www.JürgenDankert.de

D

nkert.de