Matlab (естественно) не выполняет символические вычисления --- это то, что пытается сделать ваш код. Переменные Matlab должны быть конкретными числами, массивами, структурами и т. д. Они не могут быть просто заполнителями для произвольных чисел.
(ЕСЛИ: вы используете инструментарий символьных вычислений для Matlab. Я не использовал его, потому что Я предпочитаю выполнять символьные вычисления в таких средах, как Maple или Mathematica.Вы даже можете решить свою задачу на веб-сайте Wolfram Alpha)
Но если вы выберете конкретное значение s, вычислить то, что вы хотите, легко:
s = 5;
a=[.4*s+s+5 -5; -5 .5*s+5];
c=[3/s; 3/(2*s)];
b = s*(a\c);
Где я использовал оператор обратной косой черты для выполнения линейной инверсии.
Теперь у вас должно быть это
(1/s)*a*b-c
является нулевым вектором.
EDIT: я заглянул в символический набор инструментов. Похоже, это то, что вы хотите (но вам нужно иметь лицензию и установить символический набор инструментов, чтобы он работал):
syms s;
a=[.4*s+s+5 -5; -5 .5*s+5];
c=[3/s; 3/(2*s)];
b = simple(s*(a\c))
person
Ian Hincks
schedule
14.02.2012