4.5.2 用二分法求方程的近似解

人教 A 版 · 原始扫描 + 转写(未校订)· 本节 4 页

原书扫描页

原书 page-0151
page-0151
原书 page-0152
page-0152
原书 page-0153
page-0153
原书 page-0154
page-0154

文字转写

由表4.5-1和图4.5-2可知, f(2)<0f(2) < 0f(3)>0f(3) > 0 ,则f(2)f(3)<0.f(2)f(3) < 0. 由函数零点存在定理可知,函数 f(x) =$$\ln x + 2x - 6 在区间(2,3)内至少有一个零点.

容易证明,函数 f(x)=lnx+2x6f(x) = \ln x + 2x - 6x(0,+)x \in (0, +\infty) 是增函数,所以它只有一个零点,即相应方程 lnx+2x6=0\ln x + 2x - 6 = 0 只有一个实数解.

?

为什么由图4.5-2和 f(2)f(3)<0f(2)f(3) < 0 还不能说明函数 f(x)f(x) 只有一个零点?你能证明函数 y=f(x)y = f(x) 是增函数吗?

练习

  1. 图 (1)(2)(3) 分别为函数 y=f(x)y = f(x) 在三个不同范围的图象. 能否仅根据其中一个图象, 得出函数 y=f(x)y = f(x) 在某个区间只有一个零点的判断? 为什么?

(1)

(2)(第1题)

(3)

  1. 利用计算工具画出函数的图象,并指出下列函数零点所在的大致区间: (1) f(x)=x33x+5;f(x) = -x^{3} - 3x + 5; (2) f(x)=2xln(x2)3;f(x) = 2x \ln(x - 2) - 3; (3) f(x)=ex1+4x4;f(x)=\mathrm{e}^{x-1}+4x-4; (4) f(x)=3(x+2)(x3)(x+4)+x.f(x)=3(x+2)(x-3)(x+4)+x.

4.5.2 用二分法求方程的近似解

我们已经知道,函数 f(x)=lnx+2x6f(x) = \ln x + 2x - 6 在区间(2,3)内存在一个零点.进一步的问题是,如何求出这个零点呢?

一个直观的想法是:如果能将零点所在的范围尽量缩小,那么在一定精确度的要求下,就可以得到符合要求的零点的近似值。为了方便,可以通过取区间中点的方法,逐步缩小零点所在的范围。

取区间(2,3)的中点2.5,用计算工具算得 f(2.5)0.084f(2.5) \approx -0.084。因为 f(2.5)f(3)<0f(2.5)f(3) < 0,所以零点在区间(2.5,3)内。

大多数方程都不能像一元二次方程那样用公式求出精确解。在实际问题中,往往只需求出满足一定精确度的近似解。

● ●

一般地,称 x=a+b2x=\frac{a+b}{2} 为区间 (a,b)(a, b) 的中点.

再取区间(2.5, 3)的中点2.75,用计算工具算得 f(2.75)0.512f(2.75) \approx 0.512 。因为 f(2.5)f(2.75)<0f(2.5)f(2.75) < 0 ,所以零点在区间(2.5, 2.75)内。

由于 (2,3)≢(2.5,3)≢(2.5,2.75)(2,3)\not\equiv(2.5,3)\not\equiv(2.5,2.75) ,所以零点所在的范围变小了。如果重复上述步骤,那么零点所在的范围会越来越小(如表4.5-2和图4.5-3)。这样,我们就可以通过有限次重复相同的步骤,将零点所在范围缩小到满足一定精确度的区间,区间内的任意一点都可以作为函数零点的近似值。为了方便,我们把区间的一个端点作为零点的近似值。

例如,当精确度为0.01时,因为 2.53906252.53125=0.0078125<0.01|2.5390625 - 2.53125| = 0.0078125 < 0.01 ,所以区间(2.53125,2.5390625)内任意一点都可以作为零点的近似值,也可以将 x=2.53125x = 2.53125 作为函数 f(x)=lnx+2x6f(x) = \ln x + 2x - 6 零点的近似值,也即方程 lnx+2x6=0\ln x + 2x - 6 = 0 的近似解.

对于在区间 [a,b][a, b] 上图象连续不断且 f(a)f(b)<0f(a)f(b) < 0 的函数 y=f(x)y = f(x),通过不断地把它的零点所在区间一分为二,使所得区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫做二分法(bisection method).

给定精确度 ε\varepsilon ,用二分法求函数 y=f(x)y = f(x) 零点 x0x_0 的近似值的一般步骤如下:

  1. 确定零点 x0x_0 的初始区间 [a,b][a, b],验证 f(a)f(b)<0f(a)f(b) < 0.

  2. 求区间 (a,b)(a, b) 的中点 c.

  3. 计算 f(c)f(c),并进一步确定零点所在的区间:

(1) 若 f(c)=0f(c)=0 (此时 x0=cx_{0}=c ),则 c 就是函数的零点;

(2) 若 f(a)f(c)<0f(a)f(c)<0 (此时 x0(a,c)x_{0}\in(a,c) ),则令 b=c;

(3) 若 f(c)f(b)<0f(c)f(b)<0 (此时 x0(c,b)x_{0}\in(c,b) ),则令 a=c.

为了刻画与准确值的接近程度,这里给出了精确度 ε\varepsilon ,由 ab<ε|a-b|<\varepsilon 可知,区间 [a,b][a, b] 中任意一个值都是零点 x0x_{0} 满足精确度 ε\varepsilon 的近似值(想一想,为什么).

  1. 判断是否达到精确度 ε\varepsilon :若 ab<ε\left|a-b\right|<\varepsilon ,则得到零点近似值 a (或 b );否则重复步骤 2~4.

由函数零点与相应方程解的关系,我们可用二分法来求方程的近似解.

例 2 借助信息技术,用二分法求方程 2x+3x=72^{x} + 3x = 7 的近似解(精确度为 0.1).

解:原方程即 2x+3x7=02^{x} + 3x - 7 = 0 ,令 f(x)=2x+3x7f(x) = 2^{x} + 3x - 7 ,用信息技术画出函数 y=f(x)y = f(x) 的图象(图4.5-4),并列出它的对应值表(表4.5-3).

观察图 4.5-4 或表 4.5-3,可知 f(1)f(2)<0f(1)f(2)<0 ,说明该函数在区间 (1,2)(1,2) 内存在零点 x0x_{0} .

图4.5-4

取区间(1,2)的中点 x1=1.5x_{1} = 1.5 ,用信息技术算得f(1.5)0.33.f(1.5)\approx 0.33. 因为 f(1)f(1.5)<0f(1)f(1.5) < 0 ,所以 x0x_0\in (1,1.5).

再取区间(1,1.5)的中点 x2=1.25x_{2} = 1.25 ,用信息技术算得 f(1.25)0.87f(1.25) \approx -0.87 。因为 f(1.25)f(1.5)<0f(1.25)f(1.5) < 0 所以 x0(1.25,1.5)x_0 \in (1.25, 1.5)

同理可得, x0(1.375,1.5),x0(1.375,1.4375).x_0\in (1.375,1.5),x_0\in (1.375,1.4375).

由于

1.3751.4375=0.0625<0.1,| 1. 3 7 5 - 1. 4 3 7 5 | = 0. 0 6 2 5 < 0. 1,

所以,原方程的近似解可取为1.375.

由例 2 可见,用二分法求方程的近似解,计算量较大,而且是重复相同的步骤。因此,可以通过设计一定的计算程序,借助信息技术完成计算。图 4.5-5 就是表示二分法求方程近似解过程的程序框图。有兴趣的同学,可以在此基础上用有关算法语言编写程序,利用信息技术求方程的近似解。

图4.5-5

练习

  1. 借助信息技术,用二分法求函数 f(x)=x3+1.1x2+0.9x1.4f(x) = x^3 + 1.1x^2 + 0.9x - 1.4 在区间(0,1)内零点的近似值(精确度为0.1).

  2. 借助信息技术,用二分法求方程 x=3lgxx = 3 - \lg x 在区间(2,3)内的近似解(精确度为0.1).

? 阅读与思考

中外历史上的方程求解

在人类用智慧架设的无数座从已知通向未知的金桥中,方程的求解是其中璀璨的一座。虽然今天我们可以从教科书中了解各式各样方程的解法,但这一切却经历了相当漫长的岁月。

我国古代数学家已比较系统地解决了某些类型方程求解的问题。约公元50~100年编成的《九章算术》,已经记载有开平方、开立方的开方方法,这些开方问题与求解两项方程,如求解 x2=ax^{2}=ax3=bx^{3}=b 正根的方法是一致的;7世纪,隋唐数学家王孝通找出了求三次方程正根的数值解法;11世纪,北宋数学家贾宪在《黄帝九章算法细草》中提出的“开方作法本源图”,以“立成释锁法”来解三次或三次以上的高次方程。同时,他还提出了一种更简便的“增乘开方法”;13世纪,南宋数学家秦九韶在《数书九章》中提出了“正负开方术”,提供了一种用算筹布列解任意数字方程的有效算法,此法可以求出任意次代数方程的正根。

国外数学家对方程求解也有很多研究。9世纪,阿拉伯数学家花拉子米(Al-Khowarizmi,约780—850)给出了一次方程和二次方程的一般解法;1541年,意大利数学家塔尔塔利亚(N. Tartaglia,约1499—1557)给出了三次方程的一般解法;1545年,意大利数学家卡尔达诺(G. Cardano,1501—1576)的名著《大术》一书中,把塔尔塔利亚的解法加以发展,并记载了费拉里(L. Ferrari,1522—1565)的四次方程的一般解法。

数学史上,人们曾希望得到一般的五次及以上代数方程的根式解,但经过长期的努力仍无结果。1778年,法国数学大师拉格朗日(J.-L. Lagrange,1736—1813)提出了五次方程不存在根式解的猜想。1824年,挪威年轻数学家阿贝尔(N. H. Abel,1802—1829)成功地证明了五次及以上一般方程没有根式解。1828年,法国天才数学家伽罗瓦(E. Galois,1811—1832)巧妙而简洁地证明了存在不能用开方运算求解的具体方程,同时还给出了一个代数方程能用根式求解的充要条件,他完全解决了高次方程的求解问题,并创立了对代数学发展影响深远的“伽罗瓦理论”。

虽然指数方程、对数方程等超越方程和五次及以上的高次代数方程不能用代数运算求解,但其数值解法却随着现代计算技术的发展得到了广泛的运用,如本章介绍的二分法,就是一种常见的利用计算技术的数值解法。除了二分法,牛顿法、拟牛顿法、弦截法等也都是典型的数值解法。关于这些方法,感兴趣的同学还可以查阅相关资料作进一步的了解。