尝试计算三重积分时出错

问题描述 投票:0回答:1

我正在尝试进行三重集成,但收到一条我不明白的错误消息。

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 =积分3(yi, 0, Inf , 0, @(u3) u3 , 0, @(u3,u2) u2)。但我不知道为什么。有人知道吗?谢谢

matlab numerical-integration
1个回答
0
投票

关于您的最后一行代码,这不是完整的答案:

out2 = integral3(yi, 0, Inf , 0, @(u3) u3 , 0, @(u3,u2) u2)

我不确定你想实现什么,但你已经实现了这个公式:

enter image description here 编辑

也许你可以检查一下这是否是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.