Parameteridentifikation bei einem linearen dynamischen System mittels Kleinster Quadrate Methode
(EN google-translate)
(PL google-translate)
Es wird ein lineares Feder-Masse-Dämpfer-System modelliert und simuliert und dann versucht, mittels Kleinster Quadrate Methode die Modellparameter aus den Simulationsdaten wieder zu gewinnen.
Gegeben sei folgendes System:
$ m \ddot x + D \dot x + C x = F $
Formel 0-1: Lineares Feder-Masse-Dämpfer-System mit äußerer Kraft F.
Gewinnung fiktiver Messdaten mittels Simulation
Für m=2kg, D=0.5Ns/m und C=1N/m wird für das System die Sprungantwort mit F=1N simuliert und der Verlauf von Auslenkung, Geschwindigkeit und Beschleunigung aufgezeichnet:
clear;
m=2.0;
D=0.5;
C=1.0;
F=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-(D/m)*v+F/m;
endfunction
t=0:0.01:4;
y0=[0;0];
t0=0;
y = ode(y0,t0,t,rechteSeite);
//Rekonstruktion des Verlaufs der Beschleunigung:
a = -(C/m).*y(1,:)-(D/m).*y(2,:)+F/m;
plot(t,y(1,:),'blu',t,y(2,:),'gre',t,a,'red');
Code 0-1: Bereitstellung der Bewegungsdaten durch Simulation.
Bild 0-1: Verlauf von Auslenkung (blau), Geschwindigkeit (grün) und Beschleunigung (rot).
Herstellen der Matrix B und des Vektors d um LSQ anwenden zu können
$ B \cdot \left[\begin{array}{cc}m \\ D \\ C\end{array}\right] + \vec d = \vec r $
Formel 0-2: B enthält spaltenweise die Verläufe der Beschleunigung a & der Geschwindigkeit v und der Auslenkung x. d enthält zu jedem Zeitpunkt die negative Kraft F & also -1.
//Herstellen der Matrix B und des Vektors d zeilen_spalten = size(t'); zeilen = zeilen_spalten(1); B = [a',y(2,:)',y(1,:)']; d = -F*ones(zeilen,1); c = lsq(B,-d)
Code 0-2: Bereitstellung der "Messwerte" und Anwendung der Kleinste Quadrate Methode.
Bild 0-2: ...liefert (rekonstruiert) die fraglichen Parameter.