3

数学で二重積分を数値的に計算する方法は?

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

2つのこと。まず、Integrate複数の「イテレータ」を受け入れます。つまり{x, x1, x2}、次のように、それらをネストせずに多重積分を指定できます。

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

、、、およびでx y囲まれた三角形を統合します。制限の順序は外側から内側に行くため、統合は右から左に実行されることに注意してください。次に、あなたの積分はy == xx == 0x == 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の標準アルゴリズムと同等の数値がいくつかあります。それらはすべて、それ自体が機能である先頭で識別できます。これらの関数の良いところは、同等の分析と同じシグネチャを持っていることです。したがって、積分を数値積分するには、次のように変更するだけです。NDSolveNSumNIntegrateNIntegrateNIntegrate

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が指摘しているように、これはを与えますが、警告は生成されません。

于 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 に答える