This is my 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;a_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 = sym(zeros(2,2)); R(1,:) = [1 2]; R(2,:) = [2 3]; display(R);% 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: -Q
right_ARE = -Q;display(right_ARE);% subs(left_ARE,{s1, s2, s3}, {1, 5, 10})
% Find S in ARE
syms s1 s2 s3 s4 s7 s12[Sol_S] = solve(left_ARE == right_ARE,s1,s2,s3,s4,s7,s12,'Real',true,'returnconditions',true)
The result 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]
I want to find my value s using this code
D = [s1 s2 s3 s4 s7 s12];D = [S.s1 S.s2 S.s3 S.s4 S.s7 S.s12];
But it said
Error using sym/subsrefToo many output arguments.Error in ARE (line 78)D = [S.s1 S.s2 S.s3 S.s4 S.s7 S.s12];
Best Answer