我想用 iminuit 解决一个 n 维优化问题。
所以我的方法如下。我试图弄清楚如何扩展它:
def f(x,y,z):
return (x-1.)**2 + (y-2*x)**2 + (z-3.*x)**2 -1.
到一个变量“x”,它是一个 numpy.array。
我想做这样的事情:
x = [1,2,3,4,5]
y = [2,4,6,8,10]# y=2x
class StraightLineChi2:
def __init__(self,x,y):
self.x = x
self.y = y
def __call__(self,m,c): #lets try to find slope and intercept
chi2 = sum((y - m*x+c)**2 for x,y in zip(self.x,self.y))
return chi2
但在我的情况下,x 是我的未知数,它是一个数组。与许多优化/最小化问题一样,函数是 af=f(x1,...,xn),其中 n 可能很大。x1,...,xn 是问题的未知数。
(这些例子取自这里)
类似的东西是实现“黑客”pyminuit2,如此处所述