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
Component: | Kernel → Math |
---|---|
Milestone: | → Numerical methods |
Status: | new → accepted |
comment:2 Changed 14 years ago by
comment:3 Changed 14 years ago by
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
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
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
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
Evidentemente no se puede hacer un spline cúbico con sólo dos puntos así que da un error y sigue sin más.