【数值分析学习笔记】——2、求解一元方程

2、几种一元方程的数值解法

求根的方法类别方法
划界法增量搜索、二分法
开方法不动点迭代、牛顿-拉弗森方法、割线法

(1)划界法:

   划界法要求两个初始猜测值界定的区间包含根。即两个初始值必须在根的两边。
    对于适定问题(well-posed problem),划界法总能够正常进行,但收敛较慢,需要更多的迭代步骤才能收敛到真实根上。

(1)开方法:

   这些方法可能需要一个或更多个初始猜测值,但是不必要求它们包含根
   对于适定问题,开方法不一定能正常进行,可能会发散。但是当开方法收敛时其收敛得更快。

2.1二分法

   假设f是定义在区间[a,b]上的连续函数,且f(a)和f(b)符号相反。根据介值定理,在(a,b)内存在一个数p使得f(P)=0。二分法要求将[a,b]的子区间反复减半,在每一步找出含有p的那一半。
在这里插入图片描述
误差计算:
∣ ε a ∣ = ∣ x r n e w − x r o l d x r n e w ∣ × 100 % \left| {{\varepsilon _a}} \right| = \left| {\frac{{x_r^{new} - x_r^{old}}}{{x_r^{new}}}} \right| \times 100\% εa=xrnewxrnewxrold×100%
   其中 x r n e w x_r^{new} xrnew为当前迭代得到的根的估计值, x r o l d x_r^{old} xrold为前一次迭代得到的根的估计值。当误差 ε a {\varepsilon _a} εa为小于设置的误差要求时,计算结束。

2.2不动点迭代

   不动点迭代(fixed-point iteration)是通过对函数f(x)=0进行重新整理,通过代数变换或简单地在原方程的两边同时加上x,实现将x放在方程的左边得到:
x = g ( x ) , x i + 1 = g ( x i ) x = g(x){\rm{ }},{\rm{ }}{x_{i + 1}} = g({x_i}) x=g(x),xi+1=g(xi)
   因此给定了根的初始猜测值 x i {x_i} xi,就可以计算新的估计值 x i + 1 {x_{i + 1}} xi+1
在这里插入图片描述
   运用不动点迭代时,若 ∣ f ′ ( x ) ∣ < 0 \left| {f'(x)} \right| < 0 f(x)<0,误差会随着迭代的深入而逐步减小。反之,如果 ∣ f ′ ( x ) ∣ > 0 \left| {f'(x)} \right| > 0 f(x)>0,误差则会增大。如果导数值为正,那么误差就是正的。如果函数导数值为负,那么在迭代过程中误差会不断变换符号。如下图所示:
在这里插入图片描述

2.3牛顿-拉弗森方法(Newton-Raphson method)

   所有求根方法中,使用最多的可能就是牛顿-拉弗森方法。如果根的初始猜测值为xi;,那么过点[xi , f(xi)]就可以作一条切线。该切线与x轴的交点通常代表根的一个更好的估计值。
在这里插入图片描述
   牛顿-拉弗森方法可以在这个几何插值的基础上推导出来。x处的一阶导数等于斜率: f ′ ( x i ) = f ( x i ) − 0 x i − x i + 1 f'({x_i}) = \frac{{f({x_i}) - 0}}{{{x_i} - {x_{i + 1}}}} f(xi)=xixi+1f(xi)0 整理后得到:
x i + 1 = x i − f ( x i ) f ′ ( x i ) {x_{i + 1}} = {x_i} - \frac{{f({x_i})}}{{f'({x_i})}} xi+1=xif(xi)f(xi)
   牛顿-拉弗森方法通常收敛的速度比较快(二次收敛),也存在一些缺点。比如对于一些特殊的函数(y=tanx)可能收敛的比较慢。可能会在局部极大值或极小值附近震荡。其收敛性依赖于函数的性质和初始猜测值的准确度。需要让初始猜测值足够靠近根。另外牛顿-拉弗森方法需要已知函数的斜率,实际中很多情况下无法求得函数的斜率。

2.4割线法

   实现牛顿-拉弗森方法的一个潜在的问题是需要计算导数。有一些函数,求它们的导数可能会有困难。这种情况下,可用后向有限差分(backward finite divided difference)来近似计算导数:
f ′ ( x i ) ≅ f ( x i − 1 ) − f ( x i ) x i − 1 − x i f'({x_i}) \cong \frac{{f({x_{i - 1}}) - f({x_i})}}{{{x_{i - 1}} - {x_i}}} f(xi)xi1xif(xi1)f(xi)
代入牛顿-拉弗森方法公式 x i + 1 = x i − f ( x i ) f ′ ( x i ) {x_{i + 1}} = {x_i} - \frac{{f({x_i})}}{{f'({x_i})}} xi+1=xif(xi)f(xi) 得到割线法公式:
x i + 1 = x i − f ( x i ) ( x i − 1 − x i ) f ( x i − 1 ) − f ( x i ) {x_{i + 1}} = {x_i} - \frac{{f({x_i})({x_{i - 1}} - {x_i})}}{{f({x_{i - 1}}) - f({x_i})}} xi+1=xif(xi1)f(xi)f(xi)(xi1xi)

在这里插入图片描述
   因为牛顿-拉弗森方法或正割法需要一个好的初始近似值但是通常收敛较快,所以这些方法常用于进一步计算由其他方法(如二分法)所得到的答案。

参考书籍:

《应用数值分析》、《Numerical Analysis》、《Applied Numerical Methods with MATLAB》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值