Python-scipy.Optimierung: Verwendung von fsolve mit mehreren ersten Vermutungen

Scipy version 0.10.0

Folgendes:

>>> import math
>>> from scipy.optimize import fsolve
>>> import numpy as np
>>> def p(s, l, k, q):
    p = q * np.maximum(s - k, 0.0)
    return (p + math.copysign(l, -q)) * math.fabs(q) * 100.0

>>> x0 = fsolve(p, np.arange(33.86, 50.86, 1.0), args=(1.42, 41.0, -1.0), xtol=1e-06, maxfev=500)
Warning (from warnings module):
  File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 152
    warnings.warn(msg, RuntimeWarning)
RuntimeWarning: The iteration is not making good progress, as measured by the 
   improvement from the last ten iterations.
>>> print x0
[ -4.87169392e+05  -4.87168392e+05  -4.87167392e+05  -4.87166392e+05
  -4.87165392e+05  -4.87164392e+05  -4.87163392e+05  -4.87162392e+05
   4.24200000e+01   4.24200000e+01   4.24200000e+01   4.24200000e+01
   4.24200000e+01   4.24200000e+01   4.24200000e+01   4.24200000e+01
   4.24200000e+01]

Erste Frage ist, wie man vielleicht unterdrücken Sie die Warnmeldung wird zurückgegeben?

Zweite, warum könnten diese Fehler generiert werden, in der ersten Ort (andere als die offensichtliche, dass die iteration nicht gut voran 🙂 )?

Schließlich, die Wurzel dieser Funktion ist 42.42 (was gefunden). Warum ist fzero Rückkehr -4.87e+05?

Versuchen Sie, mithilfe von numpy.seterr zu deaktivieren Fehler:numpy.seterr(invalid='ignore')
Danke für den Vorschlag aber es hat nicht funktioniert.

InformationsquelleAutor Jason Strimpel | 2012-10-24

Schreibe einen Kommentar