我正在尝试进行三重集成,但我收到了一条我不理解的错误消息。
clear all;
%%%==== just some parameters ==========
a=4;
la1=1/(pi*500^2); la2= la1*5;
p1=25; p2=p1/25;
sgma2=10^(-11);
index=1;
g=2./a;
syms r u1 u2 u3
powe= -2
seta= 10^powe;
q=pi.*(la1.*p1.^(2./a)+la2.*p2.^(2./a));
%%%==== parameters -- end ==========
yi = @(u3,u2,u1) exp(-u3.*(1+2.*...
( pi./4 - atan(10.*(u3.^2./u1.^2 + u3.^2./u2.^2 + 1).^(1./2))./2 )./...
( (( (u3./u1).^(a./2) + (u3./u2).^(a./2) + 1 ).^(2./a)).*seta.^(-2./a)))).*...
exp(-sgma2.*q.^(-a./2).* seta.*u3.^(a./2)./...
((( (u3./u1).^(a./2) + (u3./u2).^(a./2) + 1 ).^(2./a)).^(a./2)) );
maxF2 =@(u2) u2;
maxF3 =@(u3) u3;
out2 = integral3(yi, 0, Inf , 0, maxF3 , 0, maxF2)
如您所见,u3
为[0, Inf]
,u2
为[0, u3]
,u1
为[0, u2]
。我得到的错误消息如下:
Error using @(u2)u2
Too many input arguments.
Error in integral3>@(y)ZMAXXY(x(1)*ones(size(y)),y) (line 142)
@(y)ZMAXXY(x(1)*ones(size(y)),y), ...
Error in integral2Calc>integral2t/tensor (line 191)
top = YMAX(x);
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 integral3/innerintegral (line 138)
Q1 = integral2Calc( ...
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 133)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 84)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral3 (line 122)
Q = integralCalc(@innerintegral,xmin,xmax,integralOptions);
Error in ref7_equ11n3 (line 33)
out2 = integral3(yi, 0, Inf , 0, maxF3 , 0, maxF2)
的含义是什么
Error using @(u2)u2 Too many input arguments.
如果我将u2
和u3
的范围更改为实数(例如out2 = integral3(yi, 0, Inf , 0, 1000 , 0, 1000)
),则可行:out2
将是实数。我做错了什么?
我想我明白了。答案是out2 = integral3(yi,0,Inf,0,@(u3)u3,0,@(u3,u2)u2)。但我不知道为什么。有人有点想法?感谢
答案 0 :(得分:0)
关于最后一个代码行,这不是一个完整的答案:
out2 = integral3(yi, 0, Inf , 0, @(u3) u3 , 0, @(u3,u2) u2)
我不确定你想要实现什么,但是你已经实现了这个公式:
也许你可以检查这是否是你想要的。