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∈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 RngDiff_example-rational-sols (H118E59)

> 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
V2.28, 13 July 2023