Ошибка при решении системы уравнений

Я получил отрицательный ответ MATLAB при вставке следующих запросов:

syms x y z
solve (x+y==z,x-2*y==z,[x,y],'ReturnConditions', false)

Хотел получить x, а y в пересчете на z но, увы, получил следующую ошибку:

??? Ошибка при использовании ==> char Преобразование в char из логического невозможно.

Ошибка в ==>solve>getEqns на 160 vc = char(v);

Ошибка в ==> решить в 84 [eqns,vars] = getEqns(varargin{:});

Любая помощь, пожалуйста?


person Abr001am    schedule 06.10.2015    source источник
comment
Я не могу воспроизвести вашу ошибку. Я на MATLAB R2015a.   -  person rayryeng    schedule 06.10.2015
comment
@rayryeng есть альтернативные решения?   -  person Abr001am    schedule 06.10.2015
comment
Попробуйте обернуть переменные в массив ячеек. В предыдущих версиях MATLAB мне приходилось это делать.   -  person rayryeng    schedule 06.10.2015


Ответы (2)


Вместо этого попробуйте использовать массив ячеек для переноса x и y:

>> syms x y z
>> X = solve (x+y==z,x-2*y==z,{x,y},'ReturnConditions', false);
>> X.x
ans =
z
>> X.y
ans =
0

Это требовалось для предыдущих версий MATLAB. Однако в настоящее время я использую R2015a, и ваш код работает для меня. Я не могу воспроизвести вашу ошибку. Возможно, вы используете предыдущую версию.

person rayryeng    schedule 06.10.2015

Я думаю, что нашел ответ на мою проблему.

Что касается решения системы двух уравнений и двух переменных, то мы используем матрицу входов, а выходы должны быть заданы.

b=[x+y-z;x-3*y-z;]
b =

x + y - z
x - 3*y - z
[e t]=solve(b,x,y)
e =

z


t =

0

Спасибо всем.

person Abr001am    schedule 07.10.2015