I created leveberg_marquardt algorithm and I would like to know the parameters of the function => a,b,c,d
import numpy as np
import pandas as pd
from lmfit import Minimizer, Parameters, report_fit
# intialise data of lists.
dt = {'t':[15, 45, 75,105,135,165,195,225,255,285,315,345,375,405], 'my_test':[66,83,87,90,92,91,90,88,85,81,78,76,75,71]}
# Create DataFrame
df = pd.DataFrame(dt)
df["my_kg1"] = df["my_test"]-50
df["my_kg2"] = df["my_test"]-30
#df1 = df[["my_test", "t"]]
df1 = df[["my_kg1", "t"]]
#df1 = df[["my_kg2", "t"]]
# Print the output.
#print(df1)
#creating array
dat = df1.values
#print(dat)
x = dat[:, 1]
data = dat[:, 0]
print(x)
print("--------")
print(data)
print("--------")
def fcn2min(params, x, data):
a = params['a']
b = params['b']
c = params['c']
d = params['d']
e = params['e']
f = params['f']
g = params['g']
model = a*e(-d*x)*(f - e((c - x)/b)/g)
#'float' object is not callable: a*2.718(-d*x)*(1 - 2.718((c - x)/b)/2)
return model - data
# set parameters incluing bounds
params = Parameters()
params.add('a', value=21.2, min=1.0, max=75.0)
params.add('b', value=17.9, min=0.0, max=60.0)
params.add('c', value=3.4, min=-5.0, max=6.0)
params.add('d', value=0.00, min=0.00, max=0.01)
params.add('e', value=2.718, vary=False)
params.add('f', value=1, vary=False)
params.add('g', value=2, vary=False)
# do fit, here with leastsq model
minner = Minimizer(fcn2min, params, fcn_args=(x, data))
result = minner.minimize()
# calculate final result
final = data + result.residual
# write error report
report_fit(result)
# try to plot results
try:
import matplotlib.pyplot as plt
plt.plot(x, data, 'k+')
plt.plot(x, final, 'r')
plt.show()
except ImportError:
pass
<end of examples/doc_parameters_basic.py>