1第二讲方程的图形法迭代法直接法第二讲方程及方程组解法(上)方程:工程计算和科学分析的发动机。若干世纪来,方程是工程师和数学家花费大量时间进行研究的课题,即有古老的算法(如二分法),也有新颖的发现(如迭代的分形与混沌现象)本讲主要介绍非线性方程的实用解法,对线性方程组及数值分析中的矩阵分解法略作介绍:图形放大法(不要苛求精确解!)简单迭代法(迭代函数的选取~)加速迭代法(加权平均的思想~)2第二讲方程的图形法迭代法直接法线性方程组解的存在性线性方程组的矩阵形式:AX=BAX=B的解可能出现三种情况:有解/无解/无穷解A=[121;231;1-1-2];B=[1;3;0];AB=[A,B];rank(A)==rank(AB)%ans=0故原方程组无解A=[01-34;10-23;320-5;43-50];B=[-5;-4;12;5];AB=[A,B];rank(A)==rank(AB)%ans=1有唯一解3第二讲方程的图形法迭代法直接法线性方程组AX=B的求解A=[01-34;10-23;320-5;43-50];B=[-5;-4;12;5];rank(A)==rank([A,B])x=A\B%方法1:矩阵左除运算x=inv(A)*B%方法2:逆矩阵求解法(须方阵)[L,U]=lu(A);%方法3:LU分解法x=U\(L\B)[Q,R]=qr(A);%方法4:QR分解法x=R\(Q\B)rref([A,B])%方法5:rref化行最简形…p13~4第二讲方程的图形法迭代法直接法代数方程求根公式的探寻...5第二讲方程的图形法迭代法直接法求解非线性方程更一般的方法我们面对的大多数方程(组)都是非线性的。定义:一些由实际问题列出的方程中常常包含三角函数、指数函数等,它们与n=2代数方程一起统称为非线性方程(组)例如:3x-ex=0;xsinx=1;x2-3x+ex-2所以,求解这一类方程(组)更具现实意义:计算机技术和数学软件技术的飞速发展为我们实现经典方法(比如二分法)、创新新方法(比如图形放大法)提供了极大便利,甚至衍生出一些崭新的学科方向(比如课本第3章提到的分形与混沌)6第二讲方程的图形法迭代法直接法最简捷和最一目了然的方法?图形放大法的最大优点在于:简捷和直观,同时也为后继的迭代法和函数法提供了可参考的初值条件演练一:p10,2.1x=-6:.001:6;plot(x,x.^5+2*x.^2+4,[-6,6],[0,0],'r-','linewidth',2)%参考线gridon;axis([-22-200200])%坐标区域重定义演练二:求解方程8x5-12x4-26x3-13x2+58x+30=0fplot('8*x^5-12*x^4-26*x^3-13*x^2+58*x+30',[-1,3]);set(findobj('type','line'),'linewidth',3);holdon;line([-55],[00],'color','r','linewidth',3);★注意以上程序中作参考线(X轴)的几种方法7第二讲方程的图形法迭代法直接法最简捷和最一目了然的方法?图形放大法的最大局限在于:作图的显示精度以及数值的读取精度,一般不作为方程求解实际方法演练三:求解非线性方程组ezplot('x^2+y^2-5',[-2.5,2.5,-2.5,2.5]);%定义作图区间holdon;ezplot('x*y-3*x+y-1',[-2.5,2.5,-2.5,2.5]);gridon;set(findobj('type','line'),'color','r','linewidth',2);%加粗局限:坐标刻度默认显示精度为小数点后4位提供一个控制函数:tickmore('w',n)tickmore('x',6);tickmore('x',6);2250310xyxyxy8第二讲方程的图形法迭代法直接法图形放大法的步骤和技巧:方程f(x)=0(1)建立坐标系,画曲线f(x)(2)观察曲线f(x)与x轴的交点(3)将其中一个交点局部放大(4)该交点的横坐标值就是方程的根技巧关键字(提高你的效率):步进精度选择(要足够适应放大倍数~)坐标区域设定(方便直观准确地读数~)交点追踪(强调x轴,双击reset,放大适可+tickmore)延伸:能不能写出不需人工干预的图形放大法?9第二讲方程的图形法迭代法直接法图形放大法的步骤和技巧:交点放大10第二讲方程的图形法迭代法直接法简单迭代法(迭代收敛的情形)回到早先我们接触的引例:3x-ex=0xn+1=(xn),n=0,1,2...,x011第二讲方程的图形法迭代法直接法迭代过程的图形化体现...迭代过程体现在图像上如下图所示:12第二讲方程的图形法迭代法直接法迭代算法的步骤与技巧:方程f(x)=0(1)经过简单变形,化为xn+1=(xn),n=0,1,2...(2)*绘出y=x和y=(x)的图形,并观察(3)确定迭代初值x0,并代入程序进行迭代(4)序列发散回到第1步;收敛获得求解技巧关键字(提高你的效率):迭代格式的确定(是否唯一,是否一定收敛?)迭代初值的选择(迭代与初值选择是否有关?)迭代存在的缺陷(迭代能否逼近所有的解?)演练:在讲解加速迭代法后一齐举例~13第二讲方程的图形法迭代法直接法简单迭代法的改进…当遇到迭代格式不收敛怎么办?如何加快迭代速度?加速迭代法就是为了解决上述问题而产生的改进型迭代法:若迭代格式xn+1=(xn),n=0,1,2...,不收敛,则我们不直接用(x)迭代,改用(x)与x的加权平均h(x)=(x)+(1-)x进行迭代,基于某个确定原则,比如:=1/(1-'(xn))改进后的加速迭代格式如下:附注:确定原则一般来自理论和经验,参见P1314第二讲方程的图形法迭代法直接法简单迭代法的改进…实践中,总结出了多种迭代格式xn+1=h(xn)构造方法15第二讲方程的图形法迭代法直接法简单迭代与加速迭代的比较1用两种方法迭代方法求解方程x3-x2-x-1=0构造迭代格式:初值x0=0x1=1;x2=1;x3=1;fork=1:20x1=x1^3-x1^2-1;x2=(x2^2+x2+1)^(1/3);x3=1+1/x3+1/x3^2;endx1,x2,x316第二讲方程的图形法迭代法直接法简单迭代与加速迭代的比较2格式1发散,格式2,3收敛,具体细节为:迭代格式1选取失败!迭代格式2,3成功收敛,收敛速度谁更快?17第二讲方程的图形法迭代法直接法简单迭代与加速迭代的比较3改进前面已经被判定为“失败的”迭代格式1:x=(x)=x^3-x^2-1由前述确定原则有:实验发现改进后的迭代格式1能够收敛,但速度仍然不如迭代格式2和3,相对自身而言“加速”注意:改进后的迭代格式1在迭代103次后才渐近至1.8393,并且需要在变量空间中双击查看why?18第二讲方程的图形法迭代法直接法除了简单迭代和加速迭代...我们知道,简单迭代法和加速迭代法在迭代格式xn+1=(xn)的选取上都是基于方程自身的,其实基于存根区间、基于函数曲线解析性还有多种算法,下面略作介绍:介绍:…p12~13这些算法形式多样,目标只有一个——逼近基于隔离存在根的区间,区间逼近:如二分法基于函数曲线解析特性,解析逼近:如牛顿法19第二讲方程的图形法迭代法直接法隔离存在根的区间,区间逼近二分法:简单,但效率很高的一种算法20第二讲方程的图形法迭代法直接法函数曲线解析特性,解析逼近牛顿切线法:可变形为多种迭代格式,如割线法21第二讲方程的图形法迭代法直接法非线性方程组的迭代法1类似于单变量方程的简单迭代法,方程组要求一次迭代过程完成对n个变量的迭代...22第二讲方程的图形法迭代法直接法非线性方程组的迭代法2下面以实例促进对方法的理解和掌握:问题:一次迭代过程x1的代入可以有几种选择?例123第二讲方程的图形法迭代法直接法非线性方程组的迭代法3实例:用迭代法求解非线性方程组(格式1)x=[0,0;2,0;3,3];n=input('选择初值1/[0,0]2/[2,0]3/[3,3]:');x=x(n,:);%指定不同的初值,以考察初值对迭代的影响holdonfork=1:10x(1)=0.1*x(1)^2+0.1*x(2)^2+0.8;x(2)=0.1*x(1)*x(2)^2+0.1*x(1)+0.8;disp(x)plot(k,x(1),'ro','linewidth',2);plot(k,x(2),'bp','linewidth',2);endgridon24第二讲方程的图形法迭代法直接法通用的可控精度迭代程序以方程3x-ex=0为例,演示如何将程序通用化:diedai.m为固定计算x=1/3*exp(x)的可控精度程序diedais.m为改写后的可适应一类方程的通用程序diedait.m为增强后的加可选绘图参数的程序通用关于线性方程组的迭代算法参见《数值计算》:高斯消去法;szp42雅克比迭代法;szp54,p59高斯-赛德尔迭代法;szp5325第二讲方程的图形法迭代法直接法实验一:图形放大法实验二:简单迭代法和加速迭代法实验三:迭代程序的通用化That’sall~3Q!