kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Modellierung des linearen Schwingers mit dem ODE-Solver von Scilab

  • ODE steht für Ordinary Differential Equation - Gewöhnliche Differentialgleichung
  • Mit der Funktion ODE in Scilab ist es möglich System von Gewöhnlichen Differentialgleichungen zu integrieren.
  • Die Differentialgleichung für den linearen Schwinger haben wir gerade so umgeformt, dass sie mit dem ode-solver lösbar ist.
  • Sie besteht nun aus mehreren Gleichungen der Form:
  • dy/dt = f(y,t)
  • Die linke Seite dieses linearen Differentialgleichungssystems ist die erste zeitliche Ableitung des Vektors mit den Zustandsgrößen des Modells.
  • Bei unserem Seerosenteich wäre die Zustandsgröße die Seerosenteichfläche und die zeitliche Ableitung dA/dt
  • Bei dem Schwinger sind es die Geschwindigkeit v und der Weg y jeweils nach der Zeit abgeleitet.
  • Der ODE-Solver macht das gleiche, mit LDGLS, was wir mit Hilfe der Euler-Integration für die einfache DGL des Seerosenteiches gemacht haben:
  • Er integriert das LDGLS numerisch und liefert hier den Zeitverlauf für Weg und Geschwindigkeit.

Der Quellcode in Scilab

  • Die rechte Seite wird in einer Funktion definiert.
  • Sie heißt hier "rechteSeite" und wird dem Solver übergeben.
  • Die Funktion und die Anfangsbedingungen y0 bestimmen gemeinsam vollständig das LDGLS.
  • Daneben wird noch mit t0 und t dem Solver mitgeteilt, in welchen Zeitschritten er den Zeitverlauf bestimmen soll.
  • Gestartet wird das Skript mit exec schwingerode.sce im Scilab-Fenster.
m = 1.0;
C = 1.0;

function f = rechteSeite(t,y)
    A = [[0,-C/m];[1,0]];
    f = A*y; 
endfunction

t = linspace(0,30,3000);
y0 = [0,1]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

 

Code 0-1: Modell mit Scilab integriert, Skript-Programm im File schwingerode.sce

m = 1.0;
C = 1.0;

function f = rechteSeite(t,y)
    x = y(1,1);
    v = y(2,1);
    f(1,1) = v;
    f(2,1) = -(C/m)*x;
endfunction

t = linspace(0,30,3000);
y0 = [1,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

 

Code 0-1: Modell mit Scilab integriert, Variante ohne Matrixschreibweise vom 19.11.2013 - ACHTUNG: Reihenfolge der Gleichungen gegenüber oben vertauscht!

Modell und Integration mit Scilab: schwingerode.zip
Plot: x und v.

Bild 0-3: Plot: x und v.