Custom fit function

[1]:
import numpy as np
from smpl import plot
from smpl import io
from smpl import functions as f
import uncertainties.unumpy as unp
import smpl
smpl.__version__
[1]:
'1.3.0'
[2]:
data = data_malus = np.loadtxt(io.find_file("test_custom_data.csv",3),skiprows = 1, delimiter=',')
ydata = unp.uarray(data[:,0],data[:,1])
xdata = unp.uarray(data[:,2],data[:,3])
plot.data(xdata,ydata)
../../../_images/example_fit_custom_test_custom_2_0.png

Initial guess

params allows to set initial guess values for fitting.

[3]:

def Malus(x,I_max,I_min,w,p): ''' $(I_{max}-I_{min})*\\cos(w*x-p)^2+I_{min} $''' return (I_max-I_min)*unp.cos(w*x-p)**2+I_min plot.fit((xdata),ydata,Malus,xaxis="anlge in °", yaxis="intensity in a.u.", params=[4.6,0.11,0.0175,180+90-137], units=["a.u.","a.u.","rad$^{-1}$","rad"])
[3]:
[0.0675892411663342+/-0.002521847676338689,
 4.616937138968342+/-0.00280038021749026,
 0.017517668882117022+/-1.1151509984952333e-05,
 132.77077908815843+/-0.002348177087574735]
../../../_images/example_fit_custom_test_custom_4_1.png
[ ]: