牛顿迭代法

一、What is 牛顿迭代法?

对于单个方程\(f(x)=0\),通过不断的迭代趋近于某一个单解,最终求出答案。但也有例外,比如出现无理数、无限循环小数等特殊情况,只能趋近出一个近似解,迭代次数越多结果越接近真实答案。

二、How to 牛顿迭代法

1. 怎么迭代

\(x_1\)为你对\(x\)的猜测值,比如方程\(x^2-16=0\),你最开始猜测\(x\)\(5\),则\(x_1=5\)。通过\(x_1\)求出\(x_2\)……(一直迭代),使最终趋近于“真正的\(x\)”。

2. 迭代的式子

\[x_{i+1}=x_i-\frac{f(x_i)}{f'(x_i)} \]

如上是牛顿迭代法迭代的式子,其中\(f'(x)\)是函数\(f(x)\)一阶导数

为什么是这个式子?

函数\(f(x)\)\(x_0\)泰勒级数展开式如下:

\[f(x)=[\sum_{k=0}^n\frac{f^{(k)}(x_0)}{k!}(x-x_0)^k]+R_n(x) \]

这是一个\(n\)阶泰勒展开式,即在\(x_0\)附近求\(f(x)\)的近似原函数,其中\(R_n\)\(n\)阶拉格朗日型余项,表示为\(R_n(x)=\frac{f^{(n + 1)}(\xi)}{(n+1)!}(x-x_0)^{n+1}\)\(\xi\)介于x与\(x_0\)之间。

观察,对于一阶泰勒展开式\(f(x)\approx f(x_0)+f'(x_0)(x-x_0)\),此时若\(f(x)=0\),此时这可以看做是一个方程,变形可得如下:

\[0\approx f(x_0)+f'(x_0)(x-x_0) \]

\[x\approx x_n-\frac{f(x_n)}{f'(x_n)} \]

观察可知,通过这种方式可以逼近\(f(x)=0\)的根\(x\),即牛顿迭代法

三、How to 求导

1. 第一种,单点求导数

  • 中心差分公式:\(f'(x) = \frac{f(x + h) - f(x - h)}{2h}\)
  • 后向差分公式:\(f'(x) = \frac{f(x) - f(x - h)}{h}\)
  • 前向差分公式:\(f'(x) = \frac{f(x + h) - f(x)}{h}\)

其中,中心差分公式最为精准,\(h\)是一个无限小的数,用1e-7一些极小的值代替一下。

2. 第二种,函数求导函数

记住以下式子。

  • 对于\(f(x)=x^n\)\(f'(x)=nx^{n-1}\)
  • 对于\(f(x)\)为常数的\(f'(x)=0\)
  • 对于\(f(x)=g_1(x)+g_2(x)\)\(f'(x)=g_1'(x)+g_2'(x)\)

对于基本的情况,即可由上解决。

3. 导数不存在了

在一些情况下没有导数。导数也就是一根切线的斜率,这根切线它要是上下摆动,有无数根,就无法求导。所以需要用左导数\(f_-'(x)\)右导数\(f_+'(x)\)进行判断。举个例子,对于\(f(x)=|x|\)

  • \(f'_-(0) =\lim_{h \to 0^-}\frac{f(0 + h)-f(0)}{h}=\lim_{h\to0^-}\frac{|h|-0}{h}=\lim_{h\to0^-}\frac{-h}{h}=-1\)
  • \(f'_+(0) =\lim_{h \to 0^+}\frac{f(0 + h)-f(0)}{h}=\lim_{h\to0^+}\frac{|h|-0}{h}=\lim_{h\to0^+}\frac{h}{h}=1\)

其中\(0^-\)表示从左侧趋近于0,即从负数逼近,\(0^+\)则相反,发现左导数右导数不相等,说明这根切线还有活动空间,所以它没有导数在\(x=0\)的位置,否则若相等则有导数。
趋向

posted @ 2024-10-24 00:06  Shawn2012  阅读(225)  评论(2)    收藏  举报