In [270]:
import numpy as np
import matplotlib.pyplot as plt
simulace dat
předpokládáme, že závislá proměnná $y$ závisí na nezávislé proměné $x$ jako polynom 4. stupně
$y = a_4 x^4 + a_3 x^3 + a_2 x^2 + a_1 x + a_0$
In [272]:
x=np.arange(0,100,1)
true_pars=[0.001,-0.1,-1,-10,100] #koeficienty polynomu a4,a3,a2,a1,a0
y=np.polyval(true_pars,x)
ey=np.random.random(np.size(x))*1000+500
y=y+np.random.normal(ey,1500/np.sqrt(12))
fit polynomem 4 stupně pomocí funkce np.polyfit
In [274]:
fit_deg=4 #stupeň fitovaného polynomu
fit_pars,cov=np.polyfit(x,y,fit_deg,w=1/ey,cov='unscaled')
print(fit_pars)
[ 1.12320206e-03 -1.17036185e-01 -6.11553382e-01 5.67473402e+00 6.84579484e+02]
nakreslení grafu nasimulovaných hodnot a fitu
In [276]:
plt.errorbar(x,y,ey,lw=0,elinewidth=1,marker='o',fillstyle='none',capsize=5,label='data')
plt.plot(x,np.polyval(fit_pars,x),c='red',lw=2,label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
In [ ]: