"Matrix dimensions must agree"计算积分时出错

"Matrix dimensions must agree" error when computing integral

我在 MATLAB 中找出以下等式中的错误时遇到了问题:

a=@(z,q)(z.^2 + q.^2);
a1=@(q) integral(@(z) a(z,q),1,10);

首先,我只想在 z 中对 a 进行有限积分,在数值范围内,比方说 110,然后我想关于 q 绘制 a1。 当我使用以下命令执行上述操作时:

plot(linspace(0,3e8), a1(linspace(0,3e8)))

我收到以下错误:

Matrix dimensions must agree.

Error in untitled>@(z,q)(z.^2+q.^2)

Error in untitled>@(z)a(z,q)

Error in integralCalc/iterateScalarValued (line 314)
    fx = FUN(t);

Error in integralCalc/vadapt (line 132)
    [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

Error in integralCalc (line 75)
    [q,errbnd] = vadapt(@AtoBInvTransform,interval);

Error in integral (line 88)
    Q = integralCalc(fun,a,b,opstruct);

Error in untitled>@(q)integral(@(z)a(z,q),1,10)

Here is a screenshot.

谁能指出错误。 注意:我想将 zq 都作为 vector

MATLAB 函数 integral 默认计算单个积分,而不是积分数组。 option 'ArrayValued' 将允许您集成 returns 多个值的函数,例如您的 a:

a = @(z,q)(z.^2 + q.^2);
x = linspace(0,3e8);
y = integral(@(z)a(z,q),1,10,'ArrayValued',true);
plot(x,y)