curve_fit函数的定义:
scipy.optimize.curve_fit(f,xdata,ydata,p0 = None,sigma = None,absolute_sigma = False,check_finite = True,bounds = -inf ,inf,method = None,jac = None,** kwargs)
其中第一参数f要求是一个完整的函数体,所有参数和函数形式必须在调用curve_fit的时候确定,f在定义的时候不能包含如*args等不确定的参数。而且并不打算改变这个部分。
有时,在实际使用过程中,函数里的参数数量是不确定的
lambda函数法
利用lambda函数的灵活性,在计算过程中生成函数,然后再进行拟合。
计算步骤:
1 运行程序直到可以确定参数的数量和函数的形式;
2 先利用字符串生成lambda函数;
3 利用eval()转化为程序语言;
4 把转化好的程序语言带入curve_fit中的f参数里。
完成
from scipy import optimize as op
#获得源数据
xdata = ...
ydata = ...
#运行代码到已经确定参数数量和函数形式,比如多项式
n=5
list_args = func_body = ''
#生成lambda函数
for i in range(n):
list_args