牛顿方法(一维)

牛顿法是一种比较流行的迭代求根算法。从最初的猜测开始 \(x_0\) 它试图找到函数根的越来越好的近似 \(f(x)\) 。为此,它使用一阶导数 \(f'(x)\) 该函数的。这一过程

\[x_{n+1}=x_n-\frac{f(X_N)}{f‘(X_N)}\]

重复执行,直到值 \(f(x_n)\) 达到的值在预定义的零公差范围内。有关更多信息,请参阅 Wikipedia 佩奇。

它的工作原理如下:

>>> def f(x):
...     return x**2 - 2
...
>>> def df_dx(x):
...     return 2*x
...
>>> newtons_method_1d(f, df_dx, x0=4, tol=1e-8)  
1.4142135623730951

因此,按照给定的定义实现一个函数:

newtons_method_1d(f, df_dx, x0, tol)

返回的根 ftol 通过使用牛顿方法。

参数
  • f (callable[[float], float]) -- 应找到其根的函数。

  • df_dx (callable[[float], float]) -- 的导数 f

  • x_0 (float) -- 算法的初始猜测。

  • tol (float) -- 方法的公差。

返回

的根源 f 在…的容忍度内 tol

返回类型

float

首先从下载 exercise template 并编辑此文件。您可以通过以下方式运行测试

$ python newtons_method_1d.py test

检查您是否得到了正确的解决方案。您也可以看看 one possible solution