Следует избегать корневых функций, если применять числовой алгоритм, при нулевых аргументах корневая функция не является гладкой.Таким образом, используйте y=z²
, надеясь, что функция z^2+z
достаточно выпукла, чтобы начиная с 1.0
итерация поиска корня осталась с положительными значениями для z
, и возьмите квадратный корень из результата,
y = [ fsolve(lambda z: z**2+z-x**3, 1.0)[0]**2 for x in [0, 1, 2.3611, 2.9033, 3.2859, 3.5915] ]
Это дает решения
[0.0, 0.3819660112501052, 10.000316539128024, 20.000195919522547, 30.00100142437062, 40.00161656606038]