牛顿法(1d)

牛顿法是一种比较流行的迭代寻根算法。从最初的猜测开始 \(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)

返回的根 f 在内部 tol 用牛顿方法。

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

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

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

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

返回

ftol .

返回类型

float

首先下载 exercise template 编辑这个文件。您可以通过运行测试

$ python newtons_method_1d.py test

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