【问题标题】:"Matrix dimensions must agree" error when computing integral计算积分时出现“矩阵尺寸必须一致”错误
【发布时间】:2018-11-10 19:27:30
【问题描述】:

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

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

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

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 作为向量

【问题讨论】:

  • 您的问题底部有一个“编辑”链接,就在标签下方。请使用它来编辑您的问题。不要发布编辑作为答案。我已将您的答案复制粘贴到问题中。如果您愿意,请继续编辑您的问题! :)

标签: matlab numerical-integration


【解决方案1】:

MATLAB 函数 integral 默认计算单个积分,而不是积分数组。 option 'ArrayValued' 将允许您集成一个返回多个值的函数,例如您的 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2012-07-12
    • 2011-12-05
    • 2014-03-30
    • 2012-11-21
    • 1970-01-01
    相关资源
    最近更新 更多