2016-12-06 2 views
0

Я новичок в MatLab, и ради упражнения для своего университета я должен найти корень, используя метод Ньютона для данной функции.cosh и войдите в систему MatLab

>> x = linspace(-3,3); 
>> y = sinh(x-1)*log((3+2)*x+1)-1-1; 
Error using * 
Inner matrix dimensions must agree. 

>> y = sinh(x-1).*log((3+2)*x+1)-1-1; 
>> plot(x,y) 
Warning: Imaginary parts of complex X and/or Y arguments ignored 

Я хотел представить свою функцию, но как вы можете видеть в первых ошибках я не могу использовать стандарт * оператор, так что я пытался с. * (Который я не могу понять, что он делает), но график был далек от права.

ответ

0

для первой ошибки «Ошибка использования * Размеры внутренней матрицы должны быть согласованы».: В Matlab A*A не совпадает с A.*A. Первый метод - это общее умножение матрицы, а второе - элементное умножение. В вашем случае sinh(x-1) создаст матрицу размера [1 100] и log((3+2)*x+1) создаст матрицу с таким же размером (потому что x имеет этот размер). Однако матричный продукт невозможен ([1 100] * [1 100]).

Для второго вопроса я согласен с mpaskov и хочу добавить, что вы можете указать только действительную часть с real(y).

+0

извините, если это глупый вопрос, но почему это невозможно? Я имею в виду, что у них одинаковые размеры, не так ли? –

+0

Ах жаль, что я не видел твоего сообщения. , они имеют одинаковую размерность [1 100], но матричный продукт определен для: [mn] x [no] Вы видите, что второе измерение матрицы 1 и 1-го измерения матрицы 2 должно быть равным ... которое равно не в вашем примере –

0

Вы пытаетесь построить сложные числа. log отрицательного числа является сложным.

Вы можете попробовать построить значение abs:

plot(x,abs(y)); 

или попробовать черчения y на комплексной плоскости (ось х действительное число у оси мнимых).

plot(y, 'o'); 

в зависимости от того, что вы после.

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