DiscreteShift[f,i]
gives the discrete shift
.
DiscreteShift[f,{i,n}]
gives the multiple shift
.
DiscreteShift[f,{i,n,h}]
gives the multiple shift of step h.
DiscreteShift[f,i,j,…]
computes partial shifts with respect to i, j, ….
DiscreteShift
DiscreteShift[f,i]
gives the discrete shift
.
DiscreteShift[f,{i,n}]
gives the multiple shift
.
DiscreteShift[f,{i,n,h}]
gives the multiple shift of step h.
DiscreteShift[f,i,j,…]
computes partial shifts with respect to i, j, ….
Details and Options
- DiscreteShift[f,i] can be input as if. The character is entered using
shift
or \[DiscreteShift]. The variable i is entered as a subscript. - All quantities that do not explicitly depend on the variables given are taken to have constant partial shift.
- DiscreteShift[f,i,j] can be input as i,jf. The character \[InvisibleComma], entered as
,
, can be used instead of the ordinary comma. - DiscreteShift[f,{i,n,h}] can be input as {i,n,h}f.
- DiscreteShift[f,…,Assumptions->assum] uses the assumptions assum in the course of computing discrete shifts.
Examples
open all close allBasic Examples (4)
DiscreteShift[f[i], i]DiscreteShift[f[i], {i, h}]Multiple shifts with respect to i:
DiscreteShift[Sin[i ^ 3 2Pi / 7], {i, 10}]DiscreteShift[Fibonacci[i], {i, 5}]Enter using
shift
, and subscripts using
:
Subscript[, {i, 5}]i!The shift with respect to i of scoped operators:
DiscreteShift[Sum[f[k], {k, i + a, i + b}], i]DiscreteShift[Limit[f[x], x -> i], i]DiscreteShift[Derivative[i][f][x], i]Scope (10)
Basic Use (3)
Compute the first and second shift:
DiscreteShift[f[i], i]DiscreteShift[f[i], {i, 2}]First and second shift with step h:
DiscreteShift[f[i], {i, 1, h}]DiscreteShift[f[i], {i, 2, h}]The first partial shifts with respect to i and j
:
Subscript[, i, j]f[i, j]Subscript[, {i, 2}, j]f[i, j]Partial shifts with steps r and s:
Subscript[, {i, 1, r}, {j, 1, s}]f[i, j]Special Sequences (3)
DiscreteShift[2 ^ i, i]DiscreteShift[i ^ 4 + 20 * i ^ 2 + 11i ^ 3, {i, 3}]DiscreteShift[(i ^ 2 + 5) / (i - 7), i]DiscreteShift[Floor[i], i]DiscreteShift[FractionalPart[i], i]DiscreteShift[Round[i], {i, 3}]Holonomic sequences satisfy a linear difference equation:
DiscreteShift[Fibonacci[i], {i, 5}]DiscreteShift[Gamma[i], {i, 3}]DiscreteShift[CatalanNumber[i], {i, 3}]DiscreteShift[BesselJ[i, x], {i, 2}]Special Operators (4)
DiscreteShift[Sum[f[i], i], i]DiscreteShift[Sum[f[i], {i, n, n + a}], n]Shifting inside the summation sign:
DiscreteShift[Sum[f[i, j], i], j]In this case i is not a free variable:
DiscreteShift[Sum[f[i], {i, a, b}], i]DiscreteShift[Product[f[i], i], i]DiscreteShift[Product[f[i, j], i], j]DiscreteShift[Product[f[i], {i, m, n}], m]DiscreteShift[Product[f[i], {i, m, n}], n]DiscreteShift[Integrate[f[i], i], i]DiscreteShift[Integrate[f[i, j], i], j]DiscreteShift[Integrate[f[i], {i, a, j}], j]DiscreteShift[Limit[f[i], i -> j], j]Here the i is not a free variable:
DiscreteShift[Limit[f[i], i -> j], i]Applications (2)
Define a symbolic mean operator using DiscreteShift:
DiscreteMean[f_, i_] := Simplify[(1/2)(Subscript[, i]f + f)]DiscreteMean[f[i], i]It also works with scoping constructs:
DiscreteMean[Sum[f[i], i], i]DiscreteMean[Limit[f[i], i -> j], i]DiscreteMean[Gamma[i], i]Use DiscreteShift to define derivatives:
Der[f_, i_] := Limit[(DiscreteShift[f, {i, 1, h}] - f) / h, h -> 0]Der[i ^ 2, i]Der[Sin[i], i]Der[E ^ i, i]Properties & Relations (3)
DiscreteShift is a linear operator:
Subscript[, i](a f[i] + b g[i])Subscript[, i](f[i]g[i])Subscript[, i](f[i]/g[i])Subscript[, i]f[g[i]]DiscreteShift can be expressed in terms of DifferenceDelta:
DiscreteShiftDelta[f_, {i_, n_}] := Underoverscript[∑, k = 0, n]Binomial[n, k]Subscript[, {i, k}]fDiscreteShiftDelta[f[i], {i, 2}]DiscreteShift[f[i], {i, 2}]Simplify[%% - %]DifferenceDelta can be expressed in terms of DiscreteShift:
DifferenceDeltaShift[f_, {i_, n_}] := Underoverscript[∑, k = 0, n]Binomial[n, k](-1)^n - kSubscript[, {i, k}]fDifferenceDeltaShift[f[i], {i, 2}]DifferenceDelta[f[i], {i, 2}]DiscreteRatio can be expressed in terms of DiscreteShift:
DiscreteShift[f[i], i] / f[i]DiscreteRatio[f[i], i]Possible Issues (1)
Using ReplaceAll to implement DiscreteShift can be dangerous:
Integrate[f[x], x] /. x -> x + 1DiscreteShift understands scoping rules:
DiscreteShift[Integrate[f[x], x], x]See Also
DifferenceDelta DiscreteRatio DifferenceQuotient RSolve GeneratingFunction ReplaceAll
Characters: \[DiscreteShift]
Related Guides
History
Text
Wolfram Research (2008), DiscreteShift, Wolfram Language function, https://reference.wolfram.com/language/ref/DiscreteShift.html.
CMS
Wolfram Language. 2008. "DiscreteShift." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DiscreteShift.html.
APA
Wolfram Language. (2008). DiscreteShift. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiscreteShift.html
BibTeX
@misc{reference.wolfram_2026_discreteshift, author="Wolfram Research", title="{DiscreteShift}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteShift.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_discreteshift, organization={Wolfram Research}, title={DiscreteShift}, year={2008}, url={https://reference.wolfram.com/language/ref/DiscreteShift.html}, note=[Accessed: 13-June-2026]}