私はthis積分を深く計算する必要があります。私は数ヶ月間、Pythonのnumpyパッケージ、特にintegrate.tplquad関数を使用しています。上記のコードでPythonを使用した三重積分の数値計算
from __future__ import division
from math import *
import numpy as np
import scipy.special as special
import scipy.integrate as integrate
a=1.e-19
b=1.e-09
zo=1.e7
H=1.e15
v=1.e18
def integrand(v,z,x,u):
value=x**(-0.5)*special.kv(5/3,u)*(a*v*z/x-1/2.)*exp(-b*sqrt(z*v/x))
return value
i=integrate.tplquad(lambda u,x,z: integrand(v,z,x,u),1.e7,1.e15,lambda z:0.,lambda z:np.inf, lambda x,z : x, lambda x,z : np.inf)
print i
、私は小さすぎる又は大きすぎる係数を取得指数の引数を正規化し、しないために、V = 10^18の値を試してみました。しかし
、関係なく、私はいつも、私はこの問題を凌駕する方法がわからない
out: (0.0, 0.0)
を私はプラグインVのどのような値を取得していません。
私は指数関数をべき級数に拡張しようとしましたが、同じ結果が得られます。
さて、私は積分はすべてVのための有限正の値を持たなければならないという事実を知っている。私はVのためにそれを計算することができれば実際に、私は喜んだろう。
誰もが遭遇した場合同様の問題で、彼らの知恵を分かち合うことができれば嬉しいです。どんな助けも歓迎です。ありがとう。
あなたがすべきスクリプトの先頭に '__future__ import division'があります。さもなければ 'special.kv 'の' 5/3'は '1.666667'ではなく' 1'です。 (しかしそれは全体の問題を解決しません)。 – Elliot
ああ、気付いてくれてありがとう:) – Valentina
あなたの積分は、積分の限界の1つであるx = 0に特異点があります。 –