CT52 低次元化

Home Work

[P] もし状態変数の一部が観測変数そのものであれば、状態オブザーバは既知の観測変数も推定しており、無駄なことをしているというのが、低次元化の動機かな?

[M] 出力方程式y=Cxの他に、別の補完的かつ仮想的な観測方程式z=Uxを考えて、これを推定する仕組みを導入したわけだよね。

[C] 状態フィードバックu=-Fxの実施のために、状態オブザーバの出力を用いるのであれば、一気にu=-Fxそのものを推定することも考えられているよ。

Flipped Classroom 5.2
[1]  図5.4の左図は観測変数がそのままでており、右図は観測できない状態変数を推定する様子を示しています。ここで、低次元化されたオブザーバは観測出力からの直達項の影響を受けていることに注意してください。

訂正 図5.4を出力するProgram 52は、最新のものではありませんでした。最新のp52a.m、p52a.sceを入手してください。図5.4はOKです。
MATLAB
%MATLAB: p52a.m (2024/5/1修正)
Tm=0.01; KE=0.05;
x0=[1;10];
t=0:0.001:0.05;
[t1,x1]=ode45(@(t,x) [0 1; 0 -1/Tm]*x+[0;1/Tm/KE],t,x0);
%-----Part 1
alpha=1.2
L=-(1-alpha)/Tm;
%[t2,x2]=ode45(@(t,x) (-1/Tm-L)*x,t,-x0);
[t2,x2]=ode45(@(t,x) (-1/Tm-L)*x,t,-[-L 1]*x0);
%-----Part 2
alpha=1.8
L=-(1-alpha)/Tm;
%[t3,x3]=ode45(@(t,x) (-1/Tm-L)*x,t,-x0);
[t3,x3]=ode45(@(t,x) (-1/Tm-L)*x,t,-[-L 1]*x0);
%-----
subplot(121), plot(t,x1(:,1)), hold on
subplot(121), plot(t,x1(:,1),'-.')
subplot(121), plot(t,x1(:,1),'--')
grid, axis([0 0.05 0 2])
legend('theta','alpha=1.2','alpha=1.8');
xlabel('t'), ylabel('theta(t)')
subplot(122), plot(t,x1(:,2)), hold on
%subplot(122), plot(t,x1(:,2)+x2(:,2),'-.')
%subplot(122), plot(t,x1(:,2)+x3(:,2),'--')
subplot(122), plot(t,x1(:,2)+x2,'-.')
subplot(122), plot(t,x1(:,2)+x3,'--')
%grid, axis([0 0.05 0 30])
grid, axis([0 0.05 0 80])
legend('omega','alpha=1.2','alpha=1.8');
xlabel('t'), ylabel('omega(t)')
SCILAB
//SCILAB: p52a.sce (2024/5/1修正)
Tm=0.01; KE=0.05;
function dx=f1(t,x),dx=[0 1; 0 -1/Tm]*x+[0;1/Tm/KE], endfunction
x0=[1;10];
t0=0; t=0:0.001:0.05;
x1=ode(x0,t0,t,f1);
//-----Part 1
alpha=1.2
L=-(1-alpha)/Tm;
function dx=f2(t,x),dx=(-1/Tm-L)*x, endfunction
//x2=ode(-x0,t0,t,f2);
x2=ode(-[-L 1]*x0,t0,t,f2);
//-----Part 2
alpha=1.8
L=-(1-alpha)/Tm;
//x3=ode(-x0,t0,t,f2);
x3=ode(-[-L 1]*x0,t0,t,f2);
//-----
subplot(121),plot(t,x1(1,:))
subplot(121),plot(t,x1(1,:),'-.')
subplot(121),plot(t,x1(1,:),'--')
mtlb_grid, mtlb_axis([0 0.05 0 2])
legend(['theta';'alpha=1.2';'alpha=1.8']);
xlabel('t'), ylabel('theta(t)')
subplot(122),plot(t,x1(2,:))
//subplot(122),plot(t,x1(2,:)+x2(2,:),'-.')
//subplot(122),plot(t,x1(2,:)+x3(2,:),'--')
subplot(122),plot(t,x1(2,:)+x2,'-.')
subplot(122),plot(t,x1(2,:)+x3,'--')
//mtlb_grid, mtlb_axis([0 0.05 0 30])
mtlb_grid, mtlb_axis([0 0.05 0 80])
xlabel('t'), ylabel('omega(t)')
legend(['omega';'alpha=1.2';'alpha=1.8']);

[2] (5.23)と(5.24)はそのままで、(5.26)が次式となります。

\displaystyle{(1)\quad \hat{C}U+\hat{D}C=K }