【发布时间】:2016-11-01 13:02:04
【问题描述】:
我喜欢通过使用* 为iminuit 提供其参数来保持语法最通用的形式:
import iminuit
import numpy as np
x_data = np.array([0,1,2,3,4,5,6,7,8,9])
y_data = np.array([0,1,2,3,4,5,4,3,2,1])
def fit_function(x, *p):
return p[0]*np.exp(-((x-p[1])**2/(2*p[2]**2)))
def minimize_me(*p):
return sum((fit_function(x, *p) - y)**2 for x, y in zip(x_data, y_data))
p=[4.5, 5, 0.4]
print(minimize_me(*p)) # works! --> gives: 57.1645229329
m = iminuit.Minuit(minimize_me, *p)
m.migrad() # fails!
因错误而失败:
AttributeError: 'float' object has no attribute 'print_banner'
任何想法我做错了什么?谢谢。
附言此示例基于此 SO 帖子:https://stackoverflow.com/a/22540079/5177935
【问题讨论】:
标签: python curve-fitting gaussian iminuit