3

如何在 Mathematica 中数值计算二重积分?

Integrate[Exp[-0.099308 s]
       * Integrate[Exp[0.041657423 u] Exp[-3.1413 s + 3.12 u]
             * ((u/(s - u))^(1/2) BesselI[1,2 (u (s - u))^(1/2)]
             + 0.293 BesselI[0,2 (u (s - u))^(1/2)]),{u,0,s}],{s,0,10}]

在此处输入图像描述

4

2 回答 2

4

两件事情。首先,Integrate接受多个“迭代器”,即{x, x1, x2},这样就可以指定一个多重积分而不用嵌套它们,如下

Integrate[x y, {x, 0, 1}, {y, 0, x}]

x y在由 、 和 包围的y == x三角形x == 0上积分x == 1。注意,限制的顺序是从外到内,所以积分是从右到左进行的。然后,你的积分变成

Integrate[Exp[-0.099308 s] Exp[0.041657423 u] Exp[-3.1413 s + 3.12 u]
   * ((u/(s - u))^(1/2) BesselI[1,2 (u (s - u))^(1/2)]
   + 0.293 BesselI[0,2 (u (s - u))^(1/2)]),
 {s,0,10}, {u,0,s}]

其次,Mathematica 有许多与其标准算法等效的数值,例如NSolveNDSolveNSumNIntegrate。它们都可以通过leading 来识别N,这本身也是一个功能。这些函数的好处是它们具有与分析等效函数相同的签名。因此,要对积分进行数值积分,只需更改IntegrateNIntegrate,如下所示

NIntegrate[Exp[-0.099308 s] Exp[0.041657423 u] Exp[-3.1413 s + 3.12 u]
   * ((u/(s - u))^(1/2) BesselI[1,2 (u (s - u))^(1/2)]
   + 0.293 BesselI[0,2 (u (s - u))^(1/2)]),
 {s,0,10}, {u,0,s}]

27.4182正如 tkott所指出的那样,它给出了tkott,但没有生成任何警告。

于 2012-03-06T15:26:59.193 回答
1

如果您希望在 Mathematica 中对某些东西进行数值积分,您应该改用 NIntegrate。这将为您提供数值近似而不是定积分。

NIntegrate[ Exp[-0.099308*s]*
  NIntegrate[Exp[0.041657423*u]*(Exp[-3.1413*s + 3.12*u])*((u/(s - u))^(1/2)*
       BesselI[1, 2*(u*(s - u))^(1/2)] + 0.293*BesselI[0, 2*(u*(s - u))^(1/2)])
  , {u, 0, s}]
, {s, 0, 10}]

它抱怨是因为首先评估内部集成,并且如果不指定就无法评估s,但是给出

27.4182

不知道这是否正确!

顺便说一句:您可能会在https://mathematica.stackexchange.com/上得到更好的回应

于 2012-03-06T14:50:34.637 回答