如何在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}]
答案 0 :(得分: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与其标准算法有许多数字等价物,如NSolve
,NDSolve
,NSum
和NIntegrate
。它们都可以通过前导N
识别,它本身也是function。关于这些函数的好处是它们具有与它们的分析等价物相同的签名。因此,要以数字方式整合积分,只需将Integrate
更改为NIntegrate
,如下所示
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}]
如tkott所示,提供27.4182
,但未生成任何警告。
答案 1 :(得分: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
不知道这是否正确!
获得更好的回复