close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

#1074 closed defect (fixed)

Función gsl_interp

Reported by: Iván Robles Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Numerical methods
Component: Math Version: 2.0.1
Severity: major Keywords:
Cc:

Description

Buenos días, tol se cae al realizar la siguiente sentencia.

Code b = gsl_interp("cspline",Matrix SetMat([[ [[0]],[[1]] ]]),Matrix SetMat([[ [[0]],[[1]] ]]));

Estamos intentando interpolar dos datos, el 0,0, y el 1,1, con cspline y hemos llegado a que esta sentencia hace caerse tol.

No tiene ningún sentido interpolar eso, pero esta dentro de un metodo automático que interpola puntos x, y , y en uno de los casos nos sale que interpole los puntos 0,0 y 1,1

Change History (5)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Component: KernelMath
Milestone: Numerical methods
Status: newaccepted

comment:2 Changed 14 years ago by Víctor de Buen Remiro

Voy a ver qué le pasa. Lo que podéis hacer es probar con AlgLib que en general funciona mejor. En este caso sería

Code b = AlgLib.Interp.Scalar("CubicSpline",Matrix SetMat([[ [[0]],[[1]] ]]),Matrix SetMat([[ [[0]],[[1]] ]]));

Evidentemente no se puede hacer un spline cúbico con sólo dos puntos así que da un error y sigue sin más.

ERROR: [1] Cannot use AlgLib Interpolation method CubicSpline with less than 3 evaluation points.
See more on http://www.alglib.net/interpolation/spline3.php

comment:3 Changed 14 years ago by Víctor de Buen Remiro

Resulta que la función gsl_spline_alloc devuelve un puntero nulo sin dar ningún tipo de mensaje de error ni por consola ni por ningún otro mecanismo. Yo lo único que puedo hacer es, por supuesto que no se caiga, y luego dar un mensaje de que no se puede construir el spline pero sin dar detalles de porqué pues no tengo información al respecto.

comment:4 Changed 14 years ago by Víctor de Buen Remiro

Examinando el tipo de datos gsl_interp_type consigo dar un error comprensible, aunque no sé si existen otros motivos para que gsl_spline_alloc devuelva nulo

ERROR: [1] Cannot create GSL interpolator of type cspline with 2 points. Minimum number of points is 3

comment:5 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [3095]) Fixes #1074

Note: See TracTickets for help on using tickets.