使用 ==> mtimes MATLAB 时出错

Error using ==> mtimes MATLAB

我正在尝试在 MATLAB 上对一个函数进行数值积分(我在 MATLAB 7.7 上)。这是我的代码。

fun = @(t)(cos(t)./sqrt(3)-sin(t)).^39*(cos(t)./sqrt(3)+sin(t)).^63*sqrt(2*cos(t).^2 + 2/3*sin(t).^2);
quad(fun,-pi/6,pi/6)

很遗憾,我没有遵循错误消息。谁能帮帮我?

??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==>
@(t)(cos(t)./sqrt(3)-sin(t)).^39*cos(t)./sqrt(3)+sin(t)).^63*sqrt(2*cos(t).^2+2/3*sin(t).^2)


Error in ==> quad at 77
y = f(x, varargin{:});

我试过函数定义是否正确。它似乎对我有用:

fun(1)
ans =

-1.4078e-007

这是我在评估为 1 时期望的正确值。我对各种输入进行了多次试验,函数 fun() 似乎可以正确计算它们!

p.s.: 我之前用过quad()。它以前对我很有效。

您的函数适用于标量输入,但不适用于向量:

>> fun(1:5)
Error using  * 
Inner matrix dimensions must agree.

您需要更改函数以进行逐元素乘法:

fun = @(t)(cos(t)./sqrt(3)-sin(t)).^39.*(cos(t)./sqrt(3)+sin(t)).^63.*sqrt(2*cos(t).^2 + 2/3.*sin(t).^2);