Skip to content

19.1.1 迭代法

迭代法的基本思路是: 从已知的初始值 xk(k=0,1,,n) 出发,进一步构造更好的逼近序列, 因此给定方程的解是一个收敛序列的迭代逼近. 构造的序列要有尽可能快的收敛速度.

19.1.1.1 一般迭代法

为了求解或许已转化为不动点形式 x=φ(x) 的给定方程,迭代法

(19.3)xn+1=φ(xn)(n=0,1,;x0 给定 )

称为一般迭代法. 如果在 x 邻域内满足

(19.4)|φ(x)φ(x)xx|K<1,

其中 K 为常数,而且初值在该邻域内,它将收敛到解 x (图 19.2). 如果函数 φ(x) 可导, 则相应的条件变为

(19.5)φ(x)K<1,

常数 K 越小,一般迭代法的收敛速度越快. x2=sinx ,即

xn+1=sinxn.

迭代过程如右表.

01937d01-b6f6-7881-8294-3a9c82211946_1_530_1051_580_507_0.jpg

n

0

1

2

3

4

5

xn

0.87

0.8742

0.8758

0.8764

0.8766

0.8767

sinxn

0.7643

0.7670

0.7681

0.7684

0.7686

0.7686

注 (1) 在复数解的情况下,设 x=u+iv ,分别对实部与虚部组成的两个未知量的方程组求解未知的实数 u,v .

注 (2) 迭代法求解非线性方程组可以参见第 1249 页 19.2.2.

19.1.1.2 牛顿法

1. 牛顿法的公式

为了求解形如 f(x)=0 的给定方程,最常用到的牛顿法有如下形式:

(19.6)xn+1=xnf(xn)f(xn)(n=0,1,;x0 给定 ).

即: 为了得到新的近似值 xn+1 ,需要计算函数 f(x) 与其一阶导数 f(x) 在点 xn 处的值.

2. 牛顿法的收敛条件

(19.7a)f(x)0

是牛顿法收敛的必要条件, 条件

(19.7b)|f(x)f(x)f2(x)|K<1

是牛顿法收敛的充分条件. 需要在解 x 及其邻域内所有的点 xn 都满足条件 (19.7a, 19.7b). 如果牛顿法收敛,其收敛速度非常快. 它是平方阶收敛的,即第 n+1 个近似值的误差远小于一个常数乘以第 n 个近似值的误差的平方. 在十进制中,这意味着经过迭代准确值的位数成倍增加.

求解方程 f(x)=x2a=0 ,即计算 x=a(a>0 给定),由牛顿法得到迭代公式为

(19.8)xn+1=12(xn+axn).

对于 a=2 ,有

n

0

1

2

3

xn

1.5

1.4166666

1.4142157

1.4142136

3. 几何插值

牛顿法几何插值可以表示为图 19.3. 牛顿法的基本思想是用函数 y=f(x) 的切线得到局部近似值.

01937d01-b6f6-7881-8294-3a9c82211946_2_555_1639_526_422_0.jpg

4. 修正牛顿法

如果在迭代过程中 f(xn) 的数值几乎不变,它在一段时间内保持为常数,可用所谓修正牛顿法

(19.9)xn+1=xnf(xn)f(xm)(m 给定,m<n).

这种简化的好处是其收敛阶几乎没有任何改变.

5. 复变量的可微函数

牛顿法对于复变量的可微函数同样适用.

19.1.1.3 试位法

1. 试位法的公式

为求解形如 f(x)=0 的方程,试位法具有如下形式:

(19.10)xn+1=xnxnxmf(xn)f(xm)f(xn)(n=1,2,;x0,x1 给定,m<n).

该方法仅需要计算函数值. 该方法源于牛顿法 (19.6),而导数 f(xn)f(x) 在点 xn 与前一个点 xm 的有限差分近似得到 (m<n) .

2. 几何插值

试位法几何插值可以表示为图 19.4. 试位法的基本思想是用曲线 y=f(x) 的切线得到局部近似值.

01937d01-b6f6-7881-8294-3a9c82211946_3_555_1385_529_419_0.jpg

3. 收敛性

当选取的 m 使得 f(xn)f(xm) 一直是异号时,方法 (19.10) 是收敛的. 若在迭代过程中收敛速度已经足够快,可以忽略符号改变,只要用 xm=xn1 就可以增加收敛速度.

  • 计算 f(x)=x2sinx=0 .

n

Δxn=xnxn1

xn

f(xn)

Δyn=f(xn)f(xn1)

Δxn Δyn

0

0.9

0.0267

1

-0.3

0.87

-0.0074

-0.0341

0.8798

2

0.0065

0.8765

-0.000252

0.007148

0.9093

3

0.000229

0.876729

0.000003

0.000255

0.8980

4

-0.000003

0.876726

如果计算过程中 Δxn/Δyn 的数值几乎不变,就不用一次一次地继续计算了.

4. 斯特芬森方法

应用试位法取 xm=xn1 求解方程 f(x)=xφ(x)=0 ,其收敛速度可以提高,尤其是 φ(x)<1 的情况. 该算法被称为斯特芬森 (Steffensen) 方法.

应用斯特芬森方法求解 x2=sinx ,需要用到 f(x)=xsinx=0 .

n

Δxn=xnxn1

xn

f(xn)

Δy=f(xn)f(xn1)

Δxn Δyn

0

0.9

0.014942

1

-0.03

0.87

-0.004259

-0.019201

1.562419

2

0.006654

0.876654

-0.000046

0.004213

1.579397

3

0.876727

0.000001

version 1.24.0