NLimit[expr,z->z0]
z が z0に近付く際の expr の極限値を数値的に求める.
詳細とオプション
例題
例
スコープ
オプション
Terms
Scale
Direction
Method
WynnDegree
WorkingPrecision
アプリケーション
特性と関係
考えられる問題
関連項目
テクニカルノート
関連するガイド
NumericalCalculus`
NumericalCalculus`
NLimit
NLimit[expr,z->z0]
z が z0に近付く際の expr の極限値を数値的に求める.
詳細とオプション
- NLimitを使うためには,まず数値計算パッケージをロードしなくてはならない.それにはNeeds["NumericalCalculus`"]を実行する必要がある.
- 式 expr は,その引数 z が数値である場合は,数値でなければならない.
- NLimitは極限を求めるために点 z0に接近する値の列を構築し,外挿を使う.
- NLimitは実際にはゼロとなるような小さい数を識別することができない.このような誤りの残余を排除するためにChopを使う必要があることがある.
- 極限がベキ法則的に無限に近付く場合,NLimitは失敗することがよくある.
- 次のオプションを与えることができる:
-
WorkingPrecision MachinePrecision 内部計算で使用する精度 Direction Automatic 接近の方向を与えるベクトル Scale 1 ステップ列の最初の刻み幅 Terms 7 極限の評価に使用する項の数 Method EulerSum 結果の評価に使用するメソッド WynnDegree 1 ウィン(Wynn)のイプシロン法で使用する次数 - オプションDirection->d は,有限の極限点 z0 への接近ベクトルが複素数 d で与えられることを指定する.デフォルト設定のDirection->AutomaticはDirection->-1と等価であり,z が大きい値から z0に近付くときの極限を計算する.
- NLimitは原点からの放射線上で無限の極限点に近付く.
- オプションScaleは構築された列の最初のステップを指定する.
- 有限極限点 x0 では,初期ステップは x0 から距離Scaleだけ離れたところである.無限極限点では,原点から距離Scaleだけ離れたところである.
- 結果の正確さは通常項の数を増やすことで改善される.しかし通常WorkingPrecisionを増やすことも必要である.
- Methodに可能な設定は以下の通りである:
-
EulerSum 列を総和に変換し,EulerSumを使う SequenceLimit 構築された列にSequenceLimitを使う - オプションWynnDegreeは,SequenceLimitで使われるウィンのイプシロン法の反復回数を指定する.一般に,
回の反復に対しては少なくとも
個の項がなければならない.
例題
すべて開く すべて閉じる例 (2)
スコープ (2)
オプション (8)
Terms (2)
Needs["NumericalCalculus`"]極限値に指数関数的に接近する式にはもっと少ない項しか必要ない:
NLimit[Tanh[x], x -> ∞]NLimit[Tanh[x], x -> ∞, Terms -> 3]Needs["NumericalCalculus`"]lim = Limit[(10^x - 1/x), x -> 0]NLimit[(10^x - 1/x), x -> 0, Method -> SequenceLimit] - limNLimit[(10^x - 1/x), x -> 0, Terms -> 10, Method -> SequenceLimit] - limScale (1)
Needs["NumericalCalculus`"]Scaleを使って,式が未定義である領域を避ける:
f[a_ ? NumericQ] := NIntegrate[Zeta[a z], {z, 2 / a, 1}] /; a > 1NLimit[f[a], a -> Infinity]関数
は
のとき分岐するので,この分岐を避けるために初期ステップを選ぶ:
NLimit[f[a], a -> ∞, Scale -> 10]Direction (1)
Needs["NumericalCalculus`"]負の実軸に沿って0に接近する(zはz
co
を使って入力することができる):
NLimit[z + (z/z), z -> 0, Direction -> 1]NLimit[z + (z/z), z -> 0, Direction -> -I]//ChopNLimit[z + (z/z), z -> 0, Direction -> -Exp[225° I]]//ChopMethod (2)
Needs["NumericalCalculus`"]NLimit[(Sin[x]/x), x -> ∞]NLimit[(Sin[x]/x), x -> ∞, Method -> SequenceLimit]Needs["NumericalCalculus`"]NLimit[Tan[z], z -> ∞ I]ここではSequenceLimitを使うと正しい解が得られる:
NLimit[Tan[z], z -> ∞ I, Method -> SequenceLimit]WynnDegree (1)
Needs["NumericalCalculus`"]Method->SequenceLimitを使うときに,WynnDegreeを増加すると極限の確度が改善されることがある:
lim = SinIntegral[∞]NLimit[SinIntegral[z], z -> ∞, Terms -> 10, Method -> SequenceLimit, WynnDegree -> 1] - limNLimit[SinIntegral[z], z -> ∞, Terms -> 10, Method -> SequenceLimit, WynnDegree -> 3] - limWorkingPrecision (1)
Needs["NumericalCalculus`"]WorkingPrecisionだけを増やしてもより正確な結果が出るわけではない:
lim = Limit[(10^x - 1/x), x -> 0]WorkingPrecision->20での誤差:
NLimit[(10^x - 1/x), x -> 0, WorkingPrecision -> 20] - limWorkingPrecision->30での誤差:
NLimit[(10^x - 1/x), x -> 0, WorkingPrecision -> 30] - limNLimit[(10^x - 1/x), x -> 0, WorkingPrecision -> 20, Terms -> 10] - limアプリケーション (2)
Needs["NumericalCalculus`"]g[a_ ? NumericQ] := (1/a)Log[NIntegrate[z^a Cot[z], {z, 0, Pi / 2}, MaxRecursion -> 10]]NLimit[g[a], a -> Infinity, Terms -> 10]Needs["NumericalCalculus`"]NLimit[(Sqrt[z]BesselJ[0, z]/Cos[z - (π/4)]), z -> ∞, Terms -> 10]lim = (Sqrt[z]/Cos[z - (π/4)])Series[BesselJ[0, z], {z, ∞, 0}]//NormalN[lim]