This i smy matlab code
clear; close; clc;syms a1_head a2_head b hstar %Parameter Massa
m1 = 8095; % massa train set 1 dalam kg
m2 = 8500; % massa train set 2 dalam kg
g = 10;c_0_1 = 0.01176;c_1_1 = 0.00077616;c_2_1 = 4.48 ;c_0_2 = 0.01176 ;c_1_2 = 0.00077616;c_2_2 = 4.48;v_0 = 300;hstar = 120;a2_heada_1 = -1./m1.*(c_1_1 + 2.*c_2_1.*v_0); a_2 = -1./m2.*(c_1_2 + 2.*c_2_2.*v_0); a_1_head = 1-(a_1.*hstar);a_2_head = 1-(a_2.*hstar);b = 1;% Model data
A = sym(zeros(4,4));A(1,2) = a_1_head;A(3,2) = (a_2_head) - 1; A(3,4) = a_2_head;display(A);B = sym(zeros(4,2));B(1,1) = -b*hstar;B(2,1) = b;B(3,2) = -b*hstar ;B(4,1) = -b; B(4,2) = b;display(B);% Q and R matrices for ARE
Q = sym(eye(4)); display(Q);R = 1;% Matrix S to find
svar = sym('s',[1 16]);S = [svar(1:4); svar(5:8); svar(9:12); svar(13:16)];S(2,1) = svar(2);S(2,2) = svar(1);S(2,4) = svar(2);S(3,1) = svar(3);S(3,2) = svar(7);S(3,3) = svar(1);S(4,1) = svar(4);S(4,2) = svar(2);S(4,3) = svar(12);S(4,4) = svar(1);display(S);% LHS of ARE: A'*S + S*A' - S*B*Rinv*B'*S
left_ARE = transpose(A)*S + S*A - S*B*inv(R)*transpose(B)*S; display(left_ARE);% RHS of ARE: A'*S + S*A' - S*B*Rinv*B'*S
right_ARE = -Q;display(right_ARE);% Find S in ARE
[Sol_S] = solve(left_ARE == right_ARE,'Real',true)
from my code get S symmetric 4×4
S = [ s1, s2, s3, s4][ s2, s1, s7, s2][ s3, s7, s1, s12][ s4, s2, s12, s1]
I use solve function like this to fidn all element S
% Find S in ARE[Sol_S] = solve(left_ARE == right_ARE,'Real',true)
But cannot get all element S, I get error like this
Sol_S = struct with fields: s1: [0×1 sym] s2: [0×1 sym] s3: [0×1 sym] s4: [0×1 sym] s7: [0×1 sym] s12: [0×1 sym]
Please help me to find all element S
Q and R in this code can change because i want find eigenvalue in S matrix is positive.
Best Answer