convert a rational expression to full partial fraction form
convert(f, fullparfrac, x)
convert(f, fullparfrac, methext)
convert(f, fullparfrac, x, methext)
convert(f, fullparfrac, ratflag)
convert(f, fullparfrac, x, ratflag)
convert(f, fullparfrac, methext, ratflag)
convert(f, fullparfrac, x, methext, ratflag)
rational function in x
main variable name
(optional); method (normal, sqrfree, or factor) or an extension
(optional); flag that alters the form of the output
Convert to fullparfrac performs a partial fraction decomposition of the rational function f in the variable x after completely factoring the denominator into linear factors over its splitting field.
If no x is provided, parfrac attempts to determine a suitable x, and proceeds if the operation is not ambiguous. For example, an expression that is a rational polynomial in both a and b requires that the variable be specified.
Optionally, the methext parameter can be one of 'normal', 'sqrfree', 'factor' (the default) or a field extension. In the first three cases, the associated function is applied to the denominator(s), and in the last case, factoring over that field extension is applied. The 'normal' and 'sqrfree' options are very efficient, although the answer often contains reducible RootOfs. Factoring eliminates this problem but at a high computational cost, and also at the cost of not always producing the simplest output form.
Optionally, the ratflag parameter is a boolean flag indicating if rational expressions in terms of the roots of the irreducible RootOfs should be rationalized to polynomial functions. By default, this rationalization is performed when the denominator of f contains only x. If additional unknowns are present in the denominator, then this rationalization is not performed.
The default can be overridden by using the environment variable _Env_fullparfrac_normalized. If set to true, rationalization is performed by default, and if set to false it is not. This is most useful when fullparfrac is being called from another routine over which you have no control (see the final example below).
Warning: If the coefficients of the function f contain parameters, then there will be values for those parameters for which the decomposition is erroneous, as a symbolic splitting field is valid only for generic values of the parameter. This is known as the specialization problem.
In the following example, 'x' and 'a' appear in the denominator, so x must be specified.
Not specifying x results in an error:
Error, (in `convert/fullparfrac`) the variable name (for conversion to partial fractions) must be provided
You can request rationalization via:
In the following example, 'x' is the only variable in the denominator, so rationalization is performed.
To disable rationalization, use the false option.
_Env_fullparfrac_normalized ≔ false:
_Env_fullparfrac_normalized ≔ '_Env_fullparfrac_normalized':
As a final example, you can control the behavior of fullparfrac when used in other functions.
Download Help Document
What kind of issue would you like to report? (Optional)