DifferentialRootReduce
Reduces a function to its holonomic (D-finite) representation — , a linear ODE with polynomial(x) coefficients plus enough derivatives at one point, applied straight back to . Covers , , , polynomials, a single-pole rational function, , , , BesselJ, AiryAi and AiryBi; declines sums, products, and anything else. Provided by @enumeratio/analytic.
✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram Language
DifferentialRootReduce✓DifferentialRootReduce(f(x), x)the D-finite reduction of , as .Typed signatures
| Type | Package | Applies |
|---|---|---|
(expression, symbol) -> expression | analytic | always |
Details
- Expands about wherever that's an ordinary point of the ODE (every case except BesselJ, whose coefficient of vanishes at ); BesselJ expands about instead, matching a local wolframscript's own choice there. A single-pole rational function also moves off itself.
- Every reduction's initial conditions come from evaluating and its derivatives (via compute-engine's own
D) at the expansion point directly, so they stay exact wherever compute-engine's own arithmetic is (e.g. AiryAi(0), or for erf); BesselJ's derivative uses the standard identity . - Verified by evaluating the reduction back (via DifferentialRoot's own Taylor-series stepper) against the original function at several points inside the radius of convergence, in both this package's own tests and against a local wolframscript.
- Declines a rational function whose denominator isn't a single linear factor, a BesselJ/AiryAi/AiryBi argument that isn't the plain variable, and any sum or product of two of these (no small closure algorithm for D-finite sums is implemented here — see difference-root.ts's own sum rule for the hypergeometric case, which doesn't carry over to a general ODE).
Examples
4 more kept as data, checked against the oraclesAbout
| Examples | 11 |
|---|---|
| Checked against | Wolfram Language 8 agree1 unevaluated |
| Crosswalk | Wolfram Language |
See also: DifferentialRoot, DifferenceRootReduce, BesselJ, AiryAi, AiryBi, Erf