# [SciPy-user] optimize.leastsq

David Trethewey dlrt2@ast.cam.ac...
Tue Jan 20 05:30:21 CST 2009

```I'm using the following code to fit a gaussian to a histogram of some data.

#fit gaussian
fitfunc = lambda p, x: (p[0]**2)*exp(-(x-p[1])**2/(2*p[2]**2))  #
Target function
errfunc = lambda p, x, y: fitfunc(p,x) -y          # Distance to the
target function
doublegauss = lambda q,x: (q[0]**2)*exp(-(x-q[1])**2/(2*q[2]**2)) +
(q[3]**2)*exp(-(x-q[4])**2/(2*q[5]**2))
doublegausserr = lambda q,x,y: doublegauss(q,x) - y
# initial guess
p0 = [10.0,-2,0.5]
# find parameters of single gaussian
p1,success  = optimize.leastsq(errfunc, p0[:], args =
(hista[1],hista[0]))
errors_sq = errfunc(p1,hista[1],hista[0])**2

I have the error message

Traceback (most recent call last):
File "M31FeHfit_totalw108.py", line 116, in <module>
p1,success  = optimize.leastsq(errfunc, p0[:], args =
(hista[1],hista[0]))
File "C:\Python25\lib\site-packages\scipy\optimize\minpack.py", line
264, in leastsq
m = check_func(func,x0,args,n)[0]
File "C:\Python25\lib\site-packages\scipy\optimize\minpack.py", line
11, in check_func
res = atleast_1d(thefunc(*((x0[:numinputs],)+args)))
File "M31FeHfit_totalw108.py", line 110, in <lambda>
errfunc = lambda p, x, y: fitfunc(p,x) -y          # Distance to the
target function
ValueError: shape mismatch: objects cannot be broadcast to a single shape

Anyone know why this happens? Curiously I have had it work before but
not with my current versions of scipy and python etc.

David
```