我在python中有一个柱状图,我想计算和的最小值(n[I]-gauss(x[I],sigma,mu))**2,其中x[I]是n[I]对应的bins[I]的值,最小值必须通过修改sigma和mu来获得(我不想使用拟合曲线得到的值)。这是我的计划:import numpy as np
from scipy.optimize import minimize
from random import gauss
from matplotlib import pyplot as plt
from scipy.stats import norm
import math
values = []
while len(values) < 10000:
value = gauss(0,20)
if -100 < value < 100:
values.append(value)
n, bins, patches = plt.hist(values, 10, facecolor='green',normed='1')
mu, std = norm.fit(values)
x=np.arange(-100,100,0.01)
y=1/(math.sqrt(2*math.pi)*std)*np.exp(-(x-mu)**2/(2*std**2))
plt.plot(x,y,"b-")
binWidth=bins[5]-bins[4]
def gauss(x):
f=0
for i in range(len(n)):
centre=(2*bins[i]+binWidth)/2
f=f+(n[i]-1/(x[1]*math.sqrt(2*math.pi))*np.exp(-(y[(centre+100)*100]-x[0])**2/(2*x[1]**2)))**2
return f
x0=np.array([0.01,0.01])
res = minimize (gauss,x0,method='nelder-mead',options={'xtol': 1e-8, 'disp': True})
print res.x
所以在运行之后,我应该得到这个函数的最小值,这个最小值的mu和sigma(它对其他函数有效)。但是我得到了一个警告:警告:已经超过了函数求值的最大数量。我得到了mu和sigma的一些值,但是它们在每次运行中都是不同的,所以出了问题。我该怎么办?在