return the canonical system equivalent to the given system
CanonicalSystem(shift, sys, vars)
CanonicalSystem(shift, A, b, x, case)
CanonicalSystem(shift, A, x, case)
name indicating required shift of the system; one of 'difference' or 'q-difference'
list of equations; linear functional system
list of function variables such as [y1(x), y2(x), ...]; variables to solve for
Matrix with rational elements
Vector with rational elements
name indicating the case of the system; one of 'differential', 'difference', or 'qdifference'
The CanonicalSystem function returns the canonical system that is equivalent to the given linear functional system of equations with polynomial coefficients.
The system parameter is entered either in list form (a list of equations sys and a list of function variables vars to solve for), or in matrix form (matrix A, vector b, and the independent variable x, where the vector b is optional).
The matrix form specifies the system Ly⁡x=Ay⁡x+b, where L is the operator (either differential, difference, or q-difference), y⁡x is the vector of the functions to solve for, A is a rational matrix, and b is a rational vector (right-hand side).
For the matrix from of the calling sequence, the case of the system must be specified as one of 'differential', 'difference', or 'qdifference'. If b is not specified, the system is assumed to be homogeneous.
Set the shift parameter to the required shift of the system ('difference' or 'q-difference').
For a given linear functional system of equations with polynomial coefficients, CanonicalSystem returns the system equivalent to the given one, but in a special canonical form. In other words, a list of equations where the first has the operator (differential, difference, or q-difference) applied to the first function variable, the second has the operator applied to the second function variable, etc. This means that the system could be expressed in the form Ly⁡x=Ay⁡x+b. Additionally, if some equations have no terms with the operator applied, then they resolved and some of the function variables expressed in terms of the others. For the difference and q-difference case the linear dependence of rows of the matrix A is further analyzed and if such dependencies exist then they are used to express some more function variables in terms of the others.
The system is transformed as follows. First, the system for the difference and q-difference case is shifted in such a way that all shifts in the resulting system are non-negative, the smallest being equal to zero. Then, the terms with the applied operator are successively made canonical. If equations having no terms with the operator applied appear in the process, they are resolved. For the matrix input case, the above steps are omitted since the form of the input ensures meeting the conditions. Finally, the dependencies of rows of matrix A are analyzed and resolved if any dependencies exist.
The equivalent canonical system that is returned is in the form suitable to be used by other functions of the LinearFunctionalSystems package. Namely, it either returns a sequence of a new list of equations and a list of functions to be solved for, or a new matrix, vector, variable, and case. shiftis set to the required shift of the system (difference or q-difference). Additionally, the transformation matrix for converting form original list of functional variables to the new one (possibly reduced due to expressing some of the variables in terms of the others) is returned (note the last column of the matrix is corresponding to the free term of the transformation).
The error conditions associated with CanonicalSystem are the following:
Those which are generated by LinearFunctionalSystems[Properties].
Only first order systems are handled.
This function is part of the LinearFunctionalSystems package, and so it can be used in the form CanonicalSystem(..) only after executing the command with(LinearFunctionalSystems). However, it can always be accessed through the long form of the command by using the form LinearFunctionalSystems[CanonicalSystem](..).
Download Help Document
What kind of issue would you like to report? (Optional)