欢迎来到天天文库
浏览记录
ID:59476303
大小:722.50 KB
页数:57页
时间:2020-09-14
《Ch4非线性方程组及其应用ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、化工应用数学AppliedMathematicsforChemicalEngineering第4章非线性方程(组)及其应用化学化工学院汤吉海概述求解方程f(x)=0的数值法的基本思想:从某个初始近似值x0出发,按照某种数值过程模式进行重复,从而逐次改进前次的结果,直到达到规定的精度,便停止这种重复,并将最后所得结果xn作为方程f(x)=0的数值解。数值法解方程必须做三件事:首先:在函数f(x)的定义域内寻找初值x0;其次:建立逐次逼近的数值过程模式;第三:规定最终近似解的精度。解的精度取决于工程计算的实际
2、要求而与算法无关。各种算法的实质是由数值过程的模式确定的,不同的模式具有不同的计算效果和速度。初值x0则影响计算过程的速度甚至成败。主要内容4.1非线性方程的求解二分(Bisection)法简单迭代(Iteration)法牛顿(Newton)法弦截(Secant)法抛物线法(Muller法)4.2非线性方程组的求解牛顿-拉夫森(Newton-Raphson)法4.3非线性方程(组)的MATLAB求解图解法数值求解(fzero,fsolve)4.4化工应用应用1:根据PVT关系计算摩尔体积应用2:多组分溶液
3、体系的泡点应用3:绝热连续搅拌釜式反应器的转化率(自学)4.1.1二分(Bisection)法原理:设f(x)在区间[a,b]上连续,且有f(a)f(b)<0,则由连续函数介值定理,f(x)在[a,b]内必有零点,称[a,b]为方程f(x)=0的有根区间。二分法:取[a,b]区间的中点x0=(a+b)/2。将区间[a,b]分成两半,然后逐步搜索求解,若f(x0)与f(a)同号,则令a1=x0,b1=b;反之,若f(x0)与f(a)异号,则令a1=a,b1=x0。这样得到新的有根区间[a1,b1],其长度[
4、a,b]为之一半。特点:二分法计算简单,但是收敛比较缓慢;当存在多个实根时,则搜索策略要复杂很多。4.1.2简单迭代(Iteration)法迭代法是一种重要的逐次逼近方法,这种方法采用某个固定公式反复校正根的近似值,使其逐步精确化。求解方程f(x)=0的实根,将方程改写成等价形式:x=φ(x),φ(x)是x的新函数,xk+1=φ(xk)称作迭代公式。假设x0是方程根的初始近似值,则代入迭代公式右端,求得x1,再将x1代入右端,求得x2,…,如此重复循环,即:x1=φ(x0),x2=φ(x1),…,xn=φ
5、(xn-1)采用不同的方法改写求解方程则得到不同的迭代公式,求解的收敛性也不同。简单迭代法的收敛性发散收敛4.1.3牛顿(Newton)法基本思想:将非线性方程线性化,以线性方程的解逐步逼近非线性方程的解。Newton法是以曲线的切线与x轴的交点作为曲线与x轴的交点的近似。故Newton法又称为切线法。从几何上看,弦截法是以曲线上两点的割线与x轴的交点作为曲线与x轴的交点的近似,故弦截法又称为割线法。4.1.4弦截(Secant)法此外,割线的函数表达式恰为函数f(x)的以xk,xk-1,为节点的线性插值
6、多项式。用弦截法需要给出两个初始值x0,x1,通常取根所在区间的端点即可。4.1.5抛物线(Muller)法如果考虑用f(x)的二次插值多项式的零点来近似f(x)的零点,就导出抛物线法。迭代公式见教材P70。此法必须已知方程f(x)=0的根的三个近似值,以这三点为节点的f(x)的二次插值多项式如图所示,抛物线法的几何意义是以过曲线上三点的抛物线与x轴的交点作为曲线与x轴交点的近似。实际计算表明,抛物线法对初值要求并不苛刻。在初值不太好的情形下常常也能收敛。它的缺点是程序较复杂。4.2非线性方程组的解法解非
7、线性方程组的方法主要有两类:其中一类是线性化的方法,它是将方程组中的每个方程线性化得到一个线性方程组,由此构造迭代格式,求得非线性方程组的近似解。其代表是Newton法;另一类方法是将解非线性方程组问题化成优化问题,然后以最优化方法求解。最速下降法是其中最基本的方法。4.2牛顿-拉夫森(Newton-Raphson)法考虑一个由两个方程构成的非线性方程组:考虑方程组在估计值(x1k,x2k)处的一阶Taylor展开式:将此方程组写成如下的矩阵-向量形式:由此可以得到新的估计值:若令:则方程求解过程可以写成
8、:牛顿-拉夫森法(Newton-Raphson)Newton-Raphson法非线性方程组的Jacobian矩阵计算过程的停止准则可以采用以下两种:当较大时,也可以用两次迭代的相对误差充分小作为停止准则。Newton-Raphson法举例Newton-Raphson法源程序function[x,fx]=newton(f,df,x0,TolX,MaxIter)TolFun=eps;xx1=x0;fx=feval(f,x0);fo
此文档下载收益归作者所有