NSum
詳細とオプション
- NSumは,有限および無限の総和に使用することができる.
- NSum[f,{i,…},{j,…},…]は,多次元総和を評価するのに使用することができる.
- 以下のオプションを与えることができる.
-
AccuracyGoal Infinity 目標とする最終的な確度の桁数 EvaluationMonitor None f が評価されたときに常に評価される式 Method Automatic 使用する方法 NSumTerms 15 外挿に先駆けて使用する項数 PrecisionGoal Automatic 目標とする最終的な精度の桁数 VerifyConvergence True 収束をあからさまにテストするかどうか WorkingPrecision MachinePrecision 内部計算に使用する精度 - Methodオプションの典型的な設定値には以下のようなものがある.
-
"AlternatingSigns" 符号を交替させての加数メソッド "EulerMaclaurin" オイラー・マクローリン(Euler-Maclaurin)総和法 "WynnEpsilon" ウィン(Wynn)のイプシロン外挿法 - オイラー・マクローリン法のオプションAccuracyGoalとPrecisionGoalは,最終的な解を獲得する場合に試行する精度と確度の指定に使用することができる.NSumは,その推定誤差により,目標とする精度や確度が達成されたことが暗示されると停止する.
- 十分に病的であるといえる被総和関数には,NSumに使用されているアルゴリズムが誤った解答を与えることがあり得るということを十分理解しておいてほしい.ほとんどの場合,NSumのオプションの設定に対する敏感さを見ることでこの解答をテストすることができる.
- VerifyConvergenceは,無限総和に限定して使用される.
- N[Sum[…]] は,記号的には計算できない総和を求める際にはNSumを呼び出す.
- NSumは,まずすべての変数の値を局所化し,次に記号的となった変数で f を評価し,繰り返して結果を数値的に評価する.
- NSumは属性HoldAllを持ち,Blockを用いて実質的に変数を局所化する.
例題
すべて開く すべて閉じる例 (1)
スコープ (5)
NSum[1 / i ^ 2, {i, 100, 10 ^ 6}]NSum[1 / i ^ 2, {i, 100, ∞}] - NSum[1 / i ^ 2, {i, 10 ^ 6, ∞}]NSum[(-1) ^ n(2 / n) ^ k / k ^ 2, {n, 2, ∞}, {k, 1, ∞}]NSum[(-1) ^ n(2 / n) ^ k / k ^ 2, {n, 2, ∞}, {k, 1, n}]NSum[Log[x] / x ^ (2 + 2I), {x, 1, ∞}]NSum[1 / 2 ^ i, {i, 0, ∞, 2}]NSum[1 / 2 ^ (2j), {j, 0, ∞}]オプション (9)
AccuracyGoalとPrecisionGoal (1)
NSum[1 / n ^ (11 / 10), {n, 1, ∞}]% - Zeta[11 / 10]NSum[1 / n ^ (11 / 10), {n, 1, ∞}, AccuracyGoal -> 4, PrecisionGoal -> 4] - Zeta[11 / 10]NSum[1 / n ^ (11 / 10), {n, 1, ∞}, AccuracyGoal -> 10, PrecisionGoal -> 10] - Zeta[11 / 10]EvaluationMonitor (3)
Block[{k = 0}, {NSum[(1/(n + 1)^2), {n, 0, ∞}, EvaluationMonitor :> k++], k}]ListPlot[Reap[NSum[(1/(n + 1)^2), {n, 0, ∞}, EvaluationMonitor :> Sow[n]]][[2, 1]]]ListPlot[Reap[NSum[((-1)^n/(n + 1)^2), {n, 0, ∞}, EvaluationMonitor :> Sow[n]]][[2, 1]]]Method (1)
非常に精密な総和近似を得るために級数を交替するメソッドを使う:
NSum[(-1) ^ x / (1 + (x - 12) ^ 2), {x, 0, ∞}, Method -> "AlternatingSigns", WorkingPrecision -> 30]Sumによって計算された厳密な結果との誤差:
% - Sum[(-1) ^ x / (1 + (x - 12) ^ 2), {x, 0, ∞}]NSum[(-1) ^ x / (1 + (x - 12) ^ 2), {x, 0, ∞}, WorkingPrecision -> 30] - Sum[(-1) ^ x / (1 + (x - 12) ^ 2), {x, 0, ∞}]NSumTerms (1)
デフォルトで,NSumは最後尾を近似する前にまず15項を使う:
NSum[1 / ((k - 20) ^ 2 + 1), {k, 0, ∞}]% - Sum[1 / ((k - 20) ^ 2 + 1), {k, 0, ∞}]ListPlot[Table[1 / ((k - 20) ^ 2 + 1), {k, 1, 40}], PlotRange -> All]NSumTermsを大きくしてこの特性を含むようにすると近似が向上する:
NSum[1 / ((k - 20) ^ 2 + 1), {k, 0, ∞}, NSumTerms -> 30]% - Sum[1 / ((k - 20) ^ 2 + 1), {k, 0, ∞}]VerifyConvergence (2)
NSum[(-1) ^ k / (k + Log[k]), {k, 1, ∞}]//TimingNSum[(-1) ^ k / (k + Log[k]), {k, 1, ∞}, VerifyConvergence -> False]//TimingNSum[2^i, {i, 0, Infinity}, VerifyConvergence -> False]Sum[a^i, {i, 0, Infinity}]% /. a -> 2アプリケーション (2)
Fibonacci数の逆数の総和を近似する:
NSum[1 / Fibonacci[i], {i, ∞}]誤差の総和を求めることで緩慢に収束する数列の近似極限を求める:
f[n_] := Exp[-1 / (n + 1)];NSum[If[n == 1, f[1],
f[n] - f[n - 1]], {n, 1, ∞}, Method -> "WynnEpsilon"]Limit[f[n], n -> Infinity]特性と関係 (3)
閉形の総和が得られる場合はNSumの代りにSumを使うことができる:
exact = Sum[(1/x^2 + 5), {x, 0, ∞}]NSum[(1/x^2 + 5), {x, 0, ∞}] - exactExp[NSum[Log[(4n ^ 2) / (4n ^ 2 - 1)], {n, 1, ∞}]]% - Product[(4n ^ 2) / (4n ^ 2 - 1), {n, 1, ∞}]近似はNProductで直接行うこともできる:
NProduct[(4n ^ 2) / (4n ^ 2 - 1), {n, 1, ∞}]NSumを使って(0,∞)上の振動積分を計算する:
f[i_ ? NumericQ] := NIntegrate[BesselJ[3, x] / Sqrt[x], {x, BesselJZero[3, i - 1], BesselJZero[3, i]}]NIntegrate[BesselJ[3, x] / Sqrt[x], {x, 0, BesselJZero[3, 1]}] + NSum[f[i], {i, 2, ∞}]NIntegrateでも同じ結果が得られる:
NIntegrate[BesselJ[3, x] / Sqrt[x], {x, 0, ∞}]考えられる問題 (3)
NSum[(1/n^3), {n, 1, ∞}, Method -> "WynnEpsilon", WorkingPrecision -> 30]//PrecisionNSumでNIntegrateを使うと収束メッセージが出ることがある:
NSum[1 / n ^ (1001 / 1000), {n, 1, ∞}]
% - Zeta[1001 / 1000]Methodオプションを使ってNIntegrateの適切なパラメータを大きくすることができる:
NSum[1 / n ^ (1001 / 1000), {n, 1, ∞}, Method -> {"EulerMaclaurin", Method -> {"NIntegrate", "MaxRecursion" -> 20, Method -> "DoubleExponential"}}]% - Zeta[1001 / 1000]% - Zeta[11 / 10]NSumはある種の無限和については発散を感知しないことがある:
NSum[1 / k, {k, 1, ∞}]
収束の検証は1に等しいときには結論の出ない比検定に基づいて行われる:
Limit[(1 / (k + 1)) / (1 / k), k -> ∞]テクニカルノート
履歴
1988 で導入 (1.0) | 2003 で更新 (5.0) ▪ 2007 (6.0)
テキスト
Wolfram Research (1988), NSum, Wolfram言語関数, https://reference.wolfram.com/language/ref/NSum.html (2007年に更新).
CMS
Wolfram Language. 1988. "NSum." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2007. https://reference.wolfram.com/language/ref/NSum.html.
APA
Wolfram Language. (1988). NSum. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NSum.html
BibTeX
@misc{reference.wolfram_2026_nsum, author="Wolfram Research", title="{NSum}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/NSum.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_nsum, organization={Wolfram Research}, title={NSum}, year={2007}, url={https://reference.wolfram.com/language/ref/NSum.html}, note=[Accessed: 04-November-2026]}