今天这一篇我们不讲难懂的,讲一下大家都能看懂的知识,那就是方程的近似解。

顺便说一下由于时间关系今天我们就作一下简单的介绍,虽然简单介绍,但是我相信绝大部分人能看懂。

解方程一般分为解析法与数值方法,但是众所周知,解析法能解出的方程数量,可以说是九牛一毛,只要随便写出一个方程基本没有一般方法能得到方程的精确解。也就是说,在现有的数学框架下,想要得到任意一个方程的精确解,基本是不可能的,当然了简单方程除外。所以得到一个方程在任意指定的误差范围内的近似解就成为了主要研究对象。下面我们就简单介绍两种数值方法来得到方程的近似解。

方程的小解(方程的近似解)(1)

一、二分法:

这种方法我相信绝大部分人都听过,也就是根据零点定理找到两点a、b,使得f(a)·f(b)<0,然后根据这两点开始二分法。

设f(x)在[a,b]上连续,且有f(a)·f(b)<0,那么在[a,b]中至少存在一个解x*,我们现假定只有一个解,并指定一个精度要求精确到如10⁻³、10⁻⁸,记为ε。那么我们希望能找到的一个近似值x',满足:

|x'-x*|<ε,

当然了,这样就存在一个问题,精确值x*我们事先并不知道,那该怎样确定呢?其实很简单,我们取两次二分得到的近似值x'、x'',只需要满足 |x'-x''|<ε即可。为什么满足|x'-x''|<ε就行呢?原因等讲过二分法的具体操作之后再说。

1、二分法的操作步骤:

①、在闭区间[a,b]中,首先令x₁=(a b)/2。

②、计算f(x₁)的值,如果有f(x₁)=0,那么x₁就是解,否则,继续下面的步骤。

③、如果有f(x₁)·f(a)<0,那么取区间[a,x₁],并取x₂=(a x₁)/2,否则f(x₁)·f(b)<0,那么取区间[x₁,b],并取x₂=(x₁ b)/2。

④、同样如果有f(x₂)=0,那么x₂就是解,否则,继续下面的步骤。

⑤、如果解在区间[a,x₁],并且有f(x₂)·f(a)<0,那么取区间[a,x₂],并取x₃=(a x₂)/2;否则有f(x₂)·f(x₁)<0,那么取区间[x₂,x₁],并取x₃=(x₁ x₂)/2。当然了,要是解在区间[x₁,b],取法类似。就不在重复了。

⑥、同样的验证函数在x₃的值,然后重复上面的步骤。

现在来说一下为什么只需验证两次二分的差的绝对值小于ε,就是满足精度的近似值。其实很简单,因为每作一次步骤,它们之间的距离就变为之前的一半,而方程的精确解必定位于每一次分法的某一边(左或右)。而因为是二分,所以两边的长度是相等的,因此只要有|x'-x''|≤ε,那么就必定有|x'-x*|≤ε。

现在来说一下,对于某一确定的精度ε,具体最多要作多少次操作就能满足精度要求。

其实很简单,有上面分析可知,只需要两次分法的距离小于ε即可,而每次分法距离变为原来的一半,因此对于n次分法,距离就变为(b-a)/2ⁿ,因此只需要使得(b-a)/2ⁿ<ε,并且解出n,就可以得到需要作多少次步骤,就可以得到满足精度要求的近似解。

我们举一个简单的例子,如求方程3x²-2x-2=0的解要求精度为10⁻³。

我们先设函数f(x)=3x²-2x-2,并且很容易能找到一个区间满足上面的二分条件,区间[0,2]满足,现在确定大概需要多少步,2/2ⁿ≤10⁻³,算了一下,需要十步就能得到满足的近似解。在此我们就不具体解答了。

下面我们在介绍另一种方法,牛顿迭代法。

二、牛顿迭代法:

在数值计算中,我们一般情况下,是能用牛顿迭代法就不用二分法,因为二分法收敛速度慢,计算步骤比较多,当我们介绍了迭代法后,就可以知道它的收敛速度是二次的。当然了,相比于迭代法,二分法也有优势,后面会具体说明。

迭代法就是将原来的方程f(x)=0化为等介形式,即

x=F(x),

也就是说,若x*是方程f(x)=0的解,那么也成立

x*=F(x*),

反之亦然,F(x)称为迭代函数。

构造迭代函数的方法有多种,最简单的莫过于

F(x)=x±f(x)。

下面介绍一下执行步骤。

执行步骤:

首先,我们选取一个合适的x₀作为初始迭代值,并且按照

xₙ₊₁=F(xₙ),(n=1、2、…)

的方式来构造序列{xₙ}(当然了,设迭代后的每个值都在F(x)的定义域之内),如果我们在理论上成立数列{xₙ}收敛于某一值x*,那么我们很容易知道这个收敛值x*就是原方程的解了。

对于某一指定的精度要求ε,我们依然只需要两次迭代的值xₙ、xₙ₊₁差的绝对值满足

|xₙ₊₁-xₙ|≤ε,即可。

具体原因是数列{xₙ}是基本列,所以对于任意的指定的精度ε,存在一个N∈N ,对于任意的n、m,只要n、m>N,就有|xₙ-xₘ|≤ε,因而就有|xₙ-x*|≤ε。

现在我们用泰勒公式来导出牛顿迭代法中的F(x)。

由泰勒公式的运用条件,首先我们设f(x)在含有解x*的区间[a,b]内具有连续二阶导数,且对于任意x∈[a,b],都有f'(x)≠0,这样我们对f(x)运用泰勒公式,由于x*是方程f(x)=0的解,因此有

f(x*)=f(x) f'(x)(x*-x) f"(ξ)(x* -x)²/2=0,

把x*单独移出来得

x*=x-f(x)/f'(x)-f"(ξ)/f'(x)·(x* -x)²/2,

而当x趋于x*时,右边最后一项是趋于0的,因而有

x*=x*-f(x*)/f'(x*),

这样我们得到一个满足迭代条件迭代函数的,即

F(x)=x-f(x)/f'(x),

由此得到迭代公式:

xₙ₊₁=F(xₙ)=xₙ-f(xₙ)/f'(xₙ),

上面介绍的就是牛顿迭代法。

三、几何意义:

大家都知道,我们要求解方程f(x)=0的解,实际上就是求函数f(x)曲线与x轴的交点的横坐标,那么我们所取的初始值x₀在曲线f(x)的坐标点为(x₀,f(x₀)),那么过这点曲线的切线方程为:

y=f'(x₀)(x-x₀) f(x₀),

而这切线与x轴交点的横坐标恰为

x=x₀-f(x₀)/f'(x₀)=x₁,

这说明了,牛顿迭代法实际上是通过一系列的切线与x轴交点的横坐标来逼近曲线与x轴交点的横坐标。

下面我们给出如下定理:

设f(x)在区间[a,b]中具有连续的二阶导数,且满足一下三个条件:

(1)、f(a)·f(b)<0;

(2)、f'(x)在区间(a,b)上符号保持不变;

(3)、f''(x)在区间(a,b)上符号保持不变;

并在(a,b)上取一点x₀,满足

f(x₀)·f''(x₀)>0,

的点,那么以x₀为初始值的牛顿迭代过程

xₙ₊₁=F(xₙ)=xₙ-f(xₙ)/f'(xₙ),(n=0、1、2…)

所产生的序列{xₙ}单调且收敛于方程

f(x)=0

在区间[a,b]中的唯一解。

下面我们对上面的定理作出必要的证明:

条件(1)保证了,函数f(x)在区间[a,b]上有零点,也就是方程f(x)=0在a在b之间有解。

条件(2)确定了函数在区间[a,b]上单调,保证了方程在[a,b]中解的唯一性。

条件(3)保证了函数在区间[a,b]上的同一凸性,保证了每个xₙ₊₁都比xₙ都接近方程f(x)的解。


首先我们为什么选用初始值x₀需要满足f(x₀)·f''(x₀)>0呢?我们作一个简单说明:

我们首先假定f(x)在区间[a,b]上下凸且单调递增,即f''(x)、f'(x)在区间[a,b]都恒大于0。其他情况类似。

为了方便理解,我们先从一个特殊情况f'(a)=0说起,当然了,即使f'(a)≠0下面的情况也可能发生。

由f''(x)大于0可知,一阶导数f'(x)在区间[a,b]上是单调递增的,而如果我们在函数零点x'的左侧任意选择一点ξ,即f(ξ)<0,由于f'(a)=0,因此我们知道f(x)在点a切线斜率为0,又因为f'(x)在区间上递增,可知f'(x)≥0且可以无限逼近于0,而对于区间右端点b,我们总可以找到一条切线,使得这条切线与x轴的交点的横坐标的值大于b,因而超出了所取定的区间[a,b],而在区间[a,b]之外函数可能无定义又或者可能函数性质发生变化,因而就终止了迭代。牛顿迭代法以失败告终。

下面我们开始证明这个定理:

证明思路:

我们还是假设f(x)在区间[a,b]上下凸且单调递增,当然了,其他情况也类似。下面我们由于时间关系,我们只简要介绍两种证明思路。

证明思路一:

我们只需要证明上述情况的迭代所产生的数列是严格递减的,且有下界,那么可以知道该数列必定收敛,然后根据迭代数列

xₙ₊₁=xₙ-f(xₙ)/f'(xₙ),

于是得到:

xₙ₊₁-xₙ=-f(xₙ)/f'(xₙ),

由于数列{xₙ}收敛,因此为基本列,从而当n趋于无穷时,左边一项趋于0,因而右侧也趋于0,而f'(x)是大于0的,因此得到当n趋于无穷时,f(xₙ)是趋于0的,故而数列{xₙ}收敛于函数f(x)的零点,即方程f(x)=0的解。

证明思路二:

我们把函数f(x)在区间[a,b]上的零点x*与满足定理中任意选定的初始值x₀,作成一个区间[x*, x₀],并在此区间中运用拉格朗日中值定理得到,存在一点ξ∈[x*, x₀],使得f(x₀)/(x₀-x*)=f'(ξ),而又因为函数f(x)在区间[a,b]上下凸,因而有二阶导数f''(x)在区间[a,b]上恒大于0,因此一阶导数f'(x)在区间上是单调递增的,因此有f'(x₀)>f'(ξ),因此易知函数f(x)在点x₀的切线与x轴交点的横坐标是大于x*,由迭代数列得

x₁=x₀-f(x₀)/f'(x₀),

知x₁<x₀,综合可得x*<x₁<x₀,接下来由以上分析对于任意迭代次数n,有

xₙ₊₁=xₙ-f(xₙ)/f'(xₙ),

成立x*<xₙ₊₁<xₙ,因此得知迭代数列{xₙ}严格单调递减,且有下界,易知收敛于方程的解x*。

其他情况思路类似。

当然了,还有其他证法,比如直接用迭代函数 F(x)=x-f(x)/f'(x)性质也可证明。

今天就简单介绍到这里,下一篇我们将继续把混沌现象没介绍完的部分介绍完。

,