寻找函数零点的牛顿法

牛顿方法是如何使用第一个 导数 来查找函数零点并以数值方式求解方程的示例。 提供了有关如何使用牛顿法的详细解决方案的示例。
在线 牛顿法计算器 可用于检查结果。

\( \)\( \)\( \)\( \)

牛顿法

牛顿法或牛顿-拉夫森法是一种用于生成函数 f 零点的连续近似值的过程,如下所示:
\[ x_{n+1} = x_n - \dfrac{f(x_n)}{f'(x_n)} \] 对于 \( n = 0,1,2,3,...\)
为了使用牛顿法,您需要猜测函数零值的第一个近似值,然后使用上述过程。 下面我们将向您展示如何使用此方法来找到函数零点或方程解的良好近似值。
牛顿法可以很容易地编程,使用几乎任何具有数学函数的编程语言,以数值方式求解复杂的方程。


示例 1

使用牛顿法逼近由下式给出的函数 f 的最大零
\[ f(x) = x^2 + 3x + 1 \]

示例 1 的解决方案

给定的函数是二次函数,我们可以使用二次公式轻松找到其零点。 然而,我们从这个例子开始,以便能够将使用牛顿法找到的零与使用二次公式找到的零进行比较。
如何用牛顿法求f的最大零?
首先我们需要找到一个接近零的近似值。 这可以通过图形方式完成。 下面的 f 图表清楚地表明 f 有两个零,都是负数,并且最大的零更接近于零。 我们可以在牛顿法过程中使用零作为起始值
牛顿法示例 1

我们现在计算一阶导数 \( f ' \)
\[ f'(x) = 2 x + 3 \]
现在我们开始程序如下:
让 \(x_0 = 0 \) 。 这是最大零的起始近似值。 您可能会决定采用另一个值,只要它接近您近似的零即可。
我们现在使用上述过程计算 \( x_1 \) \( n = 0 \) ,如下所示:
\[ x_1 = x_0 - \dfrac{f(x_0)}{f '(x_0)} \]
将 \( x_0 \) 替换为它的值 0 并计算 \( x_1 \)
\( x_1 = 0 - \dfrac{f(0)}{f '(0)} \)
代替
\( x_1 = 0 - \dfrac{(0)^2 + 3(0) + 1}{2(0) + 3} \)
简化
\(x_1 = -1/3 \)

我们现在计算\(x_2\)如下
\[ x_2 = x_1 - \dfrac{f(x_1)}{f '(x_1)} \]
替代和简化
\( x_2 = -1/3 - \dfrac{f(-1/3)}{f '(-1/3)} \approx - 0.38095238 \)
我们现在计算 \( x_3 \) 如下
\[ x_3 = x_2 -\dfrac{f(x_2)}{f '(x_2)} \]
替代和近似
\( x_3 \approx -0.38196555 \)
继续执行程序即可找到
\( x_4 \approx - 0.38196601 \)
\( x_5 \approx - 0.38196601 \)


由于 \( x_5 \) 和 \( x_4 \) 非常接近,因此无需继续,因为我们将无法在逼近零方面取得更多进展。

请注意,\( f(x) = x^2 + 3x + 1 \) 的零点可以通过求解方程 \(x^2 + 3x + 1 = 0 \) 来分析找到。
使用二次公式,我们得到两个实零点:

\( z_1 = \dfrac{-3 - \sqrt 5}{2} \approx -2.61803398875... \) 和 \( z_2 = \dfrac{-3 + \sqrt 5}{2} \approx -0.38196601125.. .\)

现在我们将 \( x_5 \) 与两个零中最大的一个的精确值进行比较,即 \( z_2 = \dfrac{-3 + \sqrt 5}{2} \approx - 0.38196601125... \) 我们可以说它们在小数点后 8 位内相等。 检查近似准确性的另一种方法是计算
\( f(x_5) \approx 2.8 \; 10^{-9} \)
由于 \( f(x_5) \) 非常接近于零,因此 \( x_5 \approx -0.38196601 \) 是 \( f(x) \) 的零点之一的良好近似值。


注意:我们从示例 1 开始,其中使用分析方法获得零值,仅供比较。 牛顿法主要用于求解没有解析解的方程,我们将在例 2 和例 3 中看到。



示例 2

使用牛顿法求解以下方程
\[ e^{x-3} = - x + 2 \]

示例 2 的解决方案

请注意,上述方程的解无法通过解析找到,因此使用牛顿法。
我们首先写出右边为零的方程。
\(e^{x-3} + x - 2 = 0 \)
给定方程的解等于函数 \( f(x) = e^{x-3} + x - 2\) 的零。
计算一阶导数\(f'\)。
\[ f'(x) = e^{x-3} + 1 \]
下面是 \( f \) 的图形,很容易看出 \( f \) 的零点更接近 \( 2 \),因此选择 \( x_0 = 2 \) 作为起始值。
牛顿法示例2
令\(x_0 = 2\)并计算\(x_1\)
\( x_1 = x_0 - \dfrac{f(x_0)}{f '(x_0)} \)
代替
\( x_1 = 2 - \dfrac{e^{2 - 3} + 2 - 2}{e^{2 - 3} + 1} \)
使用计算器并估算
\( x_1 \approx 1.73105857...\)
现在,我们继续计算更多接近 \( f \) 零的值。
\(x_2 \approx 1.72154537...\)
\(x_3 \approx 1.72153545...\)
\(x_4 \approx 1.72153545...\)

现在 \( x_4 \) 和 \( x_3 \) 等于小数点后 8 位,我们已经达到了计算器精度的极限。 作为最后的检查,让我们计算一下
\[ f(x_4) \approx -9.3 \; 10^{-9} \]
并且还计算给定方程 \( e^{x-3} = - x + 2 \) 在 \( x_4 \) 处的左侧和右侧,以表明它们非常接近。
左侧:\(\quad e^{x_4 - 3} \approx 0.278464540...\)
右侧:\(\quad - x_4 + 2 \approx 0.278464550...\)
我们可以说 \( x_4 = 1.72153545 \) 是给定方程解的良好近似。


示例 3

使用牛顿法近似 \(\sqrt[3] 5 \)。

示例 3 的解决方案

\( \sqrt[3] 5 \) 是方程的解
\( x = \sqrt[3] 5 \)
将方程两边同时幂3得到方程
\(x^3 = 5 \)
可以写成
\( f(x) = x^3 - 5 = 0 \)
下面的 \( f \) 图形显示,在 \( 2 \) 附近有一个零,我们可以将其用作起始值。
牛顿法示例 3
\( f \) 的一阶导数由下式给出
\( f '(x) = 3 x^2 \)
我们现在让 \( x_0 = 2 \) 计算 \( x_1 \)
\( x_1 = x_0 - \dfrac{f(x_0)}{f '(x_0)} \)
代入并计算
\( x_1 = 2 - \dfrac{f(2)}{f '(2)} = 2 - \dfrac{2^3-5}{3 \; 2^2} = 1.75 \)
我们计算更多接近 f 零的值。
\(x_2 \approx 1.71088435...\)
\(x_3 \approx 1.70997642...\)
\(x_4 \approx 1.70997594...\)
\(x_5 \approx 1.70997594...\)

\( 1.70997594 \) 是 \( \sqrt[3] 5 \) 的一个很好的近似值。 使用计算器计算 \( \sqrt[3] 5 \) 并将计算结果与使用上述牛顿法获得的结果进行比较。

更多关于微分的应用

微分法的应用