cosh 并登录 MatLab

cosh and log in MatLab

我是 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

我想可视化我的函数,但正如您在第一个错误中看到的那样,我无法使用标准 * 运算符,所以我尝试使用 .* (我无法真正理解它的作用)但是图表大错特错。

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

您可以尝试绘制 abs 值:

plot(x,abs(y));

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

plot(y, 'o');

取决于你追求什么。

对于第一个错误 "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) 指定实部。