「ゼロ」による除算が可能な数値積分


9

統合しようとしています

∫01t2ん+2exp⁡(αr0t)dt

これはの単純な変換です

∫1∞バツ2んexp⁡(−αr0バツ)dバツ

不適切な積分を数値で近似することが難しいため、を使用します。ただし、これは新しい被積分関数をゼロに近い値で評価するという問題につながります。間隔は長さ1しかないため、適切な数の直交ノードを取得するのは非常に簡単です(したがって、比較可能なを非常に小さくすることができます)。t=1バツdt

あるレベルでは、単にをとることは、がいくつかの小さな数である場合に良い考えだと思います。しかし、何を選ぶべきですか?マシンイプシロンにする必要がありますか?マシンイプシロンによる除算は十分に数値化された数ですか?さらに、私のマシンのイプシロン(またはそれに近い)の除算が信じられないほど大きな数を与える場合、取得はさらに大きくなります。∫ε1t2ん+2exp⁡(αr0t)dtεexp⁡(1ε)

これをどのように説明する必要がありますか?この関数の数値積分を明確に定義する方法はありますか?そうでない場合、機能を統合する最良の方法は何ですか?


1
モンテカルロの使用を検討しましたか?
— Faheem Mitha、2011

それは問題を解決しないと思います。モンテカルロ積分は、高次元積分のために予約されていることがよくあります。私はモンテカルロでまったく同じ問題に遭遇し、関数が評価されている場所を簡単に制御できなくなります。
— drjrm3

あなたは正しいかもしれません。
— Faheem Mitha、2011

積分を分析的に行うことができない一般的なケースでは、関数が1つの限界で発散しているときに数値積分をどのように行うかを説明する回答(おそらく別のより一般的な質問)があればなお良いと思います。そして、それも同様にNumerical Recipesで見つけることができます...
— David Z

@Faheem:「モンテカルロは非常に悪い方法です。すべての代替方法が悪い場合にのみ使用してください。」-アランソカル
— JM

回答:


10

∫1∞バツe−aバツ=−1aバツe−aバツ|1∞−−1a∫1∞e−aバツ=e−aa+e−aa2=a+1a2e−a
∫1∞バツke−aバツ=−1aバツke−aバツ|1∞−−ka∫1∞バツk−1e−aバツ=e−aa+ka∫1∞バツk−1e−aバツ
私(k)=e−aa+ka私(k−1)
私(0)=e−aa

どうしてこれを見落としたのか全くわからない。ありがとうございました。
— drjrm3 2011

1
巧妙な置換と部品による統合は常に、手に負えない積分で最初に行うことの1つである必要があります。
— JM 2011

∫1∞バツ2んexp⁡(−αバツ)dバツ 想定 ん::無視しない、α>0Γ(2ん+1、α)α−2ん−1
— エリックP.11年

実際、Mathematicaは答えをExpIntegralE [-2 n、ar]として表すことを選択します。その上でFunctionExpandを実行すると、Mapleと同じ答えが得られます。
— Searke

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.