我正在尝试用python编写一个代码,将指数和一些数据相匹配。不过,我想有自由选择多少指数我用。你知道吗
def fcn(x,nexp):
return sum(ai * np.exp(-Ei * x) for ai, Ei in range(nexp))
我试着定义上面的内容,然后在内部调用它scipy.optimize.curve\u fit曲线拟合但是我得到错误“'int'object is not iterable”。任何帮助都将不胜感激。目前,我只是不断定义新的函数,并添加如下术语
def f1(t,a1,E1):
return a1*np.exp(-E1*t)
def f2(t,a1,E1,a2,E2):
return a1*np.exp(-E1*t)+a2*np.exp(-E2*t)
def f3(t,a1,E1,a2,E2,a3,E3):
return a1*np.exp(-E1*t)+a2*np.exp(-E2*t)+a3*np.exp(-E3*t)
def f4(t,a1,E1,a2,E2,a3,E3,a4,E4):
return a1*np.exp(-E1*t)+a2*np.exp(-E2*t)+a3*np.exp(-E3*t)+a4*np.exp(-E3*t)
不必将每个
a1, E1
作为单独的参数传递,您可以让一个函数接受两个元组的列表(例如[(a1,E1),(a2,E2)]
),然后遍历。你知道吗def f(t, lst): sum = 0 for a, E in lst: sum += a*np.exp(-E*t) return sum
这可以写得短一些,为了清楚起见,我一步一步地写了出来。你知道吗相关问题 更多 >
编程相关推荐