NIntegrate

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

積分 の数値近似を与える.

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

多重積分 の数値近似を与える.

NIntegrate[f,{x,y,}reg]

幾何学領域 reg で積分する.

詳細とオプション

  • 多重積分には標準的な反復子表記の変形が使われる.与えられる最初の変数は最も外側の積分に対応し,最後に行われる.
  • NIntegrateはデフォルトで,積分範囲の境界とExclusionsオプションの設定値で指定された範囲の境界で特異点の判定をする.
  • NIntegrate[f,{x,x0,x1,,xk}]は,一次積分では中間点 xiのそれぞれで特異点の判定をする.特異点が存在しない場合,結果は x0から xkの範囲の積分と同値である.複素数 xiを使って,複素平面上の積分路を指定することができる.
  • 指定可能なオプション
  • AccuracyGoal Infinity目標とする絶対確度の桁数
    EvaluationMonitor Noneexpr が評価されたときに常に評価される式
    Exclusions None積分範囲で除外すべき部分
    MaxPoints Automaticサンプル点の最大数
    MaxRecursion Automatic再帰的な部分分割数の最大値
    Method Automatic使用されるアルゴリズム
    MinRecursion 0再帰的な部分分割数の最小値
    PrecisionGoal Automatic目標とする精度の桁数
    WorkingPrecision MachinePrecision内部計算で使用する精度
  • NIntegrateは,通常,適応的アルゴリズムを使い,必要に応じて積分の領域を再帰的に部分分割する.MinRecursionは反復的に部分分割する回数の最小値を指定する.MaxRecursionその最大値を指定する.
  • NIntegrateは,通常,誤差推定値が最終的な結果として,指定されたAccuracyGoalあるいはPrecisionGoalに達するまで,部分分割を続ける.
  • 低次の積分の場合,PrecisionGoalの設定値はWorkingPrecisionに関連する.高次の積分の場合には,PrecisionGoalの設定値として一般に固定値(通常2)が使われる.
  • 十分に病的であるといえる関数には,NIntegrateに使用されているアルゴリズムが誤った解答を与えることがあり得るということを十分理解しておいてほしい.ほとんどの場合,NIntegrateのオプションの設定に対する敏感さを見ることでこの解答を調べることができる.
  • Methodオプションが取り得る明示的な設定値には次のようなものがある.
  • "GlobalAdaptive"大域的な適応的積分方法
    "LocalAdaptive"局所的な適応的積分方法
    "DoubleExponential"二重指数求積法
    "MonteCarlo"モンテカルロ(Monte Carlo)積分
    "AdaptiveMonteCarlo"適応的モンテカルロ積分
    "QuasiMonteCarlo"擬似モンテカルロ積分
    "AdaptiveQuasiMonteCarlo"適応的擬似モンテカルロ積分
  • Method->{"strategy",Method->"rule"}あるいは Method->{"strategy",Method->{rule1,rule2,}}のときの使用可能なメソッドには次のようなものがある.
  • "GlobalAdaptive"大域的誤差推定に基づいて下位区分をする
    "LocalAdaptive"局所的誤差推定のみに基づいて下位区分を行う
  • 規則として使われるメソッドには次のようなものがある.
  • "CartesianRule"規則の多次元積
    "ClenshawCurtisRule"クレンショウ・カーチス(ClenshawCurtis)規則
    "GaussKronrodRule"クロンロッド(Kronrod)領域を伴うガウス(Gauss)
    "LevinRule"レビン(Levin)型の振動規則
    "LobattoKronrodRule"クロンロッド領域を伴うガウス・ロバット(GaussLobatto)
    "MultidimensionalRule"多次元対称規則
    "MultipanelRule"1D規則の組合せ
    "NewtonCotesRule"ニュートン・コーツ(NewtonCotes)規則
    "RiemannRule"リーマン(Riemann)和の規則
    "TrapezoidalRule"一次元における一様な点
  • Method->"rule"と設定すると,戦略メソッドが自動的に選択される.
  • 追加的なメソッドのサブオプションは,Method->{,opts}の形で与えることができる.
  • NIntegrateは振動その他の被積分関数変換の入力を記号的に分析し,区分関数を部分分割し,最適アルゴリズムを選択する.
  • メソッドのサブオプション"SymbolicProcessing"は,被積分関数の記号的分析を試みる最大秒数を指定する.
  • N[Integrate[]]は,記号的に行うことのできない積分に対してNIntegrateを呼び出す.
  • NIntegrateは,まずすべての変数の値を局所化し,次に記号的となった変数で f を評価し,繰り返して結果を数値的に評価する.
  • NIntegrateは属性HoldAllを持ち,Blockを用いて実質的に変数を局所化する.

例題

すべて開くすべて閉じる

  (5)

数値積分を計算する:

多次元積分(原点に特異点)を計算する:

陰的に定義された領域の面積と体積を計算する:

任意の領域上で積分する:

振動関数およびその他の複雑な関数を積分する:

スコープ  (56)

基本的な用法  (12)

関数を有限の実数域で積分する:

有限の実数域:

高精度で結果を得る:

有限無限を区別せず,複素線に沿って積分する:

複素平面の区分線形等高線に沿って:

複素平面の円状等高線に沿って:

関数の実部と積分路をプロットする:

ベクトル値関数とテンソル値関数:

多変数関数:

積分変数の境界は以前の変数に依存することがある:

積分範囲で被積分関数をプロットする:

不等式で定義される範囲で積分する:

積分範囲をプロットする:

特殊領域を含む任意の幾何領域上で積分する:

数式定義領域:

メッシュ領域:

五次元の単位球の体積を求める:

面積分を計算することでの,標準的な円柱の表面積:

線積分の計算による楕円の長さ:

モンテカルロ(Monte Carlo)法を使った多変数積分:

特異積分  (9)

端点に代数特異点を持つ関数を積分する:

積分範囲でプロットする:

端点における対数特異性:

積分範囲でプロットする:

両端点の特異点:

積分範囲でプロットする:

Exclusionsを使って積分範囲の内側で特異点を調べる:

積分範囲でプロットする:

辺や角に特異点を持つ関数の多変数積分:

積分範囲でプロットする:

多次元の積分範囲の角の特異点:

積分範囲でプロットする:

内点に特異点がある多変数積分:

いくつかの内点特異点:

積分範囲でプロットする:

方程式を満たす角に特異点を持つ関数の多変数積分:

積分範囲でプロットする:

積分ができない特異点を持つ関数のコーシー(Cauchy)主値:

区分積分  (9)

有限の多数のケースがある区分関数:

無限の多数のケースがある区分関数:

他の任意の関数との組合せ:

Exclusionsを使って鋭角や不連続性を明示的に指定する:

積分範囲でプロットする:

有限個の多数のケースがある多変数区分積分:

不連続性と鋭角を明示的に指定する:

範囲内で実部と虚部をプロットする:

二次元の範囲で積分する:

三次元の範囲で積分する:

次元の範囲で積分する:

振動積分  (15)

高振動初等関数を有限範囲で積分する:

の範囲でプロットする:

高振動特殊関数:

の範囲でプロットする:

振動する関数を無限範囲で積分する:

振動する特殊関数を無限範囲で:

振動する関数の和:

の範囲で積分する:

振動する関数の積:

の範囲でプロットする:

振動する関数のベキ:

の範囲でプロットする:

振動する関数と振動しない関数の組合せ:

積分範囲でプロットする:

振動する関数の和,積,ベキ,組合せ:

積分範囲の一部でプロットする:

激しく振動する初等関数を有限範囲で多変数積分する:

範囲の百万分の一でプロットする:

振動する特殊関数を有限範囲で多変数積分する:

多変数の振動する関数を有限範囲で:

特異振動関数:

の範囲でプロットする:

振動関数と特異関数の組合せ:

積分範囲でプロットする:

区分振動関数:

振動率のでプロットする:

特異点を持つ区分振動関数:

積分範囲でプロットする:

領域積分  (11)

単位円板上のさまざまな積分方法:

領域上で被積分関数を可視化する:

単位円板上の,より一般的な積分:

領域上で被積分関数を可視化する:

点の上の総和に相当する,0D領域上での積分:

曲線積分に相当する,1D領域上での積分:

曲面積分に相当する,2D領域上での積分:

一般に,低次元領域上での積分は,曲面積分に相当する:

領域は低次元である:

塗り潰された平行四辺形を含む,任意の基本的な領域上で積分する:

塗り潰された円錐:

球の表面:

塗り潰された楕円体:

半直線:

任意のImplicitRegion上で積分する:

全次元の領域:

任意のParametricRegion上で積分する:

全次元領域:

任意のMeshRegion上で積分する:

2Dにおける領域:

3Dにおける領域:

任意のBoundaryMeshRegion上で積分する:

オプション  (30)

AccuracyGoal  (1)

AccuracyGoalオプションを使って,デフォルトの絶対許容度を変えることができる:

積分過程は,目標確度の基準を超えたところで停止する:

デフォルトでは精度基準しか使われないので,デフォルト設定での結果は異なる:

EvaluationMonitor  (2)

数値積分に使われた評価点の数を求める:

数値積分に使われた評価点を示す:

Exclusions  (1)

被積分関数の分母が零である曲線を除いて積分する:

被積分関数が特異点である曲線:

MaxPoints  (1)

指定点数を超えたところで積分を中止する:

MaxRecursion  (1)

十分な適応的再帰なしでは,次の例はあまりよい結果を返さない:

MaxRecursionの値を大きくすると,はるかによい結果が得られる:

特異点の位置を指摘するとより効果的である:

Method  (21)

積分規則  (10)

左および右リーマン和:

リーマン和は小区域の左端点あるいは右端点で一様にサンプルを取る:

外挿を含まない基本的な台形規則,区分線形近似に対応する:

Romberg外挿を含む台形規則:

基本的台形規則は一様にサンプリングする(適応性がオフの場合):

台形規則を伴うデフォルトの適応的メソッド:

サンプル点の区間が均等であるニュートン・コーツの規則:

閉形の式には端点が含まれるが,開形の式には含まれない:

多項式の補間に対応するニュートン・コーツ規則:

適応性のない近似は対応する多項式の補間に等しい:

次数 のメソッドは 次までの多項式について厳密解を与える:

方法を自動的に選択したクレンショウ・カーチスの求積法:

サンプル点は一様ではない:

これらの点はを再スケールしたものである:

誤差推定に関するクロンロッドの拡張のあるガウスの求積法:

ガウス規則は非一様のサンプル点を使う:

個のガウス点を持つメソッドは次数の多項式について厳密解を与える:

次数 のメソッドは次数 の多項式について厳密解を与えるのに十分な数の点を使う:

ロバットの点におけるクロンロッドの拡張を伴うガウスの求積法:

ロバットの点は一様ではなく,積分範囲の終点を含んでいる:

マルチパネル規則(すなわち合成規則)は指定された規則を複数の下位区分に適用する:

マルチパネル規則とともに他の任意の規則を使うことができる:

一次元規則の積を使う:

規則のリストは規則の積として自動的に解釈される:

x に一様サンプリングを,y には非一様サンプリングを使う:

多次元対称規則を使った多変数積分:

多次元規則はサンプル点の疎な対称格子を使う:

サンプル点の数を増やす:

発生装置の数を変えることでタイミングが改良されることがある:

レビン型のコロケーション規則を使った振動関数の積分:

多変数のレビン型規則:

積分戦略  (6)

大域的適応的積分戦略:

大域誤差が十分小さくなるまで最大誤差に基づいて範囲を再分割する:

局所的適応的積分戦略:

局所誤差が十分小さくなるまですべての範囲を再分割する:

密度を増しながら一様にサンプリングする台形規則:

範囲全体を再分割しより次元の低いメソッドを使う:

端点近くの密度をサンプリングする二重指数(「tanh-sinh」)戦略:

範囲全体を再分割し,次に変換する:

一様でランダムなサンプル点のモンテカルロ積分:

サンプル点の決定論的な連続で:

モンテカルロと擬似モンテカルロの大域的適応的バージョン:

さまざまな戦略で使われたサンプル点をプロットする:

記号処理  (5)

デフォルトで,ある種の記号処理が行われる:

自動数値メソッドを使うが,記号処理は行わない:

記号処理に明示的な時間制限を設ける:

区分関数の自動的な下位区分を制御する:

区分関数を自動的に下位区分すると,通常は評価数が少なくなる:

奇関数および偶関数の被積分関数の自動簡約を制御する:

自動簡約を行うと,通常関数の評価数が少なくなる:

高振動関数の自動メソッド選択を制御する:

特化されたメソッドを使うと高振動関数の評価回数が少なくなる:

検出機能をオフに切り換えると,非振動関数にかかる時間が短縮できる:

補間関数のノードで自動的に行う下位区分を制御する:

補間関数の下位区分で評価回数が少なくなる:

平滑関数の正確な補間の場合,下位区分は不要かもしれない:

MinRecursion  (1)

NIntegrateは被積分関数の鋭角のピークを見逃すことがある:

MinRecursionの値を大きくすることで,積分範囲をよりきめ細かく再分割するようにできる:

PrecisionGoal  (1)

異なる相対許容度についての評価に使われたサンプル数:

必要なサンプル数は,一般にPrecisionGoalについて指数的に増大する:

WorkingPrecision  (1)

NIntegrateはより高い作業精度で積分を計算することができる:

使用されるPrecisionGoalWorkingPrecisionより10小さい:

アプリケーション  (26)

基本アプリケーション  (2)

閉形式の解が存在しない積分を計算する:

Interpolationを使ってデータの離散集合を積分する:

Integrateは補間関数にも使うことができる:

データと補間をプロットする:

確率と期待値  (3)

が標準正規分布に従う場合のの確率を計算する:

NProbabilityを直接使う:

が標準的なコーシー分布に従う場合のsqrt(TemplateBox[{x}, Abs])の期待値を計算する:

NExpectationを直接使う:

確率密度関数(PDF)から累積分布関数(CDF)を計算する:

方程式を解くことで分位値を計算する:

Quantileを直接使う:

長さ,面積,体積  (7)

2本の曲線間の面積を両者の差分の一次元積分として計算する:

両者の領域境界上の二次元積分として:

計算された領域をプロットする:

陰的に与えられた円を含む領域の面積を計算する:

円環帯:

楕円:

楕円環帯:

ディスクセグメント:

球を含む単純な領域:

球殻の半分:

楕円体:

楕円体殻の半分:

球の楔形切片:

閉じたパラメトリック曲線で定義された領域の面積をグリーン(Green)の定理を使って計算する:

楕円形:

周期的な境界曲線:

パラメトリック曲線の長さを計算する:

楕円形:

周期的境界曲線:

三次元の円:

三次元の楕円:

より一般的な曲線:

環状バネ曲線:

パラメータ的に定義された曲面の面積を計算する:

楕円体の曲面:

環状曲面:

一般的なパラメトリック曲面:

発散定理を使い,パラメトリック曲面で囲まれた体積を計算する:

楕円体の体積:

環状の体積:

一般的なパラメトリック曲面の体積:

線,面,体積の積分  (3)

循環的な熱力学処理による:

圧・容積図でサイクルを可視化する:

一様密度の領域の質量と質量中心:

質量中心を可視化する:

三次元領域:

質量中心を可視化する:

ストークス(Stokes)の定理を使ってパラメータ曲面で囲まれた範囲の質量中心:

質量中心を可視化する:

積分変換  (4)

フーリエ(Fourier)変換を含む積分変換を計算する:

ラプラス(Laplace)変換:

メリン(Mellin)変換:

ヒルベルト(Hilbert)変換:

ハートレー(Hartley)変換:

[0,1]について周期関数のフーリエ(Fourier)係数を求める:

近似逆変換を示す:

二次分数フーリエ変換を計算する:

正方形開口による回析波の振幅のフラウンホーファー(Fraunhofer)積分:

光学軸近くの回析パターン:

特殊関数の積分表現  (3)

数直線上の第一種ベッセル関数 TemplateBox[{n, z}, BesselJ]の積分表現:

組込み関数BesselJ[n,x]と比較する:

複素右半平面上のガンマ関数 TemplateBox[{z}, Gamma]

組込み関数Gamma[z]と比較する:

数直線上の第二種不完全楕円積分 TemplateBox[{z, m}, EllipticE2]

組込み関数EllipticE[z,m]と比較する:

関数のノルムと内積  (2)

関数の ノルム:

ノルムを の関数としてプロットする:

TemplateBox[{f}, Norm]_p の関数として最小化する:

で定義された関数についての重み関数 に関しての の内積:

重み関数1でのルジャンドル(Legendre)多項式 TemplateBox[{n, x}, LegendreP]の直交性:

重み関数でのチェビシェフ(Chebyshev)多項式 の直交性:

重み関数 でのエルミート(Hermite)多項式 の直交性:

複素解析  (2)

における の残差を を取り囲む等高線上で計算する:

厳密値と比較する:

における関数の数値導関数を を取り囲む等高線上で計算する:

数値的に定義された関数を微分する:

特性と関係  (9)

NIntegrateは,低次元の領域については面積分を計算する:

これらの領域は低次元である:

パラメトリック曲面 についての面(曲線等)積分 は,通常の積分 で与えられる.ただし,はグラム行列式である:

パラメトリック円曲線上で積分する:

パラメトリック球面上で積分する:

零次元の領域上での積分は,点上での総和に相当する:

閉形の解が得られる場合は,NIntegrateの代りにIntegrateを使うことができる:

NIntegrateの結果は厳密値に近い:

NIntegrateの代りにNDSolveを使うことができる:

NIntegrateは大域的誤差制御を使うので,一般により精密な結果を返す:

オイラー・マクローリン(EulerMaclaurin)の公式を使って総和を近似する:

オイラー・マクローリンの公式による近似は厳密な結果に非常に近い:

NSumのオイラー・マクローリン法はIntegrateまたはNIntegrateを使う:

確率密度関数分布関数から累積分布関数を求める:

CDFも同じ結果を返す:

極における関数の剰余(Residue)は等高線積分に等しい:

-からまでの実軸を含む等高線上で数値的に積分する:

いくつかの特殊関数は積分として定義される:

高精度では,特殊関数の使用が好ましいことが多い:

考えられる問題  (6)

複雑な変動を含む被積分関数の場合,多くのレベルの適応的再帰が必要なことがある:

より高次の再帰部分分割レベルを指定すると収束結果が返される:

特異点が積分範囲の内側にある一次元積分:

特異点に適切な変換処理を行うためにその場所を指定する:

デフォルトは相対許容度を使うので,零である積分の計算には時間がかかることがある:

AccuracyGoalで絶対許容度を指定すると作業量が減る:

高次元の立体求積法に基づいたデフォルト精度の積分は時間がかかることがある:

PrecisionGoalを下げると計算速度が上がる:

同じ低目標精度(PrecisionGoal )で擬似モンテカルロ法を使うとより速くなる:

NIntegrateは15次以上の次元には自動的にモンテカルロ積分を使う:

関数を記号的に計算しようとすると時間がかかることがある:

関数定義を制限して記号評価を避ける:

指定されたパラメータについて数値積分を行う関数を定義する:

パラメータ値2で計算する:

この関数を記号パラメータに適用するとNIntegrateからのメッセージが生成される:

この関数をNMinimizeのような他の数値関数と一緒に使っても同じように警告が出される:

このメッセージを避けるために,引数が数値のときだけ評価する関数を定義する:

数値で計算する:

この関数は,数値以外に引数については評価されない:

これで,この関数をNMinimizeのような他の数値関数と一緒に使えるようになった:

おもしろい例題  (2)

低次元のメソッドを使った三次元積分のサンプル点:

関数をいくつかの特異曲線で積分する:

Wolfram Research (1988), NIntegrate, Wolfram言語関数, https://reference.wolfram.com/language/ref/NIntegrate.html (2014年に更新).

テキスト

Wolfram Research (1988), NIntegrate, Wolfram言語関数, https://reference.wolfram.com/language/ref/NIntegrate.html (2014年に更新).

CMS

Wolfram Language. 1988. "NIntegrate." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/NIntegrate.html.

APA

Wolfram Language. (1988). NIntegrate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NIntegrate.html

BibTeX

@misc{reference.wolfram_2024_nintegrate, author="Wolfram Research", title="{NIntegrate}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/NIntegrate.html}", note=[Accessed: 18-May-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_nintegrate, organization={Wolfram Research}, title={NIntegrate}, year={2014}, url={https://reference.wolfram.com/language/ref/NIntegrate.html}, note=[Accessed: 18-May-2024 ]}