DifferenceRoot[lde][k]
線形差分方程式 lde[h,k]で指定されたホロノミック数列
を与える.
DifferenceRoot[lde]
純ホロノミック数列
を与える.
DifferenceRoot
DifferenceRoot[lde][k]
線形差分方程式 lde[h,k]で指定されたホロノミック数列
を与える.
DifferenceRoot[lde]
純ホロノミック数列
を与える.
詳細
- 記号操作と数値操作の両方に適した数学的数列である.ホロノミック数列およびP再帰数列としても知られている.
- DifferenceRoot関数で定義されるホロノミック数列
は,多項係数
を持ち,初期値が
の,ホロノミック差分方程式
を満足する. - DifferenceRootは他の任意の数学関数と同じように使うことができる.
- FunctionExpandはDifferenceRoot関数を特殊関数によって変換しようとする.
- DifferenceRootで表される数列には,多くの特殊数列が含まれる.
- DifferenceRootReduceは多くの特殊数列をDifferenceRoot数列に変換することができる.
- ホロノミック数列は,以下を含む多くの操作の下で閉じている.
-
, 
定数倍,整数ベキ
, 
和と積 
離散たたみ込み
,
, 
離散シフト,差と和 - DifferenceRootは,Sum,RSolve,SeriesCoefficient等の関数によって,自動的に生成される.
- Sum,DifferenceDelta,GeneratingFunction等の関数には,DifferenceRoot入力を使うことができる.
- DifferenceRootは自動的にリストに縫い込まれる.
例題
すべて開く すべて閉じる例 (2)
fがフィボナッチ(Fibonacci)数列であると定義する:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]f[20]結果を組込みのFibonacci関数と比較する:
Fibonacci[20]DiscretePlot[f[n], {n, 0, 10}]関数の中にはDifferenceRoot関数を使って閉形式の答を作ることができるものもある:
Sum[(n + 4)!2 ^ n, n]RSolve[y[n + 3] + n y[n + 2] + y[n] == n! && y[0] == y[1] == y[2] == 1, y[n], n]SeriesCoefficient[Exp[(1/x^2 + 1)], {x, 0, n}]スコープ (21)
数値評価 (6)
DifferenceRoot数列を定義する:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] == (n + 1)y[n], y[1] == 1}]]f[20]f = DifferenceRoot[Function[{y, n}, {3.5 y[n + 1] == (n + 1)y[n], y[1] == 1}]][{3, 5, 10}]f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] - (n + 1)y[n], y[0] == 1 + 2I, y[1] == -3 + 2I}]][4]f = DifferenceRoot[Function[{y, n}, {y[n + 2] == x y[n + 1] - (n + 1)y[n], y[0] == 1, y[1] == -3}]][4]f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] - y[n], y[0] == 1, y[1] == 1 / 3}]][-5]DifferenceRootは要素単位でリストと行列に縫い込まれる:
DifferenceRoot[Function[{y, n}, {y[n + 1] / (n + 1) - y[n] == 0, y[0] == 0, y[1] == 1}]][{1, 2, 3, 4, 5}]DifferenceRoot[Function[{y, n}, {y[n + 1] / (n + 1) - y[n] == 0, y[-1] == 1, y[1] == 1}]][(| | |
| :- | :- |
| 3 | -1 |
| -2 | 6 |)]可視化 (2)
f というDifferenceRootオブジェクトを定義する:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] - 1 / 2y[n], y[0] == 0, y[1] == 1}]]DiscretePlot[f[n], {n, 0, 15}]f の最初の25項をListLinePlotを使ってプロットする:
ListLinePlot[Table[f[n], {n, 1, 25}], PlotRange -> All]f というDifferenceRootオブジェクトを定義する,パラメータ a は任意でもよい:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == a y[n + 1] - 1 / 2y[n], y[0] == 0, y[1] == 1}]]数列 f をパラメータ a のさまざまな値についてプロットする:
DiscretePlot3D[f[n], {n, 3, 10}, {a, -1, 1, 1 / 10}, AxesLabel -> Automatic]関数の特性 (9)
DifferenceRootは,線形再帰方程式に使うことができる:
DifferenceRoot[Function[{y, n}, {y[n + 1] - n y[n] == 0, y[0] == 0, y[1] == 1}]]DifferenceRootは,有理係数を持つ再帰方程式を多項式係数を持つ形に変換する:
DifferenceRoot[Function[{y, n}, {y[n + 1] / (n + 1) - y[n] == 0, y[0] == 0, y[1] == 1}]]DifferenceRoot[Function[{y, n}, {y[n + 1] - n y[n] == n!, y[1] == 1}]]DifferenceRootは多項式強制関数を持つ非同次方程式に使うことができる:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] - y[n] == n ^ 2, y[0] == 0, y[1] == 1}]]Table[f[n], {n, 1, 10}]DifferenceRootは複数の初期値で使うことができる:
DifferenceRoot[Function[{y, n}, {-n y[n] + (1 + n)y[1 + n] == 0, y[-1] == 0, y[1] == 1}]]DifferenceRootReduce[Fibonacci[n, x], n]Table[%, {n, 10}]
がInfinityに近付くときのDifferenceRootオブジェクトの最高次の漸近項を求める:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] - n ^ 2 y[n] == 0, y[1] == 1}]][n]DiscreteAsymptotic[f, n -> ∞]AsymptoticRSolveValueを使って同じ結果を得る:
AsymptoticRSolveValue[{y[n + 1] - n ^ 2 * y[n] == 0, y[1] == 1}, y[n], n -> ∞]DifferenceRootはパラメータを取ることができる:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == a y[n + 1] - 1 / 2y[n], y[0] == 0, y[1] == 1}]]Table[f[n], {n, 1, 5}]% /. a -> -1 / 10数列 f をパラメータ a のさまざまな値についてプロットする:
DiscretePlot3D[f[n], {n, 2, 10}, {a, -1, 1, 1 / 10}, AxesLabel -> Automatic]可能な場合は,DifferenceRootは組込み関数に縮退する:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]FullSimplify[f[n]]特殊数列 (3)
Fibonacciからの差分方程式:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]FullSimplify[f[n]]LucasLからの差分方程式:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 2, y[1] == 1}]]FullSimplify[f[n]]HarmonicNumberからの差分方程式:
f = DifferenceRoot[Function[{y, n}, {(n + 1)y[n + 1] == (n + 1) y[n] + 1, y[0] == 0}]]FullSimplify[f[n]]微分 (1)
ChebyshevT多項式に対応するパラメトリック数列を生成する:
ChebTSequence = DifferenceRootReduce[ChebyshevT[n, x], n]dChebTSequence = D[ChebTSequence, x]ChebyshevTの導関数が従う差分方程式を抽出する:
%[[0, 1]][y, n]この数列の最初の10項とChebyshevTの直接導関数の等価性をチェックする:
Table[Expand[dChebTSequence == D[ChebyshevT[n, x], x]], {n, 0, 10}]一般化と拡張 (2)
ホロノミックな定数項を持つ方程式は自動的に多項式係数に上げられる:
DifferenceRoot[Function[{y, n}, {y[n + 1] - y[n] == n!, y[0] == 1}]]f = DifferenceRoot[Function[{y, n}, {n y[1 + n] + (-1 + n) y[n] == 0, y[-1] == -1}]];Table[f[n], {n, -2, 2}]すべての n について定義されるように初期値 y[1]=2を加える:
g = DifferenceRoot[Function[{y, n}, {n y[1 + n] + (-1 + n) y[n] == 0, y[1] == 2, y[-1] == -1}]];Table[g[n], {n, -2, 2}]アプリケーション (7)
DifferenceRootを使ってHarmonicNumberの差分方程式形式を得る:
DifferenceRootReduce[HarmonicNumber[k], k]特殊数列の組合せを簡約してDifferenceRoot形式にする:
f = DifferenceRootReduce[Fibonacci[n] + 2LucasL[n] + n ^ 2, n]Table[f, {n, 0, 5}]Table[Fibonacci[n] + 2LucasL[n] + n ^ 2, {n, 0, 5}]DifferenceRootを使ってペル(Pell)数列を定義する:
PellNumber = DifferenceRoot[Function[{y, n}, {-y[n] - 2y[1 + n] + y[2 + n] == 0, y[0] == 0, y[1] == 1}]]Table[PellNumber[n], {n, 0, 5}]FullSimplify[PellNumber[n + 1]PellNumber[n - 1] - PellNumber[n] ^ 2 == (-1) ^ n]DifferenceRootReduce[PellNumber[n] == (-(1 - Sqrt[2]) ^ n + (1 + Sqrt[2]) ^ n) / (2Sqrt[2]), n]DifferenceRootReduce[Sum[PellNumber[i], {i, 0, 4n + 1}] == (PellNumber[2n] + PellNumber[2n + 1]) ^ 2, n]特殊数列の組合せを簡約してDifferenceRootにする:
f = DifferenceRootReduce[Fibonacci[n] ^ 2, n]DiscretePlot[f, {n, -5, 5}]テイラー(Taylor)展開が与えられたDifferenceRootオブジェクトである関数を生成する:
GeneratingFunction[DifferenceRoot[Function[{y, n}, {y[n] + y[n + 1] + (1 + n) (2 + n) y[n + 2] == 0, y[0] == 0, y[1] == 1}]][n], n, x]SeriesCoefficient[%, {x, 0, n}]BesselJ 関数を生成するDifferenceRootオブジェクトを生成する:
f = BesselJ[k, z];DifferenceRootReduce[f, k]f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]Sum[f[n], {n, 30}]F[x_] = GeneratingFunction[f[n], n, x]Table[SeriesCoefficient[F[x], {x, 0, n}], {n, 0, 10}]Fibonacci[Table[n, {n, 0, 10}]]特性と関係 (14)
DifferenceRootReduceを使ってDifferenceRootオブジェクトを生成する:
f = DifferenceRootReduce[Fibonacci[n], n]oΔe = First[Head[f]][y, n]oΔe /. y -> Fibonacci//FullSimplifyDifferenceRootオブジェクトの総和:
Sum[DifferenceRoot[Function[{y, n}, {-y[n] - y[n + 1] + y[n + 2] == 0, y[0] == 0, y[1] == 1}]][n], n]Table[%, {n, 1, 10}]Accumulate[Table[Fibonacci[n], {n, 0, 9}]]GeneratingFunctionは,ホロノミック数列からDifferentialRootオブジェクトを生成することがある:
GeneratingFunction[DifferenceRoot[Function[{y, n}, {y[n] + (1 + n) (2 + n) y[n + 2] == 0, y[0] == 0, y[1] == 1}]][n], n, x]特別なケースについては,GeneratingFunctionが明示的な関数を与えるかもしれない:
GeneratingFunction[DifferenceRoot[Function[{y, n}, {-y[n] - y[n + 1] + y[n + 2] == 0, y[0] == 0, y[1] == 1}]][n], n, z]DifferenceRootオブジェクトの指数母関数を求める:
ExponentialGeneratingFunction[DifferenceRoot[Function[{y, n}, {-y[n] - y[n + 1] + y[n + 2] == 0, y[0] == 0, y[1] == 1}]][n], n, z]差分方程式の解はDifferenceRootオブジェクトかもしれない:
RSolve[a[1 + n] == a[n] + n a[n - 1] + n! && a[0] == 1 && a[1] == 2, a, n]Sumからの結果はDifferenceRootオブジェクトかもしれない:
Sum[(n + 4)! 2^n, n]関数を展開した際の係数はDifferenceRootオブジェクトとして与えられるかもしれない:
SeriesCoefficient[Exp[Sqrt[x + 1]], {x, 0, n}]FindSequenceFunctionからの結果はDifferenceRootオブジェクトかもしれない:
FindSequenceFunction[{2, 3 / 2, 7 / 3, 13 / 4, 26 / 5, 49 / 6, 92 / 7, 169 / 8, 307 / 9, 551 / 10, 980 / 11, 1729 / 12, 3030 / 13, 5279 / 14, 9151 / 15, 15793 / 16, 27150 / 17, 46513 / 18, 79440 / 19, 135301 / 20}, n]FunctionExpandはDifferenceRootについてより簡単な式を生成しようとする:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]FunctionExpand[f[n]]FunctionExpandはパラメトリック数列についてより簡単な式を生成しようとする:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == a y[n + 1] + y[n], y[0] == 0, y[1] == 1}]]FunctionExpand[f[n]]f = DifferenceRoot[Function[{y, n}, {y[n + 1] == 3y[n], y[1] == 7}]][{1, 2, 3, 4, 5}]結果をRecurrenceTableの出力と比較する:
RecurrenceTable[{y[n + 1] == 3y[n], y[1] == 7}, y, {n, 1, 5}]DiscreteShiftはDifferenceRoot関数を取ってシフトされた数列を生成する:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] == (n + 2) y[n], y[1] == 1}]]f[{1, 2, 3, 4, 5}]ds = DiscreteShift[f[n], n]ds /. n -> {1, 2, 3, 4, 5}DifferenceDeltaはDifferenceRoot関数を入力として取る:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] == n ^ 2 y[n], y[1] == 1}]]dd = DifferenceDelta[f[n], n]dd//FunctionExpand考えられる問題 (2)
DifferenceRootは多項式係数がある線形微分方程式しか評価しない:
DifferenceRoot[Function[{y, n}, {(Sqrt[n] + 1)y[n + 1] - y^2[n] == 0, y[0] == 0, y[1] == 1}]]
DifferenceRootは整数項しか評価しない:
f = DifferenceRoot[Function[{y, n}, {y[n + 1] == (n + 1)y[n], y[1] == 1}]]f[3 / 2]おもしろい例題 (1)
DifferenceRoot関数を定義する:
PadovanNumber = DifferenceRoot[Function[{y, n}, {y[n + 3] - y[n + 1] - y[n] == 0, y[0] == 1, y[1] == 1, y[2] == 1}]]DiscretePlot[PadovanNumber[n], {n, 0, 20}]DifferenceRootReduce[PadovanNumber[k] == PadovanNumber[k - 2] + PadovanNumber[k - 4] + PadovanNumber[k - 8], k]DifferenceRootReduce[Sum[PadovanNumber[2k + 1], {k, 0, n}] == PadovanNumber[2n + 4] - 1, n]g = FunctionExpand[PadovanNumber[n]]DiscretePlot[g, {n, 0, 20}]テクニカルノート
-
▪
- 形式文字
テキスト
Wolfram Research (2008), DifferenceRoot, Wolfram言語関数, https://reference.wolfram.com/language/ref/DifferenceRoot.html (2020年に更新).
CMS
Wolfram Language. 2008. "DifferenceRoot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/DifferenceRoot.html.
APA
Wolfram Language. (2008). DifferenceRoot. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DifferenceRoot.html
BibTeX
@misc{reference.wolfram_2026_differenceroot, author="Wolfram Research", title="{DifferenceRoot}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/DifferenceRoot.html}", note=[Accessed: 13-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_differenceroot, organization={Wolfram Research}, title={DifferenceRoot}, year={2020}, url={https://reference.wolfram.com/language/ref/DifferenceRoot.html}, note=[Accessed: 13-September-2026]}