help-gsl
[Top][All Lists]

## Re: [Help-gsl] gsl_poly_solve_cubic problem

 From: Ralph Silva Subject: Re: [Help-gsl] gsl_poly_solve_cubic problem Date: Thu, 20 Dec 2007 13:15:10 +1100

```Hi Niccolo,

it looks like a kind of round error of the *gsl_poly_solve_cubic* . I have
tested your program with other GSL functions and they gave quite the same
results. Take a look at the *gsl_poly_complex_solve_cubic *and *
gsl_poly_complex_solve*. You will see nearly the expected result.

Cheers,
Ralph.

gcc -static test.c -lgsl -lm
GSL 1.10
Fedora 8 - Kernel 2.6.23.8-63.fc8
gcc 4.1.2 20070925 (Red Hat 4.1.2-33)

On Dec 20, 2007 11:34 AM, nick kama <address@hidden> wrote:

> Hello,
>
> I have this problem with the solver of the cubic equations in gsl:
>
> if i take  an equation of the form
>
> (x-1)^3=0
>
> solver finds 3 roots
> 1 1 1
>
> if i took the equation
> (x-1.1)^3
>
> it finds only one root equal to 1.1,this is a little of code  that can
> show
> this behaviour.
> Documentation says :"the case of coincident roots is not considered
> special.
> For example, the equation (x-1)^3=0 will have three roots with exactly
> equal
> values " so this should'nt happen, pleas let me know where i'm wronging.
>
> Many Thanks
>
> Niccolo'
>
>
> #include <iostream>
> #include <gsl/gsl_matrix.h>
> #include <gsl/gsl_eigen.h>
> #include <gsl/gsl_vector.h>
> #include <gsl/gsl_poly.h>
>
>
>
> main()
> {
>
>  double landa1=0;
>  double landa2=0;
>  double landa3=0;
>  //(x-1.1)^3
>  int numero = gsl_poly_solve_cubic ( -3.3,3.63, -1.331, &landa1, &landa2,
> &landa3);
>  std::cout << numero<< std::endl;
>  std::cout << landa1<< std::endl;
>  std::cout << landa2<< std::endl;
>  std::cout << landa3<< std::endl;
>
>  // (x-1)^3
>  numero = gsl_poly_solve_cubic ( -3,3, -1, &landa1, &landa2, &landa3);
>  std::cout << numero<< std::endl;
>  std::cout << landa1<< std::endl;
>  std::cout << landa2<< std::endl;
>  std::cout << landa3<< std::endl;
>
> }
> _______________________________________________
> Help-gsl mailing list