- 実際にはメッシュの頂点上に与えられた離散的な関数を球面調和関数で展開する
- 球面調和関数は連続なのでできる限りその情報を失わないようにしたい
- 連続関数のメッシュ上での積分はガウス求積が一般的に用いられる
- ガウス求積 - Wikipedia
- ガウス=クロンロッド求積法 - Wikipedia: 誤差見積もりが必要な場合
- Simpson法だと3種類の係数で2次の精度→一般にN種類の係数でN-1次の精度(積分点が少なくていい訳ではない)
- ガウス求積だとN個の重みとN個の積分点で2N-1次の精度(積分点はN個だけ)
- 重みには球面調和関数に用いたルジャンドルの陪関数を使う
- 積分点はSimpson法だと均一に分布するのに対し、ガウス求積だと境界部分により多く分布する
ガウス求積
- 重み$\omega$は、$\omega_{i} = \frac{2}{(1-x_{i}^{2})(P_{n}^{'}(x_{i}))^{2}}$と表される。
- $x_{0}, \cdots, x_{n}$はルジャンドル陪関数が0と等しい時の方程式の解になっている
- 2n-1次までの多項式だと完全に一致する
- 多項式で一致することの証明はhttp://neel2.fis.puc.cl/cncm/FisCompu/Sitio_web/Apuntes_files/CurvaturaGaussiana.pdfの5.3.2にある
- 上のpdfはhttps://www.physics.ohio-state.edu/~ntg/6810/readings/hjorth-jensen_notes2013_05.pdfの一部で最後に演習問題とかもある
- $f \to W g$(Wは重み関数と呼ばれる)と変換することで特異点があっても積分できたりする
- 任意の積分で利用できるが、積分区間は[-1,1]になるように置換してから用いる。
- 変数変換する場合はヤコビアンを使って、
- ここまで読んだところでメッシュ上の積分でもscipy.integrate.dblquadで計算できることに気付いてしまった...
- 離散分布の補間方法を考えるべし
参考文献
- 第5話 あっと驚くガウスの数値積分法 | FEMINGWAY: 数式のほとんどない簡単な解説
- http://math2.uncc.edu/~shaodeng/TEACHING/math5172/Lectures/Lect_15.PDF: 重積分の場合についての解説が分かりやすい
今後の参考になりそうな文献
- 有限要素法(FEM): 解析的に解けない微分方程式の近似解を計算する方法。領域をメッシュで区切って局所的な計算をすることで全体での結果を得ることができるらしい。メッシュの区切り方によって計算結果が変わってしまうため、歪んだ形では工夫が必要。
- http://www.jsce.or.jp/committee/amc/compmech/pdftext121204/kurumatani.pdf: 有限要素法についてよくまとまったpdf
- メッシュフリー法 - Wikipedia: メッシュを使わない方法らしい
- ここまで読んだところでメッシュ上の積分でもscipy.integrate.dblquadで計算できることに気付いてしまった...