[SciPy-Dev] scipy.optimize.curve_fit does not work with single parameter function
Daniele Nicolodi
daniele at grinta.net
Tue Sep 28 06:16:40 EDT 2010
Hello,
I copied the code of scipy.optimize.curve_fit into my data analysis code
to use it on a not so recent versions of scipy available on my systems.
However it does not work when I try to fit a simple function that has
only one parameter, for example:
def func(x, p1):
return x * p1
The problem is that scipy.optimize.leastsq() returns a list of
parameters values for cases where the function has more than one
parameter it returns a tuple of parameters values, while in the case of
one single parameters it returns a numpy scalar value.
This causes an error in the curve_fit _general_function() and
_weighted_general_function() where the target function is called:
function(xdata, *params)
This works only if params is a python list or tuple.
Also the return value suffers from the same problem. If the target
function has more than one parameter you get a parameters list,
otherwise you get a scalar. It would be more consistent to return always
a list, also because the covariance is always returned as a matrix.
Please ignore this if that has been resolved in more recent version of
scipy, I have acces to 0.7.2 (last available on debian sid).
Cheers,
--
Daniele
More information about the SciPy-Dev
mailing list