2015-10-06 5 views
0

я получил отрицательный ответ MATLAB, вставляя следующие запросы:Ошибка при решении системы уравнений

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

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

??? Error using ==> char Conversion to char from logical is not possible.

Error in ==> solve>getEqns at 160 vc = char(v);

Error in ==> solve at 84 [eqns,vars] = getEqns(varargin{:});

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

+0

Я не могу воспроизвести вашу ошибку. Я нахожусь на MATLAB R2015a. – rayryeng

+0

@rayryeng любые альтернативные решения? – Abra001

+0

Попробуйте обернуть переменные в массиве ячеек. В предыдущих версиях MATLAB я должен был это сделать. – rayryeng

ответ

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 в настоящее время, и ваш код работает для меня. Я не могу воспроизвести вашу ошибку. Возможно, вы используете предыдущую версию.

+0

да, я думаю, что мой matlab разглагольствует, спасибо, хотя – Abra001

1

Думаю, я нашел ответный удар по моей проблеме.

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

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 

Thnk все вас.