Hi Guys, really need help.
I putting the system response here and the animation code.
So my question is how to connect the control-function with the parametric function of the graphic and then how to make an animation of the graphic so that according to the control-function the spring stretches or gets dense by moving hence and forth, very grateful for any help, I am very very new to Mathematica.
Even Help via Webex or Discord would be great,
-
the system response and control-function
k = 2;(Federkonstante)
m = 5;(Masse)
[Omega] = Sqrt[k/m];
F = 200;(Kraft die auf Masse wirkt);(DGL:= x’(t)=Ax(t)+u(t)B)
(Matrix A per Hand errechnet)
A = {{0, [Omega]}, {-[Omega], 0}};(Vektor B und ihre Transponierte)
B = {{0}, {1}};
BT = {0, 1};(Matrixelemente M(t))
f11[t_ ] := t/2 - Sin[2 Sqrt[k/m] t]/(4 Sqrt[k/m]);
f12[t_] := (Sin[Sqrt[k/m] t])^2/(2 Sqrt[k/m]);
f21[t_] := (Sin[Sqrt[k/m] t])^2/(2 Sqrt[k/m]);
f22[t_] := t/2 + Sin[2 Sqrt[k/m] t]/(4 Sqrt[k/m]);
(Matrix M(t) und ihre Inverse)
M[t_] := {{f11[t], f12[t]}, {f21[t], f22[t]}};
MI[t_] := Inverse[M[t]];(Anfangszustand)
a0 = {{10}, {0}};(Zielzustand)
z = {{0}, {0}};(feste Endzeit T)
T = 20;(e^tA)
e11[t_] := Cos[[Omega]*t];
e12[t_] := Sin[[Omega]*t];
e21[t_] := -Sin[[Omega]*t];
e22[t_] := Cos[[Omega]*t];
etA[t_] := {{e11[t], e12[t]}, {e21[t], e22[t]}};(e^tA^T)
em11[t_] := Cos[[Omega]*t];
em12[t_] := -Sin[[Omega]*t];
em21[t_] := Sin[[Omega]*t];
em22[t_] := Cos[[Omega]*t];
etAT[t_] := {{em11[t], em12[t]}, {em21[t], em22[t]}};(e^-tA^T)
etATi[t_] := Inverse[etAT[t]];(energieoptimale Steuerung)
c = MI[T] . (etATi[T] . z - a0);
u[t_] := BT . etATi[t] . c;(konstante Steuerung)
(KonstanteKontrollFunktion[t_]:=(-k/m).x[t])(Systemantwort:)
x[t_] := etA[t] . (a0 + M[t] . c);
NOW the following Code is/ should be the animation
Feder in German means Spring, I just noticed that my comments are in German ![]()
Feder = ParametricPlot[{t + Cos[3*t], 2*Sin[3*t]}, {t, 0, 4*Pi}];
Halterung =
Graphics[{Black, Polygon[{{-5, -5}, {-5, 5}, {-3, 5}, {-3, -5}}]}];
LinieFederAnfang = Graphics[Line[{{-3, 0}, {1, 0}}]];
LinieFederEnde = Graphics[Line[{{4*Pi + 1, 0}, {20, 0}}]];
Masse = Graphics[{LightBlue,
Polygon[{{20, -2.5}, {20, 2.5}, {25, 2.5}, {25, -2.5}}]}];
MasseGezogen =
Graphics[{LightBlue,
Polygon[{{30, -2.5}, {30, 2.5}, {35, 2.5}, {35, -2.5}}]}];
Boden = Graphics[{Green,
Polygon[{{-3, -5}, {-3, -2.5}, {40, -2.5}, {40, -5}}]}];
Show[Halterung, LinieFederAnfang, Feder, LinieFederEnde, Masse, Boden]