In [1]:
import numpy as np
La clase poly1D representa polinomios unidimensionales con base en sus coeficientes. Sea el polinomio $$ p(x) = 6 x^2 + x - 2 $$ su representación en NumPy es
In [5]:
p = np.poly1d([6., 1., -2.])
Se puede evaluar el valor de $p(x)$
In [6]:
p(0), p(1), p(10)
Out[6]:
Se puede determinar el orden del polinomio con
In [8]:
p.order
Out[8]:
y sus raíces
In [10]:
p.roots
Out[10]:
In [19]:
# Comprobando las raíces
p(p.roots)
Out[19]:
Y que tal el polinomio con raíces complejas $p2(x) = 2 x^2 -3 x +7$
In [22]:
np.poly1d([2.,-3.,7.]).roots
Out[22]:
Se puede obtener la gráfica del polinomio
In [18]:
import matplotlib.pyplot as plt
xvalues = np.linspace(-10.,10.,100)
plt.plot(xvalues, p(xvalues), '-')
plt.show()
Preparación de un dataset de puntos agregando ruido a un conjunto de puntos conocidos
In [42]:
y = p(xvalues) + np.random.randn(xvalues.size)*p(xvalues).std()/2
Teniendo un conjunto de values x,y se puede determinar el polimonio que mejor se ajusta
In [43]:
# Intentar ajustar un polinomio de grado 3
np.polyfit(xvalues,y,deg=3)
Out[43]:
In [44]:
# Intentar ajustar un polinomio de grado 2
p3 = np.poly1d( np.polyfit(xvalues,y,deg=2) )
p3
Out[44]:
Obtener la gráfica de las observaciones y del polinomio de mejor ajuste
In [45]:
plt.plot(xvalues, y, 'xr', xvalues, p3(xvalues), '-b')
plt.show()
In [ ]: