数学で二重積分を数値的に計算する方法は?
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}]
数学で二重積分を数値的に計算する方法は?
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}]
2つのこと。まず、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
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}]
tkott27.4182
が指摘しているように、これはを与えますが、警告は生成されません。
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/でより良い応答が得られるかもしれません