Element Operations on Differential Operators
Category and Parent
Arithmetic
All the usual arithmetic operations are possible for differential operators. It follows from the multiplication rule for differential operators that the multiplication of differential operators is non–commutative.
- s + t: RngDiffOpElt, RngDiffOpElt -> RngDiffOpElt
- s + t: RngDiffOpElt, RngElt -> RngDiffOpElt
- s + t: RngElt, RngDiffOpElt -> RngDiffOpElt
The sum of the two differential operators \(s\) and \(t\).
- s - t: RngDiffOpElt, RngDiffOpElt -> RngDiffOpElt
- s - t: RngDiffOpElt, RngElt -> RngDiffOpElt
- s - t: RngElt, RngDiffOpElt -> RngDiffOpElt
The difference between the differential operators \(s\) and \(t\).
- s * t: RngDiffOpElt, RngDiffOpElt -> RngDiffOpElt
- s * t: RngDiffOpElt, RngElt -> RngDiffOpElt
- s * t: RngElt, RngDiffOpElt -> RngDiffOpElt
The product of the differential operators \(s\) and \(t\).
- s ^ n: RngDiffOpElt, RngIntElt -> RngDiffElt
Given a differential operator \(s\) and an integer \(n\ge 0\), return the \(n\)-th power of \(s\).
Predicates and Booleans
- s eq t: RngDiffOpElt, RngDiffOpElt -> BoolElt
Return
trueiff the differential operators \(s\) and \(t\) are exactly the same.
- IsZero(L): RngDiffOpElt -> BoolElt
Return
trueiff the differential operator \(L\) is the zero element of its parent.
- IsOne(L): RngDiffOpElt -> BoolElt
Return
trueiff the differential operator \(L\) is the unity element of its parent.
- IsWeaklyEqual(L, P): RngDiffOpElt, RngDiffOpElt -> BoolElt
Returns
trueif and only if the differential operator \(L\) is weakly equal to the operator \(P\). This means that the \(i\)-th coefficients of \(L\) and \(P\) should be weakly equal to each other for every \(i \in [0..\max(\deg(L),\deg(P))]\).
Coefficients and Terms
Differential operators look like univariate polynomials with coefficients in a differential ring. Some of the terminology used for polynomial rings is mimicked for differential operators.
- Eltseq(L): RngDiffOpElt -> SeqEnum
- Coefficients(L): RngDiffOpElt -> SeqEnum
Given an operator \(L\) with coefficients in \(R\), this function returns the sequence of elements in \(R\), that are the coefficients of \(L\). The sequence is ordered from the constant coefficient to the coefficient of the highest order term of \(L\).
- Coefficient(L, i): RngDiffOpElt, RngIntElt -> RngElt
Given an operator \(L\) with coefficients in \(R\), this function returns the coefficient of the monomial of degree \(i\) in \(L\), as an element of \(R\).
- LeadingCoefficient(L): RngDiffOpElt -> RngElt
Given an operator \(L\) with coefficients in \(R\), this function returns the coefficient of the highest order term of \(L\).
- Terms(L): RngDiffOpElt -> SeqEnum
Given an operator \(L\) with coefficients in \(R\), this function returns the sequence of non–zero coefficients of \(L\) as elements of \(R\). The sequence is ordered from the lowest order term to the highest order term in \(L\).
- Example: Coefficients and Terms of an Operator (ex-d50a45)
Run in calculator (opens in a new tab)
> F<z> := RationalDifferentialField(Rationals()); > R<D> := DifferentialOperatorRing(F); > L := D^3 + (-4*z + 5)*D + (3*z - 4); > L; D^3 + (-4*z + 5)*D + 3*z - 4 > Eltseq(L); [ 3*z - 4, -4*z + 5, 0, 1 ] > LeadingTerm(L); D^3 > Terms(L); [ 3*z - 4, (-4*z + 5)*D, D^3 ]
Order and Degree
- Order(L): RngDiffOpElt -> RngIntElt
- Degree(L): RngDiffOpElt -> RngIntElt
Returns the order of the differential operator \(L\). In the case that \(L\) is identically \(0\), the order is defined to be \(-1\).
- WeakOrder(L): RngDiffOpElt -> RngIntElt
- WeakDegree(L): RngDiffOpElt -> RngIntElt
If the differential operator \(L\) is defined over a differential series ring, then the exponent of the highest coefficient of \(L\) that is not weakly \(0\) is returned.
Application of Operators
As pointed out in the introduction a differential operator \(L=a_nD^n+a_{n-1}D^{n-1}+\cdots+a_1D+a_0\) in \(F[D]\) leads to the differential equation \(L(y)=0\) given by
This notation is formal, but also defines an action of \(L\) on any element \(y\in F\). The function Apply returns the ring element obtained by this action.
- Apply(L, f): RngDiffOpElt, RngElt -> RngElt
- L(f): RngElt, RngDiffOpElt -> RngElt
- f @ L: RngElt, RngDiffOpElt -> RngElt
Given a differential operator \(L\) and a ring element \(f\), return the ring element obtained after applying \(L\) to \(f\), as an element of the base ring of \(L\). The element \(f\) must be coercible into the base ring of \(L\).