微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MATLAB中的顺序数值积分

如何解决MATLAB中的顺序数值积分

我正在尝试在MATLAB中编写程序以执行顺序集成。首先,我定义第一个整数n_array_exact{1}()并将其保存为数组中的函数句柄。仅在积分之后,该第一积分才成为x函数。下一步,我将使用此函数来计算下一个n_array_exact{2}(x)mu1的下一个双积分(称为s)。在用n_array_exact{1}(x)代替计算n_array_exact{2}(x)之前,我将x中的n_array_exact{1}(x)替换为名为xp(x,mu1,s)函数

% Ordinary integration 
n_array_exact{1} = @(x) integral(@(mu) exp((x.*mu)),-1,1)/2;

xp2= @(x,s) sqrt(x*x +s*s +2*x*mu1*s);
for i=2:3
    n_array_exact{i} = @(x) integral2(@(mu1,s) exp(-s.*mu1.*x).*n_array_exact{1}(xp2(x,s)),1,1);

end
n_array_exact{2}(0.05)
%n_array_exact{3}(0.05)
%n_array_exact{4}(0.05)

执行集成并尝试评估n_array_exact{2}0.05)后,出现以下错误

Error using  .* 
Matrix dimensions must agree.

Error in @(mu)exp((x.*mu))


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

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

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

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

Error in @(x)integral(@(mu)exp((x.*mu)),1)/2


Error in @(mu1,s)exp(-s.*mu1.*x).*n_array_exact{1}(xp2(x,s))


Error in integral2Calc>integral2t/tensor (line 229)
        Z = FUN(X,Y);  NFE = NFE + 1;

Error in integral2Calc>integral2t (line 56)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);

Error in integral2Calc (line 10)
    [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);

Error in integral2 (line 106)
    Q = integral2Calc(fun,yminfun,ymaxfun,opstruct);

Error in @(x)integral2(@(mu1,1)


Error in test (line 10)
n_array_exact{2}(0.05)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。