FunctionApproximations`
FunctionApproximations`

NIntegrateInterpolatingFunction

バージョン6.0以降,NIntegrateInterpolatingFunctionオブジェクトをネイティブサポートするようになった.

NIntegrateInterpolatingFunction[f,{x,xmin,xmax}]

被積分関数にInterpolatingFunctionオブジェクトを持つ積分の数値近似を求める.

NIntegrateInterpolatingFunction[f,{x,xmin,xmax},{y,ymin,ymax},]

多次元積分の数値近似を求める.

詳細とオプション

  • NIntegrateInterpolatingFunctionを使うためには,まず関数近似パッケージをロードしなくてはならない.それにはNeeds["FunctionApproximations`"]を実行する必要がある.
  • NIntegrateInterpolatingFunctionは関数NIntegrateを使うが,積分領域をInterpolatingFunctionオブジェクトが滑らかになるような区間に分割する.
  • 被積分関数 fInterpolatingFunctionオブジェクトが含まれない場合,NIntegrateInterpolatingFunctionNIntegrateと等価である.
  • InterpolatingFunctionオブジェクトの引数は,それ自身が積分変数の一変数関数である場合がある.
  • 被積分関数 f が単純にInterpolatingFunctionオブジェクトであるなら,Integrateを使った方がよい.というのは,これだと,InterpolatingFunctionオブジェクトで使われる多項式近似に対して正確な結果が与えられるからである.
  • 多数のノードを含むInterpolatingFunctionオブジェクトを持つNIntegrateInterpolatingFunctionを使って多次元積分を数値的に積分する場合,NIntegrateを使うよりもずっと長時間かかることがある.
  • NIntegrateInterpolatingFunctionNIntegrateと同じオプションを持つ.

例題

すべて開くすべて閉じる

  (1)

の台形近似:

は滑らかでないので,NIntegrateは警告メッセージを出す:

NIntegrateInterpolatingFunctionを使うと,エラーメッセージも出ず,上よりもわずかに正確な解が得られる:

この場合,被積分関数は単純に補間関数なので,Integrateを使って検証することができる:

スコープ  (3)

NIntegrateInterpolatingFunctionは第1引数に要素単位で縫い込まれる:

複素数値の補間:

多次元積分:

一般化と拡張  (1)

補間関数の引数は,それ自身が積分変数の1変数関数となることがある:

特性と関係  (1)

Sin[π x]の台形近似:

NIntegrateInterpolatingFunctionで使用される標本点を積み重ねる:

標本点をプロットする.関数は y 座標の次数での x 座標で抽出される:

NIntegrateで使用される標本点を積み重ねる:

NIntegrateでは点 x=付近における f[x]の滑らかでない挙動によりエラーメッセージが出力され,正確に評価するためには多くの反復ステップが必要になる:

補間の次数を増やすと,滑らかな関数になる:

より滑らかな関数では,NIntegrateで必要となる評価回数は上より少ない:

補間が充分滑らかな場合,NIntegrateNIntegrateInterpolatingFunctionよりも少ない関数評価で済む:

考えられる問題  (1)

多数のノードを持つ多次元補間関数では,NIntegrateの代りにNIntegrateInterpolatingFunctionを使って積分するとずっと長い時間かかることがある:

NIntegrateでは1つの積分だけが評価されるが,滑らかでない挙動により多数の反復ステップが生じる:

NIntegrateInterpolatingFunctionを使うと,より小さい領域上で積分がの積分に分割される.個の場合,被積分関数が滑らかである: