如何解决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 举报,一经查实,本站将立刻删除。