next up previous contents
Next: Linear algebra. Up: Factorization. Solving equations. Previous: Summary of the instructions.

   
A word about factorization.

You should skip this section for a first reading. Factorization of polynomial is very important in several mathematical functions, like symbolic integration or matrix diagonalization. It is important to understand the mechanism used by Erable to perform this tasks.

Let's begin by recalling some mathematicals facts:

This means that you can not root a multivariate polynomial of order $\geq 5$ (for such polynomials, systems like Maple, Reduce, Axiom Mathematica or Mupad use algebraic extension), and that you can only root numerically a univariate polynomial of order $\geq $ 5. Note that the generic solution of a polynomial of order 3 is still complicated and of order 4 very complicated. I think that it is not possible to handle the generic solution of polynomials of order 3 or 4 on the HP48 in a reasonable amount of time. Hence, only polynomial of order 2 are generically solved by Erable.

However, in some situations, you can root exactly polynomials of order $\leq $ 3, by searching multiple roots and by finding obvious roots (or obvious factor). The rooting algorithm of Erable search first multiple roots by computing the gcd of the polynomial and his first derivative (this is the SQFFext algorithm in the source of Erable). Of course flag 12 must be set for this step to be done. If a univariate polynomial has only integer (or rational) coefficients, you can find all rational solutions of this polynomial by testing a finite set of rationals (of the form numerator/denominator where numerator is a divisor of the constant coefficient and denominator a divisor of the leading coefficient). This is implemented in Erable by the nullnamed XLIB EVIDENText which is called if flag 14 is set. Hence, Erable detects all 1st order factors of a symbolic.

If exact solving fails, Erable calls the numeric solver for univariate polynomials (which is the HP48GX PROOT function in ERABLEG.LIB or the Bairstow or Laguerre algorithm in erable.lib) and tries to find second order polynomial with integer coefficients by coupling 2 approximate solutions (this was an idea of Mika Heiskanen implemented in POLYLIB). Hence Erable should find all rational and quadratic irrationals roots of a univariate polynomial (unless the polynomial is badly conditionned).

For multivariate polynomials, the two first steps are achieved (EVIDENText and SQFFext). Erable should find all rational multivariate roots of a polynomial (1st order factors). Unfortunately, Erable does not implement the exhaustive search of all 2nd order (or greater) multivariate rational factors. This can be performed using the FCTR function of the ALG48 library.

Abstract of the Sysrpl XLIBs (include erextdec.h and erhash.h in your source code to use them) to factorize:

Abstract of the user commands to factorize:

Flags 12 and 14 may be cleared to skip respectively SQFFext and EVIDENText.


next up previous contents
Next: Linear algebra. Up: Factorization. Solving equations. Previous: Summary of the instructions.
Bernard Parisse
1998-07-31