2014-03-26 76 views
0

我從MATLAB使用lyap()函數產生一個穩定的控制器 我的代碼得到一個奇怪的答案功能錯誤答案()在MATLAB

m=1;c=2;k=1; 
A=[0 1;-k/m -c/m] 
B=[0 1/m]' 
C=[1 0;0 1]; 
D=[0 0]'; 
u=2; 
Q=eye(2); 
ro=60; 
k=0.99*ro; 
P=lyap(A,Q) 

什麼,我得到的是

P = 

    1.5000 -0.5000 
    -0.5000 0.5000 

這是解決當它給了我一個不穩定的控制器, 而孤獨,我得到

p1 = 

    1.5000 0.5000 
    0.5000 0.5000 

這是一個穩定的控制器。 有什麼建議嗎?

由於

+0

我認爲你的解p1是錯誤的,將p1代入Lyapunov矩陣等式中:'A * P + P * A'+ Q'不會導致零矩陣 – RTL

+0

,所以它們是這個等式的lyap函數嗎? – user1

+0

好的條件被違反,特徵值加到零,因此沒有一個唯一的解決方案 – RTL

回答

1

Mathworks Documentation

限制:

連續Lyapunov方程具有唯一的解決方案,如果本徵值A1,A2,...,一個A和B1,B2的,.. 。,B的BN滿足

AI + BJ〜= 0對於所有的i,J

,並從值

eig(A) 
    ans = 
    -1 
    -1 
eig(Q) 
ans = 
    1 
    1 

我們可以看到這些相加爲零,因而沒有對這些輸入

但是我不知道爲什麼,不產生錯誤消息獨特的解決方案,可能是時間報告bug

+0

這也可以通過採用'eig(P)'和'eig(p1)'來得到證實,它給出了相同的結果。 – patrik