擅长:python、mysql、java
<p>Newton-Raphson方法是找到实值函数根的良好近似值的一种方法(在您的例子中:<code>f(x) =x**3 - x**2 + 3</code>)。这是一个迭代算法,严重依赖于起点(<code>x0</code>,我的意思是)</p>
<p>因此,我建议使用多个起点,然后获得最常见的根。这段代码解释了我的意思:</p>
<pre><code>>>> from scipy.optimize import newton
>>> from collections import Counter
>>> # using [-10, -9, -8, ..., 8, 9, 10] as starting point(s)
>>> roots = newton(lambda x: x**3 - x**2 +3, range(-11, 11))
>>> # find the most common root
>>> root, count = Counter(roots).most_common(1)[0]
>>> root
-1.17455941029298
>>> count
17
</code></pre>
<p>这意味着在22个起点中,有17个收敛到-1.17</p>