私はガウス・ラゲールがどのように大きな限界のために働くか知りたいと思います。たとえば、 私は両方の次元で(0、+ inf)から行く2D関数を持っています。私がgaussをPythonのlaguerreに使用すると、それらを合計することによって関数を加重と横軸でサンプリングすることによって、私はdblquadのようなものに近いものを得られません。以下は、統合のためのサンプルコードです。 lgwは2つのforループを使用して二重積分で使用される重みと横軸を出力します。 x、y = 1e8,1e8のような標本点がどのように捕捉されているのかわかりません。 nを大きくしても横軸は高くならない(少なくとも必要に応じてそれほど高くない)。Gauss laguerreの統合は、どのように大きな制限のために機能しますか?
kzas,kzws = lgw(n)
for kta,ktw, in zip(kzas,kzws):
for kza,kzw in zip(kzas,kzws):
fval = integrand(kza,kta)
wghtx = kzw*numpy.exp(kza)
wghty = ktw*numpy.exp(kta)
integral += wghtx*wghty*fval
誰かがサンプルポイントを取得する方法を説明できますか?直交を正しく使用していませんか?私は、1e2程度の小さな限界を持つ関数を統合することができます。限界が高いとすれば何をすればよいでしょうか?私は理論からの定義を見ますが、より高い重みと横軸がどのように取り込まれているかわかりません。
おかげ
編集:それはそれ以上私の機能を削減することはできません。被積分関数の異なる部分は数値的に計算されるので、解析式はありません。私が言うことができるのは、関数は滑らかで、正弦波の振る舞いをしているということです。
であなたの最も内側のループ内の最初の行を交換してくださいは、あなたの関数の振る舞いは何ですか?私はあなたが "遠い"点を単にサンプリングすれば、あなたは良い数値近似を得ることができないという疑いを持っています。そして、それを超えた関数の振る舞いは、何となく些細なことです。数値メソッドを適用する半径を定義し、残りを分析的に見積もることはできますか? – 9000
@ 9000この関数は、1e10のような値であっても非ゼロであり、5e10の後にのみゼロになります。その間には正弦波の方法で0と1の間で変化します(常にそうとは限りませんが、それにはそのようなバリエーションがあります)。関数値が非常に高くならず、特異点もありません。 – user3840530