fsolve возвращает ненужное предупреждение при решении простого алгебраического уравнения - PullRequest
1 голос
/ 30 апреля 2019

Используя fsolve, я хочу найти x, для которого f(x)=0 в случае f задается как

y=1.
def f(x):
    return ((x-y)**2-y**2)**2

Как мы видим, функция имеет минимум для x=0, и для этого значения мы имеем точно f(x=0)=0. Когда я пытаюсь решить с помощью fsolve, он возвращает значение, которое достаточно близко к нулю, но также и предупреждение:

from scipy.optimize import fsolve
y=1
def f(x):
    return ((x-y)**2-y**2)**2

print fsolve(f,x0=0.001,xtol=1e-6)

Выход

RuntimeWarning: The iteration is not making good progress, as measured by the 
  improvement from the last ten iterations.
  warnings.warn(msg, RuntimeWarning)
[1.55543489e-16]

Итак, результат удовлетворительный, но как я могу избежать предупреждения и почему оно возвращает его, учитывая, что оно также дает достойный результат?

...