関数を特異点と統合するためにどの数値求積法を選択しますか?


9

たとえば、u = 1のノルムを数値計算したいとします。L2ゼロを含むいくつかのドメインにおいて、Iは、ガウス求積を試み、それが失敗し、それはちょっと遠い実からなるL2統合する球座標を用いて、単位球上のノルムでありますこれを行う良い方法はありますか?この問題は、リエントラントコーナーのあるドメインの有限要素計算のおもちゃの問題でよく見られます。ありがとう。あなた=1バツ2+y2+z21/L2


2
原点が積分領域内にある場合、積分を分解してから、それぞれを球座標に変換することをお勧めしますか?
JM 2011

私はJMに同意します-特異点の位置と構造を事前に知っている場合は、その構造情報を使用して、求積法ルーチンの呼び出しをインテリジェントに記述するより、数値パッケージにフィードしてそれを期待する方がよい(a)それは特異点を見つけ、(b)それらで正しいことをします。

回答:


8

任意精度の浮動小数点計算用のPythonモジュールであるmpmathを使用すると、正確な結果を得ることができるはずです。ドキュメントには、特異点との統合の例があります。間隔を分割するように明示的に指示する必要があります。

from mpmath import *
f = lambda x,y,z: 1./(x**2+y**2+z**2)**1./3
quad(f,[-1,0,1],[-1,0,1],[-1,0,1])

精度を上げる必要がある場合(例mp.dps=30:)は遅くなる可能性がありますが、かなり正確でなければなりません。

quadgk()1Dで適応型ガウスクロンロッド求積法を使用する、MATLABのへの呼び出しをネストすることもできます。

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