我是iPython的新手,需要解決一個特定的曲線擬合問題,我有這個概念,但是我的編程知識還有限。我有實驗數據(x, y)
擬合到一個具有四個係數(a,b,c,d)
的方程(曲線擬合),我想將這些係數(例如a)中的一個固定到一個特定值並重新設計我的實驗數據(非線性最小二乘)。係數b,c和d並不相互獨立,這意味着它們通過方程組相關。帶約束方程的ipython非線性最小二乘法
更適合使用curve_fit
或lmfit
?
我curve_fit開始這樣:
def fitfunc(x,a,b,c,d):
return a+b*x+c/x+log10(x)*d
popt, fitcov = curve_fit(fitfunc, x, y)
或像這樣的代碼lmfit
:
import scipy as sp
from lmfit import minimize, Parameters, Parameter, report_fit
def fctmin(params, x, y):
a = params['a'].value
b = params['b'].value
c = params['c'].value
d = params['d'].value
model = a+b*x+c/x+d*np.log10(x)
return model - y
#create parameters
params = Parameters()
params.add('a', value = -89)
params.add('b', value =b)
params.add('c', value = c)
params.add('d', value = d)
#fit leastsq model
result = minimize(fctmin, params, args=(x, y))
#calculate results
final = y + result.residual
report_fit(params)
這裏的關鍵似乎是你的係數不是獨立的。如果他們是,'curve_fit'應該很好地完成這項工作。但是,您似乎無法處理上述任一解決方案中的依賴關係,因此不能保證'curve_fit'或'lmfit'的輸出將保持該依賴關係。你能解決一個或多個自變量的相關方程嗎? – Jsl