NIntegrateの評価を高速化する方法
NIntegrateの評価を高速化する方法は積分により異なることが多いのですが,一般に以下の方法がよく使われます.
- NIntegrateのオプション”SymbolicProcessing“を
0
に設定し,Wolfram言語カーネルが積分を記号的に操作しないようにします.デフォルトではNIntegrateは被積分関数を記号的に前処理します.これによりNIntegrateはより難しい積分が評価できるようになります.しかし,記号処理で遅くなる計算もあります.f
という関数を0
から1
まで,記号的な処理をしないで数値的に積分するためには,以下を評価します.NIntegrate[f[x], {x, 0, 1}, Method -> {Automatic, "SymbolicProcessing" -> 0}]
Automatic
の代りに,使用したい他のメソッドを指定することもできます. - 計算から特異性と不連続性を取り除きます.Exclusionsオプションでは,被積分関数が特異点になる箇所をNIntegrateに評価させないように,除外する部分を指定することができます.例えば,関数に分母があるとき,分母が
0
になるところを指定します.NIntegrate[1/Sqrt[Sin[x]], {x, 0, 10}, Exclusions -> Sin[x] == 0]
「NIntegrate積分ストラテジー」で数値積分を高速化する他の方法をご覧ください.