[SciPy-user] scipy.optimize.leastsq failure
Steve Schmerler
elcorto at gmx.net
Mon Aug 27 05:25:52 EDT 2007
fdu.xiaojf at gmail.com wrote:
> Hi,
>
> I get an ier flag of 2 when running the following code:
>
> ----------------------------------------------------------
>>from scipy.optimize import leastsq
>>from numpy import array
>
> x = array([1.2, 3.4, 5.6, 7.8])
> y = (x-1.234)**2+3.456
>
> def obj_f(pp, xx, yy):
> return pp[0] * (xx-pp[1])**2 + pp[2] - yy
>
> b = leastsq(obj_f, (1., 1., 2.), args=(x,y), full_output=2)
> print b
> print obj_f(b[0], x, y)
> ----------------------------------------------------------
>
> The output is:
> ----------------------------------------------------------
> (array([ 1. , 1.234, 3.456]), array([[ 0.01067209, 0.03485503, 0.04927042],
> [ 0.03485503, 0.12416711, 0.22839652],
> [ 0.04927042, 0.22839652, 0.91824454]]), {'qtf': array([
> -5.72325346e-10, -3.96833152e-10, -2.98440470e-11]), 'nfev': 13, 'fjac':
> array([[-47.37134237, 0.09903785, 0.40239425, 0.9100936 ],
> [ 15.89408601, 3.85306656, 0.61349297, -0.32983294],
> [ -1.41155008, -0.95837977, 1.04356817, 0.82836952]]), 'fvec':
> array([ -8.88178420e-16, 0.00000000e+00, 0.00000000e+00,
> -7.10542736e-15]), 'ipvt': array([1, 2, 3])}, 'The relative error
> between two consecutive iterates is at most 0.000000', 2)
> [ -8.88178420e-16 0.00000000e+00 0.00000000e+00 -7.10542736e-15]
> ----------------------------------------------------------
>
> Tt seems that the result is rather accurate, but while I get an ier flag of 2?
> I don't quite understand the error message.
>
leastq() uses the underlying Fortran routines from MINPACK: LMDIF if you don't
provide a Jacobain (Dfun=None) or LMDER otherwise. The message tells you that
the routine met one of it's convergence criteria. See the source of leastsq()
in optimize/minpack.py and the docstrings of the Fortran routines ('info' flag):
http://www.netlib.org/minpack/lmdif.f
http://www.netlib.org/minpack/lmder.f
--
cheers,
steve
I love deadlines. I like the whooshing sound they make as they fly by. --
Douglas Adams
More information about the SciPy-User
mailing list