を使用してscipy.optimize.curve_fit
いますが、全体的な最小値ではなく局所的な最小値に収束していると思われます。
次の方法でシミュレートされたアニーリングを使用してみました。
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
specf
私が当てはめようとしている曲線はどこにありますか。ただし、戻り値が全体的な最小値に達したことを示している場合でも、の結果p
は によって返される最小値よりも明らかに悪いです( anneal を参照)。curve_fit
どうすれば結果を改善できますか? SciPy にグローバル カーブ フィッターはありますか?