2016-11-11 2 views
0

Я работаю в GNU Octave и мне нужно решить следующее уравнение: A*x=b (A, x, b - матрица).Оператор октавы ошибка

A = [1 1; 2 1]; 
b = [1, 2]; 

Так что я делаю x = A \ b согласно моим рекомендациям. Но я получаю сообщение об ошибке:

operator \: nonconformant arguments (op1 is 2x2, op2 is 1x2) 

Я понимаю, что это значит, но не знаю, как это исправить. Я уже пробовал inv(A) * b.


Кстати, он отлично работает в Matlab. Вот мой сценарий:

A = input('Enter A'); 
b = input('Enter b'); 
x = A \ b; 
display(x); 

ответ

2

Проблема с размерностью b он должен быть столбцы, а не строка.

x = A\b.'; 
% or for clarity 
x = A\transpose(b); 

Edit:

Если вы используете inv снова вы должны использовать правильные размеры:

x = inv(A)*b.'; 
% or for clarity 
x = inv(A)*transpose(b); 
+0

Это работает, но по математике х = А^(- 1) * б. Как я знаю, оператор \ эквивалентен этому. Так в чем дело? – Russiancold

+0

Это верно, и вам все еще нужно 'inv (A) * b.'', чтобы сделать измерения. – mpaskov

+0

Можем ли мы проверить, нет ли здесь несовместимости MATLAB? Это обеспечило бы отчет об ошибке на bugs.octave.org –

Смежные вопросы