代数方程和数值计算的复杂性理论简介.ppt
《代数方程和数值计算的复杂性理论简介.ppt》由会员分享,可在线阅读,更多相关《代数方程和数值计算的复杂性理论简介.ppt(54页珍藏版)》请在三一办公上搜索。
1、Email:2023/10/9,计算的 复杂性,计算机科学与工程学院,顾 小 丰,54-2,第一章代数方程和数值计算的复杂性理论简介,代数方程的不动点迭代算法 收敛性和复杂性算法优劣判别的两个层次,54-3,1.1代数方程的不动点迭代算法,我们知道,形如 ax2bxc=0,a0的一元二次方程,它的两个根可以按照,这个求根公式算出来。,54-4,ay3by2cyd=0,a0可作代换x=yb/3a化为无平方项的简化形式x3pxq=0,对简化形式作代换x=z-p/3z,可将其化为z6qz3-p3/27=0此方程可看作z3的二次方程,不难解出z,再代回去,得到 x1=AB;x2=AB2;x3=A2B其
2、中,(是的立方根之一)。,一元三次方程的求根公式,54-5,x4ax3bx2cxd=0 可以配方成,其中t是待定系数。令,上式的左边为f(x,t)2型。为了使上式右边为g(x,t)2型要选择适当的t,使判别式为0,即,即 t3bt2(ac4d)ta2d4bdc2=0先解关于t的三次方程,求出t,进而配方得到g(x,t)2,再解两个二次方程f(x,t)g(x,t)=0和f(x,t)g(x,t)=0即可得到结果。,一元四次方程的求根公式,54-6,上述这种把代数方程的根用方程系数经有限次加、减、乘、除和开方运算表示出来的方法,叫做代数方程的代数解法(或公式解法)。但是,数学家已经证明,五次和更高次
3、方程,就找不到普遍适用的代数解法,这就是说,不会有用方程系数经有限次加、减、乘、除和开方运算把方程的根表示出来的公式。这种“无公式解”的本性是和五次以下的方程不同的。由于这个原因,以后我们只把五次和高于五次的代数方程叫做高次方程。高次方程虽然没有普遍适用的代数解法,但是却有一些非代数的或者说非公式的解法。下面先介绍高次方程的不动点迭代解法。,高 次 方 程,54-7,不动点迭代法,代数方程都可以表示成f(x)=a0 xna1xn-1a2xn-2an-1xan=0,a00这里f(x)是一个n次多项式。如果能够把方程f(x)=0改写成x=(x)的形式,并能够找到一个x*,使得x*=(x*)那么,x
4、*就是原代数方程的一个解。,54-8,不动点迭代法,把方程f(x)=0改写成x=(x)的形式,非常容易,也有许多方式。例如,可以写成x=-a0 xna1xn-1a2xn-2(an-11)xan,也可以写成,等等。因为新方程是从f(x)=0变来的,所以新方程的解就是原方程的解。x*是新方程的解,就是说x*=(x*)。请看函数(x)。一个函数,就表示一个对应,或者说表示一个变换。函数(x)是把x变成(x)的对应。现在x*=(x*),就是把x*变成(x*)=x*自己,换一个说法,就是x*经过这个变换没有动,由于这个原因,使得x*=(x*)的点x*叫做函数的不动点,形如x=(x)的方程,也就叫做不动点
5、方程。,54-9,不动点迭代法,从上面可以看出,把代数方程改写成不动点方程是容易的,难的是怎样得到不动点x*。为此,我们采用迭代方法:找一个点,记作x0,代入函数,得到(x0),记作x1,再代入函数,得到(x1),记作x2,如此一直做下去,可以得到一个序列x0,x1,x2,xn,其迭代关系可以表示成xn+1=(xn),n=0,1,2,有趣的是,这个迭代序列有时候可以帮助我们找到所要的不动点,这就是不动点迭代方法。,54-10,不动点迭代法例1,考虑5次方程 x517x2=0首先把它变成不动点方程,这里的表示,选x0=0进行迭代,得,就是(x)。,x*=0.1176483就是的一个不动点,所以是
6、原方程的一个解。熟悉这方面内容的读者可能已经看出,2是原方程的一个解。但是如果你不懂迭代法,或者虽然懂但不去做,就无论如何看不出0.1176483这个解。,54-11,不动点迭代法例1,刚才,我们选x0=0开始迭代,获得成功,这是不是巧合?是不是接受了什么暗示?提出怀疑是完全合理的,应当多做几次试验。下面分别从x0=1,x0=-1,x0=2,x0=-2,开始迭代,4个迭代序列如下:,54-12,不动点迭代法例1,到目前为止,5个迭代都是成功的,一共找到2个解。下面,再扩大范围试试,从x0=3和x0=-3开始迭代,数据如下:,不必再算下去就可以判断,这两个序列都是没有极限的。迭代公式是,当xn已
7、经很大时,xn5就会非常大,最后除以17,仍然保持很大。所以,从x0=3开始的迭代跑向+,从x0=-3开始的迭代跑向-,它们都不收敛。我们说这样的迭代序列发散。,54-13,例1的图示,不动点迭代方法非常简单,但不一定能够保证成功。迭代是否成功,怎样使迭代成功,我们等以会儿再讨论。为了进一步把上述迭代的情况研究清楚,可以画一张迭代图帮助我们分析。,图1-1,图1.1-1标明了前面所做的7个迭代过程的结果,1个迭代驻守在2这个点不动,4个迭代收敛到0.1176483,另外两个迭代分别向+和-发散。,54-14,例1的图启示,从-3开始的迭代发散,从-2开始的迭代收敛。-3和-2之间,应当有一个分
8、界点,分界点在哪里?从分界点开始的迭代,究竟怎样进行?从1开始的迭代收敛到0.1176483这个不动点,从2开始的迭代驻守在2这个不动点,它们之间也应当有一个分界点,也有同样的问题。2和3之间也有同样的问题。,这个图启发我们提出进一步的问题:,54-15,为此,我们做3个迭代,数据如下:,看来,点2向右过去一点,迭代就发散到+,点2向左过去一点,迭代就收敛到0.1176483;而从-2.1开始的迭代发散到-。,54-16,更细致的试验,得出以下数据:,54-17,两个结论,点2是个孤立的、很不稳定的不动点,迭代出发点x0与点2差一点点,迭代的结果就完全不同问题(1)的分界点在-2.0590与-
9、2.0589之间,下面我们用另一种不但一学就会而且必定成功的迭代法把这个分界点确定下来,这就是分区间迭代法(二分法),现将这种方法介绍如下:,54-18,二分法,我们要解的是方程f(x)=0,如果我们已经知道两点ab,使得f(a)f(b)0,即f(a)和f(b)符号相反,那么在(a,b)中取中点c,计算f(c)。如果f(c)=0,则解已求得,不必再迭代下去。否则,如果f(a)f(c)0,知f(c)与f(b)同号,就扔掉原来的b,把c作为新b,仍如上法迭代;如果f(b)f(c)0,知f(c)与f(a)同号,就扔掉原来的a,把c作为新a,仍如上法迭代。这就是同符号顶替的原则。这样,每迭代一次,区间
10、(a,b)的长度就缩小一半,而在区间的两端,函数f(x)的符号总是相反的。于是,根据f(x)的连续性,这些每次缩短一半的区间最后套住一个点,这个点一定是f(x)=0的解。,54-19,二分法求解,现在就来试一试。前已知道,-2.0590与-2.0589之间应当有一个分界点,我们就拿a=-2.0590和b=-2.0589开始。f(a)=-3.81710-30,f(b)=3.46910-30,正好符合f(a)f(b)0,取(a,b)中取中点c=-2.05895,计算f(c),这时不必记录具体结果,只要知道正负就可以了,算得f(c)0,与f(a)同号,所以按照同号顶替得原则,取c作为新a,下次迭代就
11、取(a,b)=(-2.05895,-2.05890)。如果拘泥于中点,下次就该取c=-2.058925。但对分区间有一个好处,c取偏一点关系不大,只要不跑出(a,b)就行了。为了不一下子增加数字的长度,我们取c=-2.05893,算得f(c)0,再取c=-2.05894,也得f(c)0,接下去,54-20,二分法求解,c=-2.058945,f(c)0c=-2.058947,f(c)0c=-2.058948,f(c)0c=-2.0589475,f(c)0c=-2.0589477,f(c)0c=-2.0589476,f(c)0,这已经很精确了,我们就取c=-2.0589476作为f(x)=0得一
12、个近似解,这时f(c)=1.210-6。,54-21,f(x)=0的三个解,至此,我们找到了f(x)=0的三个解,也就是迭代的三个不动点,即2、0.1176483和-2.0589476。经过这样一番研究,我们对迭代的收敛情况有更加准确的了解,这些情况,总结如下图:,图1-2,54-22,f(x)=0的三个解,方程f(x)=x5-17x+2=0共有三个不同的实数解,它们是A=-2.058976,B=0.1176483和C=2。从不动点迭代的角度来看,A和C都是孤立的、不稳定的不动点,在A和C附近开始迭代,出发点差一点点,迭代结果就会面目全非。如果以迭代的结局来瓜分实数轴,那么(-,A)是-的地盘
13、,(A,C)是B的地盘,(C,+)是+的地盘,而A的地盘只有它自己一个点A,C的地盘也只有它自己一个点C。,54-23,第二个例子,考虑代数方程f(x)=x2-3=0。这个方程太简单了,但着眼于方法的讨论,我们为什么非要复杂的方程不可呢?找复杂的方程来演示,会本末倒置,花费许多精力到技术细节上会妨碍我们对问题实质的认识,所以,这里宁愿用简单的方程。我们采用4种方案,把f(x)=0变成不动点方程:(1)x=x+(x2-3)(2)x=3/x(3)x=(x+3/x)/2(4)x=x+(x2-3)/4 将不动点方程右端的表达式看作(x),就可以将迭代公式xn+1=(xn)具体写下来:(1)xn+1=x
14、n+(xn2-3)(2)xn+1=3/xn(3)xn+1=(xn+3/xn)/2(4)xn+1=xn+(x2n-3)/4这4个迭代都从x0=2开始,迭代情况如下:,54-24,第二个例子,迭代(1)发散到+,不收敛;迭代(2)振荡,也不收敛;迭代(3)和(4)都收敛到方程的解。虽然(3)和(4)都收敛,但是很明显,迭代(3)收敛得比迭代(4)快。,54-25,结论,大家是否注意到,迭代(1)和(4)都可以表示成统一得形式,那就是:x=x+c(x2-3)当取c=1时就得(1),迭代不收敛;当取c=-1/4时就得(4),迭代收敛了。这个c得选择很有讲究。选得好,就收敛,甚至收敛很快;选得不好,就算
15、得很慢,甚至根本不收敛。,从上面得例子可以看出,方程f(x)=0可以改写为多种不,动点方程,同一个不动点方程也可以选取多个初值,那么应当怎样构造不动点方程、怎样选择初值呢?下面我们来建立求方程x=(x)的根的迭代过程的收敛性定理和误差估计。,54-26,定理1-1,设函数(x)在有限区间a,b上满足如下条件:(1)当xa,b时,(x)a,b,即a(x)b;(2)对任意的x1,x2a,b,恒成立:|(x1)-(x2)|L|x1-x2|(即(x)在a,b上满足Lipschitz条件,L称为Lipschitz常数)且L1,则方程x=(x)在a,b上的解存在且唯一,并且对任意x0a,b,由迭代过程xn
16、+1=(xn)产生的序列xk收敛到。,54-27,定理1-1的证明,首先证明x=(x)的解存在且唯一。作函数g(x)=x-(x)显然g(x)在a,b上连续。由条件(1)可知g(a)=a-(a)0,g(b)=b-(b)0由连续函数根的存在定理可知:必有a,b使g()=0,即=()。因此,是方程x=(x)的解。其次证明唯一性,假设存在两个解1,2,则1=(1),2=(2),1,2a,b,因此,由条件(2)有|1-2|=|(1)-(2)|L|1-2|,因为L1,所以必有1=2=。再证xk的收敛性。按迭代过程xn+1=(xn),有xk-=(xk)-()由条件(2)得|xk-|=|(xk-1)-()|L
17、|xk-1-|Lk|x0-|,因L1,所以,。,54-28,推论1-1,若条件(2)改为(x)在a,b上有界,且|(x)|L1,当xa,b时则定理结论成立。,上面证明迭代过程的收敛性,理论上要得到精确解,一般需要进行无穷次迭代循环,这当然是不现实的,实际应用中也只需求得满足精度要求得近似值,为此,我们要估计经过n次迭代后的误差n=xn-。,54-29,定理1-2,设函数(x)在有限区间a,b上满足如下条件:(1)当xa,b时,(x)a,b,即a(x)b;(2)(x)在a,b上满足Lipschitz条件,且L1;则成立误差估计式,54-30,定理1-2的证明,对任意正整数mn,有,由Lipsch
18、itz条件得|xk+1-xk|=|(xk)-(xk-1)|L|xk-xk-1|Lk|x1-x0|所以,在上式中,令m,由定理1-1,,,所以,。,54-31,定理1-2的说明,在实际计算中,上式也可用来估计达到要求精度所需要的迭代循环次数,由要求,得,这里,,表示不大于x的最大整数。,54-32,1.2收敛性和复杂性算法优劣判别的两个层次,数学讨论最终还是要解决实际问题。如果面对的是方程求解问题,那么首先就要回答方程有没有解这个所谓解的存在性问题。方程有多少个解、解在什么地方等等,也都属于这类问题。存在性讨论有两种基本方式:一种是构造性的证明方法,那就是具体设计一种方法把解找出来,从而说明解是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代数方程 数值 计算 复杂性 理论 简介
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6240488.html