AngouriMath

Navigation

← Back to list of members

SolveByPartialFractions​(AngouriMath.​Entity,​AngouriMath.​Entity.​Variable,​System.​Boolean)

 Method (no overloads)

Summary

A quotient of polynomials, split into two smaller quotients and integrated in two
parts — at a rational root of the denominator where it has one, and otherwise at a
coprime pair of its irreducible factors.

Remarks

The rules for a linear or a quadratic denominator answer those in one piece, so
what is left over are the denominators of degree three and up, which nothing
read at all: 1/(x^3 + 1) had no antiderivative. Splitting at the root -1 leaves
(1/3)/(x + 1) and (2 - x)/(3(x^2 - x + 1)), and both of those are already
integrable, the second by the rule for a linear numerator over a quadratic.
Each step takes a degree off the denominator, so this ends.
The split at a root reaches a denominator only where it has a rational one, which
left 1/(x^4 + 3x^2 + 2) unevaluated although it is (x^2 + 1)(x^2 + 2) and both of
those are integrated by the rule above. PartialFractions splits those, and is tried when the split at a root either does not apply or
applies and leaves something that will not integrate — it takes the denominator
apart differently, so a failure of the one is no evidence about the other.
Both of those factor over the rationals and stop where the rationals do, which left
x^2/(x^4 + 1) unevaluated: x^4 + 1 is irreducible over Q, and over the reals it is
(x^2 - sqrt(2)x + 1)(x^2 + sqrt(2)x + 1). The third step
(TrySplitBiquadraticOverTheReals(AngouriMath.Entity,AngouriMath.Entity,AngouriMath.Entity.Variable,AngouriMath.Entity@,AngouriMath.Entity@)) reads a
biquadratic denominator that way. It is last because it is the only one that
introduces a radical, and a denominator that factors over Q should be taken apart in
exact arithmetic by one of the two above.
All three of those want a proper fraction, and each declines an improper one
rather than dividing it out — so x^2/(x + 1) had no antiderivative although
it is x - 1 + 1/(x + 1) and every piece of that is read. The division is the
first step here for that reason, and it is not new code:
PolynomialLongDivision(AngouriMath.Entity,AngouriMath.Entity,System.Boolean,AngouriMath.Entity.Variable) has done it all along for the
simplifier's own rule set, and the integrator simply never asked it.

























Angouri © 2019-2023 · Project's repo · Site's repo · Octicons · Transparency · 4405 pages online