rsolve  recurrence equation solver

Calling Sequence


rsolve(eqns, fcns)
rsolve(eqns, fcns, 'genfunc'(z))
rsolve(eqns, fcns, 'makeproc')
rsolve(eqns, fcns, 'series')


Parameters


eqns



single equation or a set of equations

fcns



function name or set of function names

z



name, the generating function variable





Description


•

The rsolve command attempts to solve the recurrence relation(s) specified in eqns for the functions in fcns, returning an expression for the general term of the function.

•

The first argument must be a single recurrence relation or a set of recurrence relations and boundary conditions. Any expressions in eqns, which are not equations are understood to be equal to zero.

•

The second argument fcns indicates the functions that rsolve must solve for. A function may be represented by a name or an unevaluated function call whose argument is a name. If the function is represented by a name, the index variable for the solution is deduced from the recurrence equations. If the function is represented by an unevaluated function call, the argument name is used as the solution index. If the solution index differs from the index name in a recurrence equation, then the equation must be independent of the solution index.

•

If fcns is a set, the solution is returned as a set of equations. The lefthand side of each equation is the function name. Otherwise, an expression for the solution is returned.

•

The rsolve command can solve linear recurrences with constant coefficients, systems of linear recurrences with constant coefficients, divide and conquer recurrences with constant coefficients, many first order linear recurrences, and some nonlinear first order recurrences.

•

If insufficient boundary conditions are given, rsolve uses symbolic function names as default values.


For linear recurrences with constant coefficients and systems of linear recurrences with constant coefficients, if no boundary conditions are given, symbolic function calls starting with index 0 are used.


Note: A solution of a recurrence can be completely different based on the starting point of the recurrence. If output is desired in terms of symbolic function calls starting at an index different from 0, use conditions of the form for a recurrence starting at i.


For divide and conquer recurrences, a symbolic function call at index 1 is used.

•

The ratio of the indices in divide and conquer recurrences must be an integer greater than 1 or a name. If the ratio is a name, it is understood to represent an integer greater than 1. It is assumed that the index variable is a nonnegative power of the ratio.

•

Boundary conditions for linear recurrences with constant coefficients and systems of linear recurrences with constant coefficients may be specified in one of three ways:


 c is a constant with respect to the index variable for the sequence


 is an expression of k.

•

The option is valid for linear recurrences with constant coefficients and systems of linear recurrences with constant coefficients. In this case, rsolve returns the generating functions of the sequences defined by eqns. The name z is used as the generating function variable.

•

The makeproc option is valid for any single recurrence that can be uniquely isolated (solved) for the highest indexed function. In this case, rsolve returns a procedure body for evaluating the function defined by eqns.

•

The series option leads to finding formal series solution using LinearFunctionalSystems[SeriesSolution]. The truncation order of the series is determined by the global variable Order.

•

Setting infolevel['rsolve'] := 2 provides information about the choices rsolve makes to evaluate a recurrence.

•

If rsolve is unable to compute a solution, it returns the unevaluated function invocation. This unevaluated rsolve invocation may be understood by other functions; for example, the asympt function is able to compute an asymptotic series expansion for the solution in some cases.



Examples


>


 (1) 
>


 (2) 
>


 (3) 
>


 (4) 
>


 (5) 
>


 (6) 
>


 (7) 
>


 (8) 
>


 (9) 
>


 (10) 
An example of a recurrence having different solutions based on the starting point
>


 (11) 
>


 (12) 
An example of a series solution
>


>


>


 (13) 

