[英]Find the all elements of unknown matrix in MATLAB?
我有一個 4x4 矩陣,我必須求解這個 lyapnov 方程並找到滿足以下方程的未知矩陣。
a = [0 1 0 0;0 0 -1 0;0 0 0 1;0 0 5 0];
f = [-1 1 0 0;-1 -1 0 0;0 0 -1.5 0.5;0 0 -0.5 -1.5];
b = [0;1;0;-2];
k = [1 0 1 0];
給定方程a t - tf = b k。
a*t - t*f = b*k ;
其中 t = 4x4 未知矩陣。 你能幫我找到矩陣t嗎?
您還可以使用符號數學來創建線性方程組,然后求解該系統:
% Your variables
a = [0 1 0 0;0 0 -1 0;0 0 0 1;0 0 5 0];
f = [-1 1 0 0;-1 -1 0 0;0 0 -1.5 0.5;0 0 -0.5 -1.5];
b = [0;1;0;-2];
k = [1 0 1 0];
% The unknows:
t = sym('t', [4 4]);
% Create the symbolic system of linear equation
eq = a*t - t*f == b*k;
% Equation to matrix
[A,b] = equationsToMatrix(eq);
% Solve the system and get a numeric solution
sol = double(reshape(A\b,[4,4])).'
% sol =
%
% 0.0690 -0.3276 -0.0853 -0.1973
% 0.2586 0.3966 0.2267 0.2533
% -0.3448 0.1379 -0.5333 0.2667
% 0.2069 -0.4828 0.6667 -0.6667
你應該知道矩陣f
是可逆的,我們可以像下面這樣使用dlyap
t = dlyap(a,inv(f),-b*k/f)
或更簡單的
t = lyap(a,-f,-b*k)
這使
t =
0.0690 -0.3276 -0.0853 -0.1973
0.2586 0.3966 0.2267 0.2533
-0.3448 0.1379 -0.5333 0.2667
0.2069 -0.4828 0.6667 -0.6667
為了驗證這一點
>> a*t-t*f-b*k
ans =
1.0e-15 *
0 0 0.0555 0
0 0 0 -0.0555
0.0833 0 0.1110 0
0 0.1110 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.