C=[0 0 1 0]よりx3のみ観測しているので、誤差は(初期を除いて)生じていない。
M1=0.5; M2=1; k = 2; mu=1; A = [0 1 0 0 -k/M1 -mu/M1 k/M1 mu/M1 0 0 0 1 k/M2 mu/M2 -k/M2 -mu/M2 ]; B = [0 1/M1 0 0]; C = [0 0 1 0]; p = [-2+2j -2-2j -2+j -2-j]; K = -acker(A,B,p) M0 = [A B C 0]; H = [-K 1]*inv(M0)*[zeros(4,1);1] disp('eigen A+B*K') eig(A+B*K) q=[-4+4j -4-4j -4+2j -4-2j]; L = -acker(A',C',q)' disp('eigen A+L*C') eig(A+L*C) Acl = [ A B*K -L*C A+B*K+L*C ]; disp('eigen Acl'); eig(Acl)
N = input('N='); M1v = N*M1; M2v=N*M2; Av = [0 1 0 0 -k/M1v -mu/M1v k/M1v mu/M1v 0 0 0 1 k/M2v mu/M2v -k/M2v -mu/M2v ]; Bv = [0 1/M1v 0 0]'; x0 = [-0.5 0 0.5 0]';
close all; subplot(4,1,1) hold on; plot(t,x(:,1)) plot(t,x_hat(:,1)) subplot(4,1,2) hold on; plot(t,x(:,2)) plot(t,x_hat(:,2)) subplot(4,1,3) hold on; plot(t,x(:,3)) plot(t,x_hat(:,3)) subplot(4,1,4) hold on; plot(t,x(:,4)) plot(t,x_hat(:,4))