Используя 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]
Итак, результат удовлетворительный, но как я могу избежать предупреждения и почему оно возвращает его, учитывая, что оно также дает достойный результат?