+1 voto
87 visitas
por (140 puntos) en DesdeCasa
Hola, mi pregunta es muy sencilla, con scipy puedo calcular directamente el polinomio interpolador de Lagrange pero no encuentro cómo calcular directamente el polinomio interpolador de Newton. Tampoco lo encuentro en Numpy.

Gracias

1 Respuesta

+1 voto
por (400 puntos)
editado por

En scipy tienes scipy.interpolate.interp1d.

Yo creo que es una generalización y consigues lo mismo. Echa un ojo a http://www.jtrive.com/polynomial-interpolation-newtons-method.html

por (140 puntos)
Gracias por la ayuda. interp1d para lineal, orden 2 y orden cúbico en el código fuente de scipy pone que lo que utiliza son splines de orden 1, 2 y 3; respectivamente, y eso no es el polinomio interpolador de Newton. interp1d como mucho llega a polinomios de grado 3, mientras que lo que busco no debería dar restricción en cuanto al polinomio interpolador.
El código para montarlo uno mismo ya lo hice hace años, junto con el de Neville.
por (400 puntos)
editado por
En la docu dice esto: "where ‘zero’, ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of zeroth, first, second or third order; ‘". Parece que la interpolación polinómica de Newton como tal no viene a no ser que sea la opción 'linear' y sería solo de orden 1. He probado un ejemplo con 'linear' y 'slinear' y el valor es prácticamente el mismo por lo que no sé muy bien la diferencia. Para polinomios de orden superior a tres se le puede pasar un entero. He preguntado a los @aeropython a ver si dan una mejor respuesta (https://twitter.com/Pybonacci/status/1247966820616802304).
por (140 puntos)
Gracias. He comprobado scilab y maxima y tampoco existe. Parece que todos hacen lo mismo, eligen los códigos hechos hace muchos años en Fortran y los trasladan a sus propios lenguajes.
por (400 puntos)
Supongo que debe ser por eficiencia, estabilidad y exactitud. Muchas gracias, con esta pregunta creo que he aprendido yo más que tú :-)
Bienvenido a Pybonacci - Q&A: pregunta, responde, comparte, colabora.
...