第二章 一元非线性方程的数值解法

更新时间:2023-06-06 22:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 一元非线性方程的数值解法

在科学和工程计算中,如电路和电力系统计算、非线性微分和积分方程、非线性规划、非线性力学等众多领域中,经常会遇到求解非线性方程的问题.非线性科学是当今科学发展的一个重要的研究方向,而非线性方程的数值解法又是其中不可缺少的内容. 本章主要讨论一元非线性方程

f(x) 0 (5.0.1) 的数值解法,其中x R,f(x)为x的非线性函数. 在方程(5.0.1)中,若函数f(x)是x的n次多项式,则称方程(5.0.1)为多项式方程或代数方程:

3x x x 2 0

8

6

3

;若函数f(x)是超越函数(自变量之间的

关系不能用有限次加、减、乘、除、乘方、开方 运算表示的函数。如指数函数、对数函数、三角函数和反三角函数等都是超越函数),则称方程(5.0.1)为超越方程:例e tan 6x 0

使f(x) 0的x称为方程f(x) 0的根,又称为函数f(x)的

3x

*

零点.若f(x)可分解为

其中m为正整数,且g(x

f(x)

=(x x

*

)g(x)

*

m

.当m=1时,称x为方程f(x) 0

*

) 0

的单根,而当m 1时,则称x为方程f(x) 0的m重根,或

*

称x为f(x)的m重零点.设x为f(x)的m重零点,且g(x)充

*

*

分光滑,则

.

根的求解:对于n次多项式方程,当次数n 4时,

**

f(x) f (x) f

(m 1)

(x) 0

*

,f

(m)

(x) 0

*

多项式方程的根可用求根公式表示:n 1,2时方程的根是我们已经熟知的,n 3,4时虽然有求根公式,但已不适合用于数值计算;而次数n 5时,就不能用公式表示多项式方程的根了.因此,对于次数n 3的多项式方程和一般连续函数方程(5.0.1),在实际应用时,通常并不需要得到方程根的解析表达式,只要得到满足一定精度的数值近似根就可以了.

对于非线性方程f(x) 0,求其近似数值根一般分为四步:

(1) 判断根的存在性:判断方程f(x) 0是否有根?若有,有几个?

(2) 确定根的分布范围:分析并估计方程根的分布情况,并将每一个根用相应区间分隔开,即确定方程根的有根区间;

(3) 根的初始化:确定根的初始近似值(称之为初始近似根);

(4) 根的精确化:对根的某个初始近似值设法逐

步精确化,使其满足一定的精度要求. 由以上步骤可以看出,求非线性方程数

值近似根的方法一般为迭代法.

第一节 初始近似根的确定

一、有根区间的确定

设f(x)为区间[a,b]上的连续函数,若f(a)f(b) 0,由闭区间上连续函数的性质(根的存在定理)可知,方程

f(x) 0f(x) 0

在(a,b)内至少存在一个实根,此时则称[a,b]为方程的有根区间(Rooted Inter-val).

此外我们也可以借助某些数学软件(如MathCAD, Mathematics, Matlab等)描绘出f(x)的图像,直观地了解方程f(x) 0根的分布情况.因此,我们可用试探的办法或根据函数的图象,确定出根的分布范围,即将函数f(x)的定义域分成若干个只含一个实根的区间. 例5.1 试确定方程f(x) x解 由于f (x) 6x

5

6

x 1 0

的有根区间.

1

,当x

5

16

时f (x) 0,则f(x)为严

格单调增函数;而当x 减函数.又由于

16

时f (x) 0,则f(x)为严格单调,

f( ) 0

1

0f 6

,所以方程

f(x) x x 1 0

6

只有两个实根.

经进一步分析可知,f(1)f(2) 0,则方程在[1,2]内有一个实根;f( 1)f(0) 0,则方程的另一个实根在[-1,0]内.

下面介绍的几种求方程的根的常用数值解法,即二分法,牛顿迭代法,都是将方程的初始近似根逐步精确化的方法.

第二节 二分法

二分法也称为区间对分法,是解非线性方程最直观、最简单的方法.

为讨论方便,不妨设函数f(x)在[a,b]上连续,严格单调,且f(a)f(b) 0,则方程f(x) 0在区间[a,b]内有且仅有一个实根x.

二分法的基本思想:将方程的有根区间平分为两个小区间,然后判断根在哪个小区间,舍去无根小区间,而后再把有根的小区间一分为二,判断根属于哪个更小的区间,如此反复,直到求出满足精度要求的近似根.

二分法的具体计算过程如下: 1. 取区间[a,b]的中点x

12

(a b)

,计算区间中点函数

值f(x),并判断:

若f(a)f(x若f(x

) 0

,则根x

[a,x0]

,令a

1

a,b1 x0

,则新的有

根区间为[a,b];

1

1

) 0

,则x即为所求根x;

若f(a)f(x

) 00

,则根x

1

[x0,b]

,令a

1

x0,b1 b

,则新的

有根区间为[a,b].

1

图5.2 二分法示意图

2. 对有根区间[a,b]施行同样的操作,即取中点

1

1

x1

12

(a1 b1)

,再将[a,b]分为两个子区间[a,x]和[x,b],计

1

1

1

1

1

1

1

算f(a)和f(x),若

1

f(a1)f(x1) 0

[x1,b1]

则x

[a1,x1]

,令a

2

a1,b2 x1

;否则x

2

,令a

2

x1,b2 b1

.这

1

样又确定了一个有根区间[a度的一半.

,b2]

,其长度是区间[a,b]长

1

如此反复,便得到一系列有根区间

[a,b] [a,b] [a,b] [a,b]

1

1

2

2

n

n

显然,区间[a

n

,bn]

的长度为

2

b a2

n

bn an

bn 1 an 1

(5.2.1)

当n 时,上式的极限为0,区间[a

k

,bk]

最终必收敛于一

点, 该点就是所求方程(5.0.1)的根x. 我们取二分后的最后的有根区间[a为方程(5.0.1)的根x的近似根

n

,bn]

的中点x作

n

xn

an bn

2

,x

n

[an,bn]

其误差估计式为 |x当n 时,取|x

**

xn|

bn an

2bn an

2

b a2

n 1

(5.2.2)

n

xn|

0

,即x

x

*

对预先给定的精度 0(即指定的绝对误差限 ),可以用以下方式结束二分法: 当|b取x

n 1

an 1|

时,必有|x

xn|

,结束二分法计算,

xn

二分法的计算步骤如下:

(1) 输入有根区间的端点a,b及预先给定的精度 ; (2) x: (a b)/2; (3) 若

f(a)f(x) 0

,则b: x,转向(4);否则a: x,转

向(4);

(4) 若b a ,则输出方程满足精度的根x,结束;否则转向(2).

二分法的优点: 1、是算法简单;

2、对函数的性质要求较低(只要连续即可); 3、收敛性可保证. 二分法的缺点: 1、收敛速度很慢;

2、不能求偶数重根,原因在于当方程(5.0.1)有偶数重根时所分区间端点处函数值同号,而将该区间舍去造成失根现象.

因此.在实际应用时,可用它求方程根的初始近似值.

例5.2 用二分法求方程f(x) x(取 10).

3

3

x 1 0

2

在[0,1]上的根

解(1) 这里a 0,b 1, f(0) 1 0,

[0,1]

f(1) 1 0

,得有根区间

(2) 计算x(3) 计算x

0 122

0.5,f(0.5) 0.125 0

,得有根区间[0.5,1];

得有根区间[0.75,1];

0.5 1

2

0.75,f(0.75) 0.01563 0 xk 1 10

3

如此继续,直到x

5.1:

k

时停止,计算结果见表

表5.1

由表5.1知

x9 x8 0.00098 10

3

所以原方程在[0,1]内的根x

*

x9 0.75489

第三节 牛顿迭代法及其收敛性

迭代法在数学的各个分支都有着重要的应用.本节主要讨论迭代法在非线性方程求根的应用. 一、迭代法的基本思想

迭代法的基本思想是:将方程(5.0.1)中f(x) 0化为下列等价形式

x g(x)

(5.3.1)

若要求x满足f(x

*

*

) 0

,则只需求出x

*

g(x)

*

即可;反之

也是如此,则称x为函数g(x)的一个不动点,求函数f(x)

*

的零点就等价于求函数g(x)的不动点.在有根区间内选一个初始近似值x,然后按(5.3.1)构造公式

x

k 1

g(xk),k 0,1,2,

(5.3.2)

可得到一个数列 x

k

,x1,x2, ,xk,

称 x 为迭代序列,而称(5.3.1)式中的g(x)为迭代函数.如果迭代序列 x 是收敛的,且收敛于x,则当g(x)

*

k

连续时,在(5.3.2)式两边取极限即得x

f(x) 0

*

*

g(x)

*

,即

从而x便是方程(5.0.1)的根.但实际计算当然不可能

*

做无穷多步,实用上,当k充分大时,若

x x

k

k 1

就取x作为原方程的近似根.这种求根法称为不动点

k

迭代法,或称逐次逼近法(Picard迭代法).(5.3.2)就是一个不动点迭代公式.当迭代公式(5.3.2)产生的迭代序列 x 收敛时,就称迭代法或迭代公式(5.3.2)

k

是收敛的,否则就称为是发散的.

二、不动点迭代法的构造

我们使用迭代法求解非线性方程(5.0.1)时需要解决如下四个问题:(1) 迭代函数的构造;(2) 初始近似根的选取;(3) 迭代序列收敛性分析;(4) 收敛速度和误差分析. 三、牛顿迭代法及其收敛性

设x是一元非线性方程f(x) 0的根,函数f(x)在x的

*

某邻域内连续可微,

f (xk) 0

k

xk

是某个迭代近似根,且

k

.把f(x)在点x处进行一阶泰勒展开,可得

f(xk) f (xk)(x xk)

f(x)

则方程f(x) 0可近似表示为 f(x

) f (xk)(x xk) 0

(5.3.3)

这是一个线性方程,求解得

x x

k

f(xk)f (xk)

k 1

将其右端项作为新的迭代值x,则可得迭代公式

xk 1 xk

f(xk)f (xk)

k 0,1,2,

(5.3.4)

这就是牛顿迭代法(Newton’s Method),(5.3.4)称为牛顿迭代公式.

如图5.3所示,曲线y f(x)与x轴的交

点x就是方程f(x) 0的根.设x是方程

图5.3 切线法示意图

f(x) 0的一个近似根,过曲线y f(x)上的

k

点P(x

k

k

,f(xk))

作切线,切线与x轴的交点为x,切线的方

k 1

程为

y

f(xk) f (xk)(x xk)

k

设切线点与x轴的交点为(x牛顿迭代公式(5.3.4)

xk 1 xk

k 1

,0)

,若f (x

) 0

,则可得

f(xk)f (xk)

,k 0,1,2,

因此,牛顿迭代法又称为切线法(Tangent Method). 牛顿迭代法的几何意义:用曲线y f(x)在点(x

k 1

k

,f(xk))

的切线与x轴的交点的横坐标x来代替曲线y f(x)与x轴交点的横坐标x.

牛顿迭代法的计算步骤为:

(1) 给出初始近似根x及精度 ;

(2) 计算x

(3)

1

: x0

f(x0)f (x0)

1

对于给定的允许误差 ,若x

x0

, 转向(4);

否则x

: x1

,转向(2);

1

(4) 输出满足精度的根x,结束. 例5.3 用牛顿迭代法求方程xe根,精度为 10.

8

x

1 0

在x 0.5附近的

解 这里f(x) xe式为

x

1

,f (x) e

x

xe

x

,相应的牛顿迭代公

表5.3k 0,1,2, 取x 0.5,迭代结果见表5.3,易见

|x x| 0.00000001 10 0

xk 1 xk

xkee

xk

xk

1

xk

xke

xk

xk e

xk

1 xk

,

8

43

故 x

x4 0.567143290

迭代了4次就得到了较满意的结果. 例5.4 用牛顿法计算3. 解 令x

3

2

f(x) x

,则x

3 0

2

3 0

,即求3等价于求方程

的正实根.因为f (x) 2x,由牛顿迭代公式得

xk 1 xk

xk 32xk

2

12

(xk

3xk

)

,k 0,1,2,

(5.3.5)

取初值x

1.5

,得

x1

1212121212(x0

3x03x13x23x33x4

) 1.75

x2 (x1

) 0.732142857

x3 (x2

) 1.732050815

x4 (x3

) 1.732050808

x5 (x4

) 1.732050808

3 1.732050808

这个迭代公式的意义在于通过加法和乘除法实现开方运算,这是在计算机上作开方运算的一个方法.

本文来源:https://www.bwwdw.com/article/5dj1.html

Top