数值分析一下咯(一)

无他,就是撸一遍:

Numerical Analysis, 2nd Edition Timothy Sauer, George Mason University

中文版由 机械工业出版社 出版。

约定:定义 定理 思考

1. 解方程(Solving Equations)

1.1 二分法(The Bisection Method)

定义1.1 对于方程数值分析一下咯(一),如果有数值分析一下咯(一),则说 数值分析一下咯(一) 是数值分析一下咯(一) 的一个根。

定理1.2 令 数值分析一下咯(一) 是 数值分析一下咯(一) 上的连续函数,满足 数值分析一下咯(一) , 则 数值分析一下咯(一) 在 数值分析一下咯(一) 和 数值分析一下咯(一) 之间存在一个根。

二分法算法流程:

数值分析一下咯(一)

二分法误差:

在区间 数值分析一下咯(一)数值分析一下咯(一) 次二分之后,得到最终区间 数值分析一下咯(一) 其长度为 数值分析一下咯(一) 。选取中间点 数值分析一下咯(一)最为根 数值分析一下咯(一) 的最有估计,则误差为:

数值分析一下咯(一)

定义1.3 如果误差小于 数值分析一下咯(一),则称其精确到小数点后 数值分析一下咯(一) 位。

二分法迭代次数:

只要确定了期望的精度,就可以依据二分法误差计算公式得到所需要的迭代次数。

 

1.2 不动点迭代(Fixed-Point Iteration)

定义1.4 对于方程 数值分析一下咯(一),存在 数值分析一下咯(一) ,使得 数值分析一下咯(一),就称 数值分析一下咯(一) 是方程 数值分析一下咯(一) 的不动点。

例如:

数值分析一下咯(一)

FPI 算法流程:

当方程可写作 数值分析一下咯(一) 的形式时,则使用初值 数值分析一下咯(一) 进行 FPI:

数值分析一下咯(一)

FPI 可能收敛,也可能不收敛,如果收敛到 数值分析一下咯(一),则 数值分析一下咯(一) 就是 数值分析一下咯(一) 的不动点,也是 数值分析一下咯(一) 的解

不同的 数值分析一下咯(一) 形式

同一个方程写成不同的 数值分析一下咯(一),由于 数值分析一下咯(一) 的不同,其能不能收敛,收敛快慢也不同:

:对于 数值分析一下咯(一),其 数值分析一下咯(一) 可写成:

数值分析一下咯(一)                 (a)

数值分析一下咯(一)               (b) 

数值分析一下咯(一)               (c)

令 数值分析一下咯(一),分别进行 FPI,其每次迭代数值,及 cobweb 图 :

(a)  不收敛

数值分析一下咯(一)数值分析一下咯(一)

(b) 收敛较慢

数值分析一下咯(一)       数值分析一下咯(一)

(c) 快速收敛

数值分析一下咯(一)      数值分析一下咯(一)

 

不动点迭代(FPI)的线性收敛

通过对 数值分析一下咯(一) 几何观察,其不动点 数值分析一下咯(一) 附近的斜率的绝对值,即 数值分析一下咯(一) 如果 小于 1,则FPI收敛,大于 1,则FPI不收敛

定义1.5 令 数值分析一下咯(一) 表示FPI过程中第 数值分析一下咯(一) 步的误差,如果:数值分析一下咯(一)满足线性收敛,收敛率为数值分析一下咯(一)

注: 关于 线性收敛,超线性收敛,r阶收敛以及 Rate of convergence令见下文 定义1.10。

定理1.6 设 数值分析一下咯(一) 连续可微,数值分析一下咯(一), 且 数值分析一下咯(一) 。那么就称对于一个足够接近 数值分析一下咯(一) 的初值估计,FPI以速度 数值分析一下咯(一) 线性收敛到不动点数值分析一下咯(一).

定义1.7 如果一个迭代方法,能够以一个足够接近 数值分析一下咯(一) 的初值估计收敛到 数值分析一下咯(一),则称该方法局部收敛(Locally Convergent)

:使用FPI计算 数值分析一下咯(一)

数值分析一下咯(一),即求 数值分析一下咯(一) 的不动点,运用FPI,收敛到 1.414215686

分析此时 数值分析一下咯(一) 导数 数值分析一下咯(一),收敛率数值分析一下咯(一),收敛,且收敛很快。

终止条件(Stopping Criteria)

不同于二分法,FPI无固定的误差公式,无法预测收敛所需步数,故而需要给出终止条件

数值分析一下咯(一)

(1.18)中 数值分析一下咯(一) 通常用于解在 0 附近的情况。

另外,好的FPI(代码)实现通常要设置最大迭代次数,以防止收敛失败

二分法和FPI比较

  二分法 FPI
收敛性 保证线性收敛 局部收敛时,则线性收敛
每步计算 每步只需一次函数求值 一次
速度 每步去掉1/2不确定性 不确定性会乘上数值分析一下咯(一),故而可能更慢或更快,要看数值分析一下咯(一)比1/2大还是小
其他   牛顿方法是FPI的改善,其 数值分析一下咯(一)

1.3 精度(Accuracy)

前向误差和后向误差 (Forward error & Backward error)

定义1.8 设 数值分析一下咯(一)是方程 数值分析一下咯(一) 的一个根,即满足 数值分析一下咯(一), 数值分析一下咯(一) 是根 数值分析一下咯(一) 的近似值,对于求解根的问题,该近似解 数值分析一下咯(一) 的前向误差是 数值分析一下咯(一)后向误差是 数值分析一下咯(一) 。

关于“前向”和“后向”:

数值分析一下咯(一)

Backward error is on the left or input (problem data) side. It is the amount we would need to change the problem (the function f ) to make the equation balance with the output approximation 数值分析一下咯(一). This amount is 数值分析一下咯(一). Forward error is the error on the right or output (problem solution) side. It is the amount we would need to change the approximate solution
to make it correct, which is 数值分析一下咯(一).”

思考:对于方程 数值分析一下咯(一) 有根 数值分析一下咯(一),写成 数值分析一下咯(一) 的形式,即有 数值分析一下咯(一),设数值分析一下咯(一) 为近似值,则对应的:

前向误差数值分析一下咯(一)

后向误差数值分析一下咯(一)

相对前向误差(relative forward error)数值分析一下咯(一)

相对后向误差(relative backward error)数值分析一下咯(一)

定义1.9 设 数值分析一下咯(一) 是可微函数 数值分析一下咯(一) 的 一个根,即满足 数值分析一下咯(一),如果有:

 数值分析一下咯(一)

就称 数值分析一下咯(一) 在 数值分析一下咯(一) 处有 数值分析一下咯(一) 重数(multiplicity m)。如果重数大于1,则称 数值分析一下咯(一) 在 数值分析一下咯(一) 处有重根(multiple root),当重数为1时,称为单根(simple)。

Wilkinson多项式

数值分析一下咯(一)

由式(1.19)可知根为1 到 20 的实数。但是若是给出的是式(1.20),使用迭代方法求解,“its evaluation suffers from cancellation of nearly equal, large numbers.”  小误差导致最终的大误差。

根求解的敏感性(Sensitivity of root-finding)

当输入小的误差,导致求解后大的输出误差时,这一情况被称作敏感性

根的敏感性公式:

数值分析一下咯(一)

误差放大因子(error magnification factor):

数值分析一下咯(一)

即: 相对前向误差 / 相对后向误差

条件数(condition number)

"The condition number of a problem is defined to be the maximum error magnification over all input changes, or at least all changes of a prescribed type."  条件数是误差放大的一总度量。

下图来自 维基百科-条件数

数值分析一下咯(一)

思考条件数 也可以看作是 最大误差放大因子

条件数为1左右的问题称为 良态问题(well-conditioned),条件数高的问题称为 病态问题(ill-conditioned)。

1.4 牛顿法(Newton's Method)

牛顿-拉弗逊法(Newton-Raphson Method),通常比之前提的线性收敛的收敛速度更快。

牛顿法算法流程:

数值分析一下咯(一)

数值分析一下咯(一)

牛顿法的二次收敛(Quadratic convergence of Newton’s Method)

定义1.10 令 数值分析一下咯(一) 为某迭代法第 数值分析一下咯(一) 步后的误差,则满足:数值分析一下咯(一),称该方法二次收敛

定理1.11 设 数值分析一下咯(一) 是二阶连续可微函数,且 数值分析一下咯(一) ,若 数值分析一下咯(一),则称牛顿法局部二次收敛到 数值分析一下咯(一)。第 数值分析一下咯(一) 步的误差为满足:

数值分析一下咯(一)

证明:

数值分析一下咯(一)

数值分析一下咯(一)

 

牛顿法的线性收敛(Linear convergence of Newton’s Method)

定理1.11 并不是说牛顿法总是能够二次收敛。

定理1.12 设在区间 数值分析一下咯(一) 上,有 数值分析一下咯(一) 阶连续可微函数 数值分析一下咯(一),其 数值分析一下咯(一) 有 数值分析一下咯(一) 重根,那么牛顿法局部收敛到 数值分析一下咯(一),且 数值分析一下咯(一) 步的误差 数值分析一下咯(一) 满足:数值分析一下咯(一),其中 数值分析一下咯(一)

注:依据定理1.11定理1.12,可以知道牛顿法在 数值分析一下咯(一) 是单根情况下为二次收敛数值分析一下咯(一) 为重根时,牛顿法的收敛率同二分法和FPI一样同处于线性收敛

改进牛顿法(Modified Newton’s Method)

定理1.13 如果 数值分析一下咯(一) 是在区间 数值分析一下咯(一) 上的 数值分析一下咯(一) 阶连续可微函数,其有 数值分析一下咯(一) 重根 数值分析一下咯(一),那么牛顿法改进为: 

数值分析一下咯(一)局部二次收敛到 数值分析一下咯(一) 。

1.5 无导数的根求解

除了多重根的情况,牛顿法之所以比二分法和FPI收敛更快,是因为其运用了更多的信息,就是导数。但有的时候导数难以计算,所以有以下无需导数的迭代求解方法:

割线法(Secant Method)

数值分析一下咯(一)

数值分析一下咯(一)

同牛顿法相比,即用差商替代导数。且需要两个初始估值。并以超线性(superlinear)收敛到 数值分析一下咯(一),收敛速度介于线性和二次收敛之间。割线法有三个变体

变体一·试位法(False Position 或 Regula Falsi)

与二分法有些类似,中点由类割线方法替代

数值分析一下咯(一)

注:试位法初始表现出对二分法和割线法的性能提升,因其融合了二者的优点,但二分法能够保证每次去掉1/2的不确定性,而试位法并不能有此保证,某些时候可能收敛的非常慢:

数值分析一下咯(一)

变体二·穆勒法(Muller's Method)

使用前三个迭代值数值分析一下咯(一)画出一个抛物线 数值分析一下咯(一),该抛物线与x轴相交,通常会有0到2个交点。如果有两个交点,那么距离数值分析一下咯(一)的那个交点作为数值分析一下咯(一)。如果不相交,则会有复数解。

变体三·逆二次插值(Inverse Quadratic Interpolation 即IQI)

使用形如 数值分析一下咯(一) 的抛物线替代穆勒法中的 数值分析一下咯(一) 。那么该抛物线与x轴只有一个交点。

经过 数值分析一下咯(一) 三个点的二次多项式 数值分析一下咯(一) 为:

数值分析一下咯(一)

这是拉格朗日插值(Lagrange interpolation)的一个例子(后头讲插值时会细讲)。

数值分析一下咯(一)

穆勒法和IQI比较示意:

数值分析一下咯(一)

穆勒法和IQI均比割线法收敛快,这是因为使用的更高阶的插值。

Brent法

一种混合方法,其融合了之前出现的一些方法。试想结合了二分法一定收敛,且其他复杂方法的快速收敛特性,岂不是能爽到!

同样,Brent法运用于连续函数 数值分析一下咯(一) ,边界是数值分析一下咯(一),且数值分析一下咯(一)

Brent法记录当前点 数值分析一下咯(一),其有最优后向误差数值分析一下咯(一) that is best in the sense of backward error),且有包含有根的区间 数值分析一下咯(一) 。总督来说就是:如果满足1)后向误差得到改进(improve)且 2)包含根的区间数值分析一下咯(一)至少减半,那么尝试IQI法取更新 数值分析一下咯(一) 的值;如果不满足以上两点,则使用割线法更新数值分析一下咯(一);如果还是失败了,就用二分法,这样能保证每步迭代以至少去除一半不确定性。