On Wed, Oct 11, 2023 at 08:14:40AM +0000, Vladimir V. Kisil wrote:
On Mon, 9 Oct 2023 15:05:28 -1000, Charles White <whitece6@hawaii.edu> said:
CW> Hi GiNaC! Is there a built-in method to find all zeros of a CW> polynomial? I'm trying to find symbolic zeros if possible and CW> numeric zeros for all other cases.
If I remember correctly, analytic expression for polynomial roots is possible only up to the four order (inclusively). These formulae can be directly coded by a user.
The situation is actually more subtle - if you want as many symbolic roots as there are. One can compute the Galois group of the polynomial (not in GiNaC, in a computer algebra system like pari/GP), and its soluble factors correspond to exact symbolic roots. Such computations need to use info about permutation groups of the degree equal to the degree of the polynomial, and become practically infeasible for degrees bigger than 20 or so. For a polynomial with a soluble Galois group (a factor of your original polynomial), writing roots in radicals is possible. Software I know for this is a GAP package: https://www.gap-system.org/Packages/radiroot.html (which calls pari/GP for the heavy number-theoretic lifting) Practically speaking (for software in C/C++), one can call pari/GP as a dynamic library (or just as a shell script) to do the factoring; small degree (at most 4) factors will automatically give symbolic roots, bigger degree factors might be analysed further by means of its Galois groups. HTH Dima
For a generic polynomial with integer coefficient factor() method may give hint on possible integer roots. Numerical approximation may be obtained by fsolve(), see section "2.2 What it can do for you" of the tutorial. -- Vladimir V. Kisil http://www1.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Maps https://doi.org/10.1142/p835 Soft: Geometry of cycles http://moebinv.sourceforge.net/ Jupyter notebooks: https://github.com/vvkisil?tab=repositories _______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de https://www.ginac.de/mailman/listinfo/ginac-list