Rational Solutions

RationalSolutions(L): RngDiffOpElt -> SeqEnum

Given a differential operator \(L\), a basis of the nullspace of rational solutions of \(L(y)=0\) in \(F\) is returned as a sequence of basis elements. This function only works for operators whose derivation is defined by a differential. The algorithm that is used is described in Section \(4.1\) of [vdPS03].

HasRationalSolutions(L, g): RngDiffOpElt, RngElt -> BoolElt, RngElt, SeqEnum

Given a differential operator \(L\) with coefficients in \(F\) and an element \(g\) of \(F\), return true if there is an element \(y\in F\) satisfying \(L(y)=g\). If such a solution exists a particular solution in \(F\) and the basis of the nullspace of rational solutions in \(F\) are also returned. If there is no solution, only false is returned. This function only works for operators whose derivation is defined by a differential.

Example: Rational Solutions of an Operator (ex-a82ef2)
> F<z> := RationalDifferentialField(Rationals());
> R<D> := DifferentialOperatorRing(F);
> H := (z^2-z)*D^2+(3*z-6)*D+1;
> RationalSolutions(H);
[ (z^4 - 4*z^3 + 6*z^2 - 4*z + 1)/z^5 ]
> L := D^2-6/z^2;
> RationalSolutions(L);
[ z^3, 1/z^2 ]
> Apply(L, z^3+1/z^2);
0
> HasRationalSolutions(L, 6/z);
true -z [ z^3, 1/z^2 ]
> L(-z);
6/z

Run in calculator (opens in a new tab)