2016-12-06 90 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

第一个错误“Error using * Inner matrix dimensions must agree。”: 在Matlab中A*AA.*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的第二维和矩阵2的第一维必须相等......这就是在你的例子中不是这种情况 –

0

您正在尝试绘制复数。负数的log是复杂的。

你可以尝试绘制abs值:

plot(x,abs(y)); 

,或者尝试在复平面上绘制y(x轴是实数,y轴虚)。

plot(y, 'o'); 

这取决于你在做什么。