兩件事情得到更好的反應了過來。首先,Integrate
接受多個「迭代」,即{x, x1, x2}
,所以你可以指定一個多重積分不嵌套它們,如下
Integrate[x y, {x, 0, 1}, {y, 0, x}]
在由y == x
,x == 0
和x == 1
界三角形集成x y
。請注意,限制的順序是從外部到內部,因此整合是從右向左進行的。然後,你的積分變爲
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}]
這給27.4182
,由tkott指出,但沒有產生任何警告。
可能(近)重複[如何在MATLAB中計算二次積分的數值?](http://stackoverflow.com/questions/9554617/how-to-calculate-the-double-integral-numerically-in- matlab) – 2012-03-06 14:28:05
Mathematica問題如何成爲Matlab問題的一個騙局?這將像Java問題和C#問題。 – Verbeia 2012-03-10 21:51:18
@Verbeia你有一點,但OP問如何在兩種語言中接近相同的積分。 – rcollyer 2012-03-11 02:50:24