文档介绍:.非线性方程的解法1引言数学物理中的许多问题归结为解函数方程的问题,即,0)(?xf()这里,)(xf可以是代数多项式,也可以是超越函数。若有数*x为方程0)(?xf的根,或称函数)(xf的零点。设函数)(xf在],[ba内连续,且0)()(?bfaf。根据连续函数的性质知道,方程0)(?xf在区间],[ba内至少有一个实根;我们又知道,方程0)(?xf的根,除了极少简单方程的根可以用解析式表达外,一般方程的根很难用一个式子表达。即使能表示成解析式的,往往也很复杂,不便计算。所以,具体求根时,一般先寻求根的某一个初始近似值,然后再将初始近似值逐步加工成满足精度要求为止。如何寻求根的初始值呢?简单述之,为了明确起见,不妨设)(xf在区间],[ba内有一个实的单根,且0)(,0)(??bfaf。我们从左端出点ax?0出发,按某一预定的步长h一步一步地向右跨,每跨一步进行一次根的“搜索”,即检查每一步的起点kx和1?kx(即,hxk?)的函数值是否同号。若有:0)(*)(??hxfxfkk()那么所求的根必在),(hxxkk?内,这时可取kx或hxk?作为根的初始近似值。这种方法通常称为“定步长搜索法”。另外,还是图解法、近似方程法和解析法。,不仅用于方程求根,而且用于方程组求解,矩阵求特征值等方面。迭代法的基本思想是一种逐次逼近的方法。首先取一个精糙的近似值,,反复校正这个初值,直到满足预先给定的精度要求为止。对于迭代法,一般需要讨论的基本问题是:迭代法的构造、迭代序列的收敛性天收敛速度以及误差估计。这里,主要看看解方程迭代式的构造。对方程(),在区间],[ba内,可改写成为:)(xx??()取],[0bax?,用递推公式:)(1kkxx???,?,2,1,0?k()可得到序列:???0210}{,,,,kkkxxxxx??()当??k时,序列??0}{kkx有极限x~,且)(x?在x~附近连续,则在式()两边极限,得,)~(~xx??即,x~为方程()的根。由于方式()和方程()等价,所以,xx~*?即,*limxxkk???式()称为迭代式,也称为迭代公式;)(x?可称为迭代函数。称求得的序列??0}{kkx为迭代序列。,用迭代格式)(1nnxgp??,求解方程)(xgx?,其中初始值为0p。**************************************************************************function[p,k,err,P]=fixpt(f1021,p0,tol,max1)%f1021是给定的迭代函数。%p0是给定的初始值。.%tol是给定的误差界。%max1是所允许的最大迭代次数。%k是所进行的迭代次数加1。%p是不动点的近似值。%err是误差。%P={p1,p2,…,pn}P(1)=p0;fork=2:max1P(k)=feval('f1021',P(k-1));k,err=abs(P(k)-P(k-1))p=P(k);if(err<tol),break;endifk==max1disp('maximumnumberofiterationsexceeded');endendP=P;****************************************************************************??xx的一个近似解,?x,误差界为510?。解:。functiony=f1021(x)y=sin(x)/x;('f1021',,10^(-5),20)然后在MATLAB命令窗口运行上述主程序,即:>>prog1021计算结果如下。k=2err==3err==4err==5err==6err==7err=-004k=8err=-004k=9err=-005k=10err=-005k=11err=-006P==