[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-gsl] Bug in gsl_poly_complex_solve() producing inaccurate roots of
From: |
salman |
Subject: |
[Bug-gsl] Bug in gsl_poly_complex_solve() producing inaccurate roots of polynomials |
Date: |
Mon, 10 Dec 2007 16:41:31 -0600 (CST) |
Hi,
I am using gsl_poly_complex_solve() to determine the roots of some basic
polynomials. The results I am getting are fairly off from the correct
roots. Here is the relevant section of the code (deg_L is the degree of
the polynomial I am considering):
gsl_poly_complex_workspace *u=gsl_poly_complex_workspace_alloc(deg_L+1);
gsl_poly_complex_solve(coeffs, deg_L+1, u, roots);
gsl_poly_complex_workspace_free(u);
for(i=0; i<deg_L; i++)
printf("\t %.5f, %.5f\n", roots[i], roots[2*i+1]);
Here is the output from one particular polynomial:
f(x) = 1 -5*x -25*x^2 +125*x^3
0.20000, 0.00000
0.00000, -0.00000
0.20000, 0.00000
The roots of this polynomial should be 0.2, 0.2, -0.2. Here's another
example without multiple roots:
f(x) = 1 -1*x -5*x^2 +125*x^3
-0.20000, 0.00000
0.00000, 0.16000
0.12000, -0.16000
The roots of this polynomial should be -0.2, 0.12+0.16*i, 0.12-0.16*i.
I am not sure what could be causing the error. Being off by as much as 0.2
is fairly significant. Perhaps I have a bug in my code, but that is
doubtful -- it does nothing more than read in these polynomials and then
tries to determine their roots via gsl_poly_complex_solve(). I checked my
roots by hand and using PARI/GP, so I'm positive they're accurate (and
clearly, 0 is not a root of the first polynomial). This leads me to think
that there is a bug somewhere in the routine, or perhaps the precision
settings need to be adjusted.
If I am doing something wrong, please let me know.
Thanks,
Salman
- [Bug-gsl] Bug in gsl_poly_complex_solve() producing inaccurate roots of polynomials,
salman <=