Использование неуказанных констант в Matlab

Я пытаюсь решить систему уравнений в s-области. Итак, представьте эту систему уравнений в матричной форме:

a=[.4*s+s+5 -5; -5 .5*s+5]  
c=[3/s; 3/(2*s)]  
(1/s)*a*b=c

Я просто получаю сообщение об ошибке, что s не определено. Как я могу решить для b с точки зрения s?


person Free_D    schedule 14.02.2012    source источник


Ответы (2)


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

Код для выполнения ваших вычислений с использованием символьных операторов:

syms s;                           %This defines 's' as a symbolic token
a=[.4*s+s+5 -5; -5 .5*s+5];       %a and c inherit the symbolic properties from s
c=[3/s; 3/(2*s)];                 
result = solve('(1/s)*a*b=c','b') %Solve is the general symbolic toolbox algebraic solver.

Это производит

result =
(c*s)/a

Вообще говоря, Matlab лучше всего работает как числовой набор инструментов. Поэтому в зависимости от вашего приложения я бы выбрал другой подход, например, продемонстрированный Яном Хинксом в другом ответе. Но иногда ситуация требует символического решения.

person Pursuit    schedule 14.02.2012