gives the discrete shift TemplateBox[{{f, (, i, )}, i}, DiscreteShift2]=f(i+1).


gives the multiple shift .


gives the multiple shift of step h.


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.


open allclose all

Basic Examples  (4)

Shift with respect to i:

Shift with step h:

Multiple shifts with respect to i:

Enter using shift, and subscripts using :

The shift with respect to i of scoped operators:

Scope  (10)

Basic Use  (3)

Compute the first and second shift:

First and second shift with step h:

The first partial shifts with respect to i and j :

Higher partial shifts:

Partial shifts with steps r and s:

Special Sequences  (3)

Elementary functions:

Integer functions:

Holonomic sequences satisfy a linear difference equation:

Special Operators  (4)


Shifting inside the summation sign:

In this case i is not a free variable:


Differencing product limits:


Shifting integration limits:


Here the i is not a free variable:

Applications  (2)

Define a symbolic mean operator using DiscreteShift:

It also works with scoping constructs:

Use on special functions:

Use DiscreteShift to define derivatives:

Properties & Relations  (3)

DiscreteShift is a linear operator:

Product rule:

Quotient rule:

Chain rule:

DiscreteShift can be expressed in terms of DifferenceDelta:

DifferenceDelta can be expressed in terms of DiscreteShift:

DiscreteRatio can be expressed in terms of DiscreteShift:

Possible Issues  (1)

Using ReplaceAll to implement DiscreteShift can be dangerous:

DiscreteShift understands scoping rules:

Introduced in 2008