




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、非线性方程(组)求解引言n在945.36kPa9.33atm、300.2K时,容器中充以2mol氮气,试求容器体积。知此形状下氮气的P-V-T关系符合范德华方程,其范德华常数为a4.17atmL/mol2, b0.0371L/moln数学模型:范德华方程变形可得,这是关于V的非线性方程 22( )()()0anf VpVnbnRTV本章内容n2.1非线性方程组数值求解根本原理n2.2 Matlab函数n2.3 多项式求根函数rootsn2.4 非线性方程求解函数,fzero和fsolven2.5 关系和逻辑运算n2.6 Matlab程序流程控制非线性方程n与线性方程相比,非线性方程问题无论从实
2、际上还是从计算公式上都要复杂得多 n非线性方程普通方式n方程的解称为方程的根或函数的零点 n对于高次代数方程,当次数4时,那么没有通解公式可用,对于超越方程既不知有几个根,也没有同样的求解方式。实践上,对于n3代数方程以及超越方程都采用数值方法求近似根 0 xf数值法求根n首选要给出一个初始猜测解,然后经过各种迭代格式使其逐次逼近准确解n初值好坏对迭代收敛性有很大影响,因此初值的选取很重要n对于有专业背景的问题,初值可以按条件选择,对于没有阅历的问题,可以用图解法和计算机试算搜索法初估近似解 2.1.1 逐渐扫描法求根的初始近似逐渐扫描法求根的初始近似值值n用数值法求方程的根可分为两步,首先要
3、用数值法求方程的根可分为两步,首先要找出根的某个近似值,又称为找出根的某个近似值,又称为“初始值,初始值,然后再采用特定算法将初始值逐渐接近真然后再采用特定算法将初始值逐渐接近真实值,直到获得满足要求的结果实值,直到获得满足要求的结果n逐渐扫描法逐渐扫描法逐渐扫描法0yxaby = f (x)0yxaby = f (x)a+ha+2h2.1.2 求方程根的准确解求方程根的准确解n非线性方程(组)的求解普通采用迭代法进展。迭代法是一种重要的逐次逼近方法。这种方法用某个固定公式反复校正根的近似值,使之逐渐准确化,最后得到满足精度要求的结果n常见的迭代算法有不动点迭代、二分法、牛顿法、弦截法、威格斯
4、坦法Wegstein、抛物线法等 不动点迭代法不动点迭代法 0 xf xgx 我们可以经过多种方法将方程式转化为迭代方程0, 02ccxcxxx2xcx xcxxcxxx2122例如方程可以转化为以下不同方式(1)(2)(3)方程的根n从给定的初值x0,按上式可以得到一个数列: x0, x1, x2, , xk, n假设这个数列有极限,那么迭代格式是收敛的。这时数列xk的极限n 就是方程的根 *limkkxx直接迭代法n上述求非线性代数方程式数值解的方法称为直接迭代法或称为不动点迭代法。这个方法虽然简单,但根本问题在于当k-时,xk能否收敛于x*,也就是必需找出收敛的充分条件不动点n定义:函数
5、定义:函数g(x)的一个不动点的一个不动点fixed point是指一个实数是指一个实数P,满足,满足P = g(P)n从图形角度分析,函数从图形角度分析,函数y=g(x)的不动点是的不动点是y=g(x)和和y=x的交点的交点 不动点迭代的图形解释不动点迭代的图形解释 p0p1p2OPPxy(p0,g(p0)(p1,p1)y = xy = g(x)p0p1p2OPPxy(p0,g(p0)(p1,p1)y = xy = g(x)p0p1p2OPPxy(p0,g(p0)(p1,p1)y = xy = g(x)p0p1p2OPPxy(p0,g(p0)(p1,p1)y = xy = g(x)不动点定理
6、不动点定理 n设有(i) g,g Ca,b, (ii) K是一个正常数,(iii) p0(a,b), (iv)对一切x a,b,有g(x)a,bn假设对于一切x a,b,有|g(x)|K1,那么迭代pn=g(pn-1)将不会收敛到P点。在这种情况下,P称为排斥repelling不动点,而且迭代显示出部分发散性 2.1.2.2 二分法二分法0yxx1x2y = f (x)x*x02.1.2.3 牛顿法牛顿法n牛顿法也称为牛顿-拉普森法或者切线法。由于这个方法的计算结果颇佳,而计算过程也比较简单,所以被普遍采用n牛顿法的中心内容是经过泰勒级数将非线性方程式转化为线性方程式,然后用迭代法求解 牛顿公
7、式 n设方程式 的近似根为n那么 对 的泰勒级数展开式为1kkkkf xxxfx 0f x 0 x f x0 xx 2000002!xxf xf xxxfxfx 0000 xfxxxfxf000f xxxfx牛顿法表示图 xfy 00,xfx 11,xfx0 x1x*xYOX1kkkkf xxxfx yyx牛顿法本卷须知n在单根附近,牛顿公式恒收敛,而且收敛速度很快。但是需求留意假设初始值不在根的附近,牛顿公式不一定收敛n在实践运用中,牛顿法最好与逐渐扫描法结合起来,先经过逐渐扫描法求出根的近似值,然后用牛顿公式求其准确值,以发扬牛顿法收敛速度快的优点 2.1.2.4 弦截法弦截法n牛顿迭代法
8、收敛速度快,但它要求计算函数导数的值。在科学与工程计算中,常会碰到函数导数不易计算或者算式复杂而不便计算的情况 n弦截法的根本思想与牛顿法类似,即将非线性函数线性化后求解。两者的差别在于弦截法实现函数线性化的手段采用的是两点间的弦线,而不是某点的切线 111kkkkkkkf xxxxxf xf x弦截法表示图弦截法表示图 11kkkkkxxxfxfxf 00,xfx 11,xfx0 x1x*xYOX2x 22,xfx111kkkkkkkf xxxxxf xf x kkkkxfxfxx1弦截法本卷须知n与牛顿法只需给出一个初值不同,弦截法需求给出两个迭代初值。假设与逐渐扫描法结合起来,那么最后搜
9、索的区间的两个端点值常可作为初值n弦截法虽比牛顿法收敛速度稍慢,但在每次迭代中只需计算一次函数值,又不用求函数的导数,且对初值要求不甚苛刻,是工程计算中常用的有效计算方法之一 2.1.2.5 松弛迭代法松弛迭代法n有些非线性方程用前面的不动点迭代法求解时,迭代过程是发散的。这时可以引入松弛因子,利用松弛迭代法。经过选择适宜的松弛因子,就可以使迭代过程收敛 1nnnnxxxx 松弛法本卷须知n由上式可知,当松弛因子=1时,松弛迭代法变为不动点迭代法;当松弛因子1时,松弛法使迭代步长加大,可加速迭代,但有能够使原理收敛的迭代变为发散;当01时,松弛法使迭代步长减小,这适宜于迭代发散或振荡收敛的情况
10、,可使振荡收敛过程加速;当0时,将使迭代反方向进展,可使一些迭代发散过程收敛 松弛法本卷须知n松弛迭代法能否有效的关键要素是松弛因子的值能否正确选定。假设值选用适当,能使迭代过程加速,或者使原来不收敛的过程变成收敛;但假设值选用不适宜,那么效果相反,有时甚至会使原来收敛的过程变得不收敛。松弛因子的数值往往要根据阅历选定,但选用较小的松弛因子,普通可以保证迭代过程的收敛 2.1.2.6 威格斯坦法威格斯坦法n威格斯坦法在化工流程模拟中得到了广泛威格斯坦法在化工流程模拟中得到了广泛运用运用 n威格斯坦法是一种迭代加速方法威格斯坦法是一种迭代加速方法 Wegstein法的表示图和迭代公式 )()()
11、()()(11111nnnnnnnnnxxxxxxxxxWegstein法本卷须知n应留意,假设x1和x2两点选择不当,那么连线的斜率等于1,与直线y=x无交点,从而迭代无法进展,这就是Wegstein法该当防止的陷井。引入一个量CSC1111)()(nnnnxxxxS)()1 (1nnnxCxCxWegstein法本卷须知n令q1-Cn当q0时,Wegstein法退化为简单的不动点迭代n当0q0时,迭代能稳定收敛,但收敛较慢n当q0可以加速收敛,但易导致不稳定n为了加速收敛又防止不稳定,常取-5qc = 1 -1 0 -1;r = roots(c)r = 1.4656 -0.2328 + 0
12、.7926i -0.2328 - 0.7926ipolyval(c, r(1) ans =-2.5535e-015 2.4 非线性方程求解函数nfzeron普通的单个超越方程,可以采用fzero函数求解。它结合运用二分法、割线法和可逆二次内插法 nfsolven与fzero函数只能求解单个方程的根不同,fsolve函数可求解非线性方程组的解。其算法采用的是最小二乘法 2.4.1 函数函数fzeronx,fval,exitflag,output = fzero(fun,x0,options, p1, p2, .)n 此函数的作用求函数fun在x0附件的零值点,x0是标量nfval函数在解x处的值
13、nexitflag程序终了情况: 0,程序收敛于解;0,程序没有收敛;0,计算到达了最大次数noutput是一个构造体,提供程序运转的信息;output.iterations,迭代次数;output.functions,函数fun的计算次数;output.algorithm,运用的算法noptions选项,可用optimset函数设定选项的新值nfun可以是函数句柄或匿名函数。例题例题7:n计算以下方程的根n1) 求sinx在3附近的零点; n2) 求cosx在1,2范围内的零点;n3) n4) n本例较简单,可直接在命令窗口输入命令求解:n1) fzero(sin,3)n2) fzero(c
14、os,1,2)n3) fzero(x) x3-2*sin(x),1)n4) fzero(x) x3-2*x-5,1); roots(1 0 -2 -5)0sin23xx0523 xx阐明阐明1) 第2小题中,假设所给区间两端方程不异号,那么程序出错2) 除了采用匿名函数外,当然可以采用句柄函数定义函数,例如第三小题可以采用如下程序: function Cha2demo1 x=fzero(fun,1) function y=fun(x) y=x3-2*sin(x);3) 初值的选择对于解有影响,不同的初值能够获得不同的解可以根据感兴趣的解的区间确定初值范围可以作出函数在一定范围内的曲线,直观确实
15、定解的大致范围4) fzero不能获得多项式的多重根,尤其是复数根。而roots函数求解,那么可获得一切根例题例题8n求 的零点,以t为自变量,取值范围为-10t(大于大于),=(大于等于大于等于),=a2的运算结果 a1=1 2 3;4 5 6;7 8 9; a2=5; a3=a1=a2a3 = 0 0 0 0 1 1 1 1 1 1234567892.5.2 逻辑运算逻辑运算2.5.2 逻辑运算逻辑运算两个逻辑量之间可以进展两个逻辑量之间可以进展“与、与、“或和或和“非三种根非三种根本逻辑运算及由它们组合而成的其它运算本逻辑运算及由它们组合而成的其它运算Matlab中的逻辑操作符包括:中的
16、逻辑操作符包括:&(逻辑与逻辑与),|(逻辑或逻辑或),(逻辑非逻辑非),xor异或,异或,&先决与和先决与和|先先决否决否逻辑运算的结果依然是逻辑量逻辑运算的结果依然是逻辑量0假或假或1真真维数一样的矩阵进展逻辑运算时,定义为它们对应运维数一样的矩阵进展逻辑运算时,定义为它们对应运算逻辑量间的逻辑运算结果算逻辑量间的逻辑运算结果Matlab允许数与矩阵间进展逻辑运算,规那么与关系允许数与矩阵间进展逻辑运算,规那么与关系运算一样,是数与矩阵各个运算间的逻辑运算运算一样,是数与矩阵各个运算间的逻辑运算逻辑运算真值表 例题例题13:求数值矩阵的逻辑求数值矩阵的逻辑“非,非,a1和和
17、0的的“异或异或解:键入解:键入a1=1 0 -5 0;3 -2 0 6;0 0 5 7; 9 2 1 9; a2=a1, a3=xor(a1,0)回车得到结果回车得到结果a2 = 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0a3 = 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 12.5.3 运算符的优先级运算符的优先级nMatlab表达式中能够包含多种运算符:数学运算符、关系运算符和逻辑运算符n各运算符执行的先后是根据优先级别执行的n不论运算符的位置如何,具有高优先级的运算符先执行n具有一样优先级别的运算符那么按先左后右的次序执行运算符的优先级注:级别1优先
18、级最高,11级别最低2.6 Matlab程序流程控制程序流程控制n组成计算机程序的一系列指令语句可以分成两类:运算语句和控制顺序语句nMatlab编程的主要义务是安排调整好控制顺序语句,使运算语句的运转顺序合理,运算简捷省时nMATLAB的程序流程控制主要有if选择语句、switch多重分支、for循环、while循环和trycatch等五种控制构造 2.6.1 if选择语句选择语句if语句的普通格式:if condition1 statements1 %假设condition1的值为True,那么执行该语句组elseif condition2 statements2 %假设condition
19、2的值为True,那么执行该语句组else statements3 %假设condition1和condition2的都为False,那么执行该语句组end阐明condition1和condition2均为逻辑表达式;elseif子句是可选的,数量也不受限制。假设缺省一切的elseif子句,那么if语句变为如下格式: if condition statements else statements end假设else子句也省略,那么if语句变为如下格式: if condition statements enderror函数n当不满足指定条件时,可运用终止某个程序或函数的运转nerror函数通常用
20、于确保程序获得有效的分支数值n当程序执行到error函数时,会在命令窗口显示函数所包含的信息,之后终止程序或函数的执行,并将程序控制权前往到命令窗口命令行nerror函数可用于程序或函数任何位置,并不限于if,for,switch和while构造例题例题14: 编写一个程序,当输入数字大于0时计算其平方根,当小于0时计算那么终止运算并前往错误信息解:x = input(x=)if x=0y=sqrt(x)elseerror(Negative input not allowed)end2.6.2 switch多重分支构造多重分支构造 switchcaseotherwise语句的才干与ifelse
21、end语句类似,但对多重选择的情况switch语句使代码更加易读。switch的普通格式:switch test_expr %测试表达式test_expr可以是标量或字符串case value statements 当test_expr值是value时,执行该语句组case value1,value2, statements 当test_expr值是value1或value2或时,执行该语句组otherwise statementsend例题例题15:编程判别并显示输入自变量x的详细数值时,函数是奇数、偶数0视为偶数,不分正负,还是其它解:程序如下%switchclear,x=input(x=
22、)y=x4-19*x3+x+32;switch mod(y,2) case 1 disp(It is odd) case 0 disp(It is even) otherwise disp(It is others)end2.6.3 for循环构造循环构造nfor循环构造用于循环次数知的情况,其普通格式如下:n for 循环变量 = 表达式1初值:表达式2步长:表达式3终值n statements 语句组n endnforend循环的执行过程是:先计算初值和终值,并把初值赋给循环变量;再判别循环变量的值能否超越了终值。假设超越,那么退出循环,执行end后面的语句,否那么执行循环体的语句组,之后
23、将循环变量加上一个步长,然后反复执行循环体内容,直至循环变量超越终值而退出循环为止例题例题16:n编程计算1至1000的加和值n解:编程如下nclearnj=0;nfor i=1:1000n j=j+i;nendnjnin运转后结果为nj =n 500500ni =n 1000n可见循环变量的最终值为表达式的终值2.6.4 while循环构造循环构造while cndition表达式 statements执行语句组end当MATLAB执行这个whileend循环时会首先测试condition条件表达式。假设condition为False(零),那么直接跳出循环,执行end后面的语句。假设condition为True(非零),那么执行语句组statements,然后退回到while语句再测试条件例题17:求满足的最小整数m解:由于终止条件未知,采用while-end循环。cleara=0;n=1;while a=1e4 a=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能仓储物流信息追溯系统对物流企业运营效率提升的可行性研究
- 河北对口建筑试题及答案
- 跨境电商箱包配饰品牌2025年品牌形象塑造策略研究
- 中集培训考试题库及答案
- 中国邮政考试题库及答案
- 中储棉四川考试题及答案
- 第10课阿长与《山海经》说课稿2023-2024学年统编版语文七年级下册
- 5.1.4 鱼 说课稿-2023-2024学年人教版生物八年级上册
- 组织系列活动喜迎元旦活动方案
- 幼儿园教学教案设计:防冻伤保暖
- 医院机电系统设计汇报
- 消防员心理测试题库及答案解析
- 2025至2030中国肉豆蔻酸行业需求潜力及前景动态研究报告
- 小儿静脉输液规范
- 土方换填施工方案
- 少先队的作风课件
- 第1课“北京双奥”荣耀中华 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 国家安全教育大学生读本课件高教2024年8月版课件-第四章坚持以人民安全为宗旨
- 施工船舶对通航安全的影响及管理策略
- 妇产科三基三严培训内容
- 《服装品牌策划课件》课件
评论
0/150
提交评论