Input variable value to matrix

2 次查看(过去 30 天)
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(zeros(4,4)); Q(1,:) = [1578 1200 1300 1400]; Q(2,:) = [2985 1578 2985 2985]; Q(3,:) = [2000 2100 1578 2300]; Q(4,:) = [1310 1330 1350 1578]; display(Q);
% R = sym(zeros(2,2)); R(1,:) = [165765 995000]; R(2,:) = [995000 150965]; display(R);
% Q and R matrices for ARE
Q = sym(zeros(4,4)); Q(1,:) = [10 1 1 1]; Q(2,:) = [1 10 1 1]; Q(3,:) = [1 1 10 1]; Q(4,:) = [1 1 1 10]; display(Q);
R = sym(zeros(2,2)); R(1,:) = [1 2]; R(2,:) = [2 3]; display(R);
% % % S matrix Value
% Element Matriks S Value
s1 = 1;
s2 = 2;
s3 = 3;
s4 = 4;
% 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);
s1 = 1;
s2 = 5;
s3 = 10;
i want to input variabel value
s1 = 1;
s2 = 5;
s3 = 10;
to the left_ARE matrix but the problem when i write the s1-s3 value, the variable in left_ARE still not change
my left_ARE matrix
left_ARE =
[ s4*(600*s1 - 5*s2 - 360*s3 + 8*s4) - s2*(360*s1 - 3*s2 - 240*s3 + 5*s4) - s3*(28800*s1 - 240*s2 - 14400*s3 + 360*s4) + s1*(43200*s1 - 360*s2 - 28800*s3 + 600*s4), (2874340168023969*s1)/70368744177664 + (2670370432474805*s3)/70368744177664 - s1*(360*s1 - 3*s2 - 240*s3 + 5*s4) + s2*(600*s1 - 5*s2 - 360*s3 + 8*s4) - s7*(28800*s1 - 240*s2 - 14400*s3 + 360*s4) + s2*(43200*s1 - 360*s2 - 28800*s3 + 600*s4), s12*(600*s1 - 5*s2 - 360*s3 + 8*s4) - s7*(360*s1 - 3*s2 - 240*s3 + 5*s4) - s1*(28800*s1 - 240*s2 - 14400*s3 + 360*s4) + s3*(43200*s1 - 360*s2 - 28800*s3 + 600*s4), (2740739176652469*s3)/70368744177664 - s2*(360*s1 - 3*s2 - 240*s3 + 5*s4) + s1*(600*s1 - 5*s2 - 360*s3 + 8*s4) - s12*(28800*s1 - 240*s2 - 14400*s3 + 360*s4) + s4*(43200*s1 - 360*s2 - 28800*s3 + 600*s4)]
[ (2874340168023969*s1)/70368744177664 + (2670370432474805*s3)/70368744177664 + s2*(3*s1 - 365*s2 + 240*s7) - s4*(5*s1 - 608*s2 + 360*s7) + s3*(240*s1 - 29160*s2 + 14400*s7) - s1*(360*s1 - 43800*s2 + 28800*s7), (2874340168023969*s2)/35184372088832 + (2670370432474805*s7)/35184372088832 + s1*(3*s1 - 365*s2 + 240*s7) - s2*(5*s1 - 608*s2 + 360*s7) + s7*(240*s1 - 29160*s2 + 14400*s7) - s2*(360*s1 - 43800*s2 + 28800*s7), (2670370432474805*s1)/70368744177664 + (2874340168023969*s3)/70368744177664 + s7*(3*s1 - 365*s2 + 240*s7) - s12*(5*s1 - 608*s2 + 360*s7) + s1*(240*s1 - 29160*s2 + 14400*s7) - s3*(360*s1 - 43800*s2 + 28800*s7), (2874340168023969*s4)/70368744177664 + (2740739176652469*s7)/70368744177664 + (2670370432474805*s12)/70368744177664 + s2*(3*s1 - 365*s2 + 240*s7) - s1*(5*s1 - 608*s2 + 360*s7) + s12*(240*s1 - 29160*s2 + 14400*s7) - s4*(360*s1 - 43800*s2 + 28800*s7)]
[ s2*(240*s1 - 360*s3 + 3*s7 - 5*s12) - s4*(360*s1 - 600*s3 + 5*s7 - 8*s12) + s3*(14400*s1 - 28800*s3 + 240*s7 - 360*s12) - s1*(28800*s1 - 43200*s3 + 360*s7 - 600*s12), (2670370432474805*s1)/70368744177664 + (2874340168023969*s3)/70368744177664 + s1*(240*s1 - 360*s3 + 3*s7 - 5*s12) - s2*(360*s1 - 600*s3 + 5*s7 - 8*s12) + s7*(14400*s1 - 28800*s3 + 240*s7 - 360*s12) - s2*(28800*s1 - 43200*s3 + 360*s7 - 600*s12), s7*(240*s1 - 360*s3 + 3*s7 - 5*s12) - s12*(360*s1 - 600*s3 + 5*s7 - 8*s12) + s1*(14400*s1 - 28800*s3 + 240*s7 - 360*s12) - s3*(28800*s1 - 43200*s3 + 360*s7 - 600*s12), (2740739176652469*s1)/70368744177664 + s2*(240*s1 - 360*s3 + 3*s7 - 5*s12) - s1*(360*s1 - 600*s3 + 5*s7 - 8*s12) + s12*(14400*s1 - 28800*s3 + 240*s7 - 360*s12) - s4*(28800*s1 - 43200*s3 + 360*s7 - 600*s12)]
[ (2740739176652469*s3)/70368744177664 - s2*(5*s1 - 3*s2 + 360*s4 - 240*s12) + s4*(8*s1 - 5*s2 + 600*s4 - 360*s12) - s3*(360*s1 - 240*s2 + 28800*s4 - 14400*s12) + s1*(600*s1 - 360*s2 + 43200*s4 - 28800*s12), (2874340168023969*s4)/70368744177664 + (2740739176652469*s7)/70368744177664 + (2670370432474805*s12)/70368744177664 - s1*(5*s1 - 3*s2 + 360*s4 - 240*s12) + s2*(8*s1 - 5*s2 + 600*s4 - 360*s12) - s7*(360*s1 - 240*s2 + 28800*s4 - 14400*s12) + s2*(600*s1 - 360*s2 + 43200*s4 - 28800*s12), (2740739176652469*s1)/70368744177664 - s7*(5*s1 - 3*s2 + 360*s4 - 240*s12) + s12*(8*s1 - 5*s2 + 600*s4 - 360*s12) - s1*(360*s1 - 240*s2 + 28800*s4 - 14400*s12) + s3*(600*s1 - 360*s2 + 43200*s4 - 28800*s12), (2740739176652469*s12)/35184372088832 - s2*(5*s1 - 3*s2 + 360*s4 - 240*s12) + s1*(8*s1 - 5*s2 + 600*s4 - 360*s12) - s12*(360*s1 - 240*s2 + 28800*s4 - 14400*s12) + s4*(600*s1 - 360*s2 + 43200*s4 - 28800*s12)]
if i can insert the value s1-s3, it easier to find another variable

采纳的回答

madhan ravi
madhan ravi 2020-6-10
编辑:madhan ravi 2020-6-10
syms s1 s2 s3
subs(left_ARE,{s1, s2, s3}, {1, 5, 10})

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by