牛顿迭代法
一、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. 迭代的式子
如上是牛顿迭代法迭代的式子,其中\(f'(x)\)是函数\(f(x)\)的一阶导数。
为什么是这个式子?
函数\(f(x)\)在\(x_0\)泰勒级数展开式如下:
这是一个\(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\),此时这可以看做是一个方程,变形可得如下:
观察可知,通过这种方式可以逼近\(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\)的位置,否则若相等则有导数。


浙公网安备 33010602011771号