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 = 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}]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}]]通过应用 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 以元素方式线性作用于(threads over)列表和矩阵:
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)
定义一个 DifferenceRoot 对象,称作 f:
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}]使用 ListLinePlot 绘制 f 的前25个项:
ListLinePlot[Table[f[n], {n, 1, 25}], PlotRange -> All]定义一个 DifferenceRoot 对象 f,其中参数 a 可为任意值:
f = DifferenceRoot[Function[{y, n}, {y[n + 2] == a y[n + 1] - 1 / 2y[n], y[0] == 0, y[1] == 1}]]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 / 10DiscretePlot3D[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]通过对 ChebyshevT 直接求导检查是否与该数列前 10 项相等:
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}]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}]应用 (6)
使用 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 定义佩尔数数列:
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}]生成一个函数,该函数的泰勒展开是给定的 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]属性和关系 (14)
用 DifferenceRootReduce 产生 DifferenceRoot 对象:
f = DifferenceRootReduce[Fibonacci[n], n]oΔe = First[Head[f]][y, n]oΔe /. y -> Fibonacci//FullSimplify一个 DifferenceRoot 对象的和:
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 语言. 2008. "DifferenceRoot." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/DifferenceRoot.html.
APA
Wolfram 语言. (2008). DifferenceRoot. Wolfram 语言与系统参考资料中心. 追溯自 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: 12-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: 12-September-2026]}