📜  netwon raphson (1)

📅  最后修改于: 2023-12-03 15:17:51.474000             🧑  作者: Mango

Newton Raphson算法介绍

简介

Newton Raphson算法是一种求解方程的数值解法,也叫牛顿-拉夫森算法。该算法利用函数的导数信息进行迭代求解,通常收敛速度非常快。

原始的Newton-Raphson算法是求解单个方程的,但是该算法可以通过将多个方程联立在一起,实现求解非线性方程组的功能。

公式推导

对于方程 $f(x)=0$,其中 $f(x)$ 在 $x_0$ 处可导,则可以根据函数的一阶泰勒展开式得到:

$$f(x) \approx f(x_0) + f'(x_0)(x-x_0)$$

当 $f(x)$ 满足 $f(x)=0$ 时,有 $f(x_0)+f'(x_0)(x-x_0)=0$,即:

$$x=x_0-\frac{f(x_0)}{f'(x_0)}$$

得到Newton-Raphson算法的基本迭代式,即:

$$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\qquad n=0,1,2,...$$

算法实现

以下是一个用Python实现的Newton-Raphson算法(求解 $x^2=a$ 的根)的示例代码:

def newton_raphson(a, epsilon=1e-6):
    x = a
    while True:
        fx = x**2 - a
        if abs(fx) < epsilon:
            return x
        dfx = 2*x
        x = x - fx/dfx

其中,参数 a 是方程的系数,epsilon 是收敛精度,x 是初始迭代点,利用过程中 fxdfx 分别表示函数和函数的导数在当前 x 上的值。

参考资料
  1. 《数值分析》(第三版),李荣华,高等教育出版社,2009年
  2. Wikipedia - Newton-Raphson method