import lmfit as lm
import numpy as np
def multiexp_decay(t,c1,c2,c3,tau1,tau2):
return c1*np.exp(-t/tau1)+c2*np.exp(-t/tau2)+c3
c1 = 2.2
c2 = 6.8
c3 = 1.6
tau1 = 2.4
tau2 = 6.0
ndata = 1000
np.random.seed(0xdeadbeef)
tdata = np.linspace(0,20,ndata)
ydata = multiexp_decay(tdata,c1,c2,c3,tau1,tau2)+np.random.normal(size=ndata,scale=0.01)
model = lm.Model(multiexp_decay)
params = model.make_params(c1=1.0, c2=5.0, c3=0.3, tau1=1.0, tau2=7.0)
result = model.fit(ydata, params, t=tdata)
print(result.fit_report())
confidence_radius = result.eval_uncertainty(sigma=0.88, dscale=0.0000001)
tdata.astype(np.float64).tofile(f"xdata_{ndata}_64bit.raw")
ydata.astype(np.float64).tofile(f"ydata_{ndata}_64bit.raw")
confidence_radius.astype(np.float64).tofile(f"conf_{ndata}_64bit.raw")
cov = result.covar.astype(np.float64)
cov.tofile(f"covmat_{cov.shape[0]}x{cov.shape[1]}_64bit.raw")