<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Polynomios
Step1:  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
Step2:  Se puede evaluar el valor de $p(x)$
Step3:  Se puede determinar el orden del polinomio con
Step4:  y sus raíces
Step5:  Y que tal el polinomio con raíces complejas $p2(x) = 2 x^2 -3 x +7$
Step6:  Se puede obtener la gráfica del polinomio
Step7:  Ajuste de curvas mediante polinomios
Preparación de un dataset de puntos agregando ruido a un conjunto de puntos conocidos
Step8:  Teniendo un conjunto de values x,y se puede determinar el polimonio que mejor se ajusta
Step9:  Obtener la gráfica de las observaciones y del polinomio de mejor ajuste
<ASSISTANT_TASK:>
Python Code:
import numpy as np
Explanation: Polynomios
End of explanation
p = np.poly1d([6., 1., -2.])
Explanation: 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
End of explanation
p(0), p(1), p(10)
Explanation: Se puede evaluar el valor de $p(x)$
End of explanation
p.order
Explanation: Se puede determinar el orden del polinomio con
End of explanation
p.roots
# Comprobando las raíces
p(p.roots)
Explanation: y sus raíces
End of explanation
np.poly1d([2.,-3.,7.]).roots
Explanation: Y que tal el polinomio con raíces complejas $p2(x) = 2 x^2 -3 x +7$
End of explanation
import matplotlib.pyplot as plt
xvalues = np.linspace(-10.,10.,100)
plt.plot(xvalues, p(xvalues), '-')
plt.show()
Explanation: Se puede obtener la gráfica del polinomio
End of explanation
y = p(xvalues) + np.random.randn(xvalues.size)*p(xvalues).std()/2
Explanation: Ajuste de curvas mediante polinomios
Preparación de un dataset de puntos agregando ruido a un conjunto de puntos conocidos
End of explanation
# Intentar ajustar un polinomio de grado 3
np.polyfit(xvalues,y,deg=3)
# Intentar ajustar un polinomio de grado 2
p3 = np.poly1d( np.polyfit(xvalues,y,deg=2) )
p3
Explanation: Teniendo un conjunto de values x,y se puede determinar el polimonio que mejor se ajusta
End of explanation
plt.plot(xvalues, y, 'xr', xvalues, p3(xvalues), '-b')
plt.show()
Explanation: Obtener la gráfica de las observaciones y del polinomio de mejor ajuste
End of explanation
<END_TASK>