遅延付きのフィードバックを使って振動を減らす
時間遅延を意図的に制御器に加えて,系の性能を改善することができる.以下のアクティブ吸振器は,遅延状態フィードバックを使って制御することができる.
{eq1, eq2} = {u[t] + (Subscript[k, 1] + Subscript[k, 2]) Subscript[x, 1][t] - Subscript[k, 2] Subscript[x, 2][t] + (Subscript[b, 1] + Subscript[b, 2]) Derivative[1][Subscript[x, 1]][t] - Subscript[b, 2] Derivative[1][Subscript[x, 2]][t] + Subscript[m, 1]Derivative[2][Subscript[x, 1]][t] == 0, -u[t] + Subscript[k, 2] (-Subscript[x, 1][t] + Subscript[x, 2][t]) + Subscript[b, 2] (-Derivative[1][Subscript[x, 1]][t] + Derivative[1][Subscript[x, 2]][t]) + Subscript[m, 2] Derivative[2][Subscript[x, 2]][t] == 0};absorber = StateSpaceModel[{eq1, eq2}, {Subscript[x, 1][t], Subscript[x, 1]'[t], Subscript[x, 2][t], Subscript[x, 2]'[t]}, {u[t]}, {Subscript[x, 1][t]}, t];csys = SystemsModelStateFeedbackConnect[absorber, {{g SystemsModelDelay[τ]}}, {1}, {1}]values = {Subscript[k, 2] -> .1, Subscript[b, 2] -> .02, Subscript[m, 2] -> .1, Subscript[m, 1] -> 1, Subscript[b, 1] -> .05, Subscript[k, 1] -> 1, g -> 0.043};ynodelay = OutputResponse[csys /. values /. τ -> 0, Sin[ 1.1 t], {t, 0, 80}];
ydelay = OutputResponse[csys /. values /. τ -> 1.82, Sin[1.1t], {t, 0, 80}];Plot[{ynodelay, ydelay}, {t, 0, 80}, PlotRange -> All, PlotStyle -> {Purple, Thick}, PlotLegends -> {"遅延なし", "遅延あり"}, ImageSize -> Medium]