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*A
与 A.*A
不同。第一种方法是一般矩阵乘法,第二种方法是逐元素乘法。在您的情况下,sinh(x-1)
将创建一个大小为 [1 100] 的矩阵,而 log((3+2)*x+1)
将创建一个大小相同的矩阵(因为 x
具有此大小)。然而矩阵乘积是不可能的([1 100] *[1 100]).
对于第二个问题,我同意 mpaskov 的观点,只是想补充一点,您只能使用 real(y)
指定实部。
我是 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*A
与 A.*A
不同。第一种方法是一般矩阵乘法,第二种方法是逐元素乘法。在您的情况下,sinh(x-1)
将创建一个大小为 [1 100] 的矩阵,而 log((3+2)*x+1)
将创建一个大小相同的矩阵(因为 x
具有此大小)。然而矩阵乘积是不可能的([1 100] *[1 100]).
对于第二个问题,我同意 mpaskov 的观点,只是想补充一点,您只能使用 real(y)
指定实部。