[SciPy-Dev] optimize ncg approx_fhess_p bug?
josef.pktd@gmai...
josef.pktd@gmai...
Tue Apr 6 08:00:24 CDT 2010
On Tue, Apr 6, 2010 at 1:15 AM, <josef.pktd@gmail.com> wrote:
> is this a bug?
>
> why is there a `*p` in the approx_fhess
>
> def approx_fhess_p(x0,p,fprime,epsilon,*args):
> f2 = fprime(*((x0+epsilon*p,)+args))
> f1 = fprime(*((x0,)+args))
> return (f2 - f1)/epsilon
>
> from a quick search this function is only used in fmin_ncg, which has
> convergence problem if epsilon is small.
> convergence to solution looks ok when I set epsilon to 1e-4 or 1e-6.
>
> but with predefined epsilon the step in the approx hessian calculation
> looks to small:
>
>>>> t.grad(t.solution)*_epsilon
> array([ 0.00000000e+00, -7.71175966e-16, -6.94483304e-15])
>
> non-convergence was a test failure reported by Alan with scipy 0.7.2
>
> I'm not sure about this because I never looked at the optimize code
> before, and I only did some quick checking.
>
> dropping the p in the approx fhess, I get a very fast solution
> (full_output) of the test problem in optimize/tests/optimize.py
> (array([ 1.46693016e-07, -5.24869440e-01, 4.87527692e-01]), 1.55913216727411
> 23, 5, 18, 0, 0)
Correction
I think we can ignore this, I made some mistakes with my changes (too
late at night).
The p is necessary to produce correct results, and I cannot reproduce
the convergence failure on my computer today.
Josef
>
> Any ideas?
>
> Josef
>
More information about the SciPy-Dev
mailing list