用Matlab求解非线性方程组-_第1页
用Matlab求解非线性方程组-_第2页
用Matlab求解非线性方程组-_第3页
用Matlab求解非线性方程组-_第4页
用Matlab求解非线性方程组-_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 -119-用Matlab 求解非线性方程组任中贵1焦艳会2张宏蕃3(1、哈尔滨理工大学应用科学学院,黑龙江哈尔滨1500802、哈尔滨商业大学,黑龙江哈尔滨1500003、黑龙江工程学院,黑龙江哈尔滨1500001引言非线性方程组解的几何意义与线性方程组类似,方程组中每个方程定义了一个“曲”超平面,非线性方程组的解为所有超平面的交点,但是这些曲面可能相交,也可能不相交,情况比平面复杂。通常对一个二维或三维没有解析解的非线性方程组,求解此类非线性方程组的数值方法很多,如牛顿法、拟牛顿法、不动点迭代法等等,但这些算法编程比较复杂困难。利用Matlab 符号对象功能,通过函数绘图确定解的存在区间,

2、再使用工具箱函数求解方程组的数值解的方法,过程简单,结果精度高,而且由于Matlab 自带的工具箱函数功能强大,极大地减小了编程的复杂性和程序调试的困难,适合计算各类问题中出现的非线性方程组。2Matlab 的符号对象和函数绘图功能Madab 的符号数学工具箱是以Maple 的内核为符号运算的引擎,并依赖Maple 已有的库函数开发出来的Matlab 环境下实现符号处理的工具箱。它将符号运算结合到Madab 的数值运算环境中。在Matlab5.0以上版本中定义这种新的数据类型符号对象或称为sym 对象,其建立函数是sym 或syms 。使用这两个函数可以建立符号变量、表达式和矩阵。Matlab

3、 的符号处理功能可以对符号对象进行因式分解、替换、化简等处理以及进行微积分、求极限、线性代数、微分方程等求解运算,求得符号解。在符号数学工具箱2.1版本中增强了符号函数的绘图功能,可以对多种形式的符号直接绘制不同表现形式的图形。如函数ezplot 可以绘制y=f(x及x=f(t、f(x=0构成的参数曲线,ezpolar 可以绘制r=f(的极坐标曲线,ezplot3可绘制y=f (t、x=f(t、z=f(t构成的参数曲线,还有ezsurf 、ezsurfc 、ezmesh 、ezmeshc 可以绘制参数网格或表面图等等。利用上述函数功能,我们可以绘制出非线性方程组的曲线或曲面图形,从图形中可以直

4、观地看到方程组解的存在区间,为下一步求解数值解提供计算范围或迭代起点。3Matlab 的函数语法和实例计算利用Madab 符号数学工具箱中的fsolve 函数,可以对非线性方程组进行求解。函数fsolve 的语法有以下几种:x=fsolve(fun ,x0从x0开始求解fun 所描述的方程。x=fsolve(fun ,x0,options根据options 指定的最优化参量最小化从x0开始的求解范围,注意要先使用optimset 设定参量。x ,fval=fsolve(fun ,x0通过求得的x 返回目标函数fun 的值。x ,fval ,exitflag=fsolve(按照出口行命令返回值e

5、xitflag 。x ,fval ,exitflag ,output=fsolve(返回一个包含最优化信息的输出结构output 。x ,fval ,exitflag ,output ,jacobian=fsolve(返回一个基于解的雅可比行列式fun 。求解方程之前,需要建立一个m 程序定义“fun ”,即所求的非线性方程组,程序如下:function y=myfun(xy=x(1-0.7J sin(x(1-0.2J cos(x(2x(2-0.7J cos (x(1+0.2J sin(x(2L y=y(1y(2L4迭代方法程序一个多世纪以来,迭代法一直被人们研究、使用和发展。近些年来,求解非

6、线性方程组的迭代法越来越受到人们的重视,并为许多计算数学工作者研究和使用。然而,由于非线性所带来的复杂性,关于非线性方程组的迭代法的许多问题都未能得到很好解决.例如:一是如何构造具有二阶收敛性的非线性迭代格式,二是迭代初值的选取方法,三是证明迭代方法的保正性,还有一些经典迭代法和外推迭代法的最佳参数问题、在实际使用迭代法时如何建立可行的停机准则并估计近似解的误差界,等等。求解非线性方程组的最简单和有效的迭代法之一就是Broyden 方法:它以一个近似雅可比矩阵为初值,每次迭代都对这个矩阵进行更新。初始雅可比近似可取点处的精确雅可比矩阵,当然,为了避免导数计算,也可取为单位矩阵。算法如下:fun

7、ction y=broyden(x0a=eye(length(x0Lx1=x0-myfun (x0/a L n=1Lwhile(norm(x1-x0>=1.0e-6&(n<=100000000x0=x1Lx1=x0-myfun (x0/a Lp=x1-x0L q=myfun (x1-myfun (x0L a=a+(q-p J a'J p /norm(pL n=n+1L end y=x1L n5结论fsolve 求解方程的过程是一个连续的过程,求解成功时,它得到一个解。然后聚合在一个非零点上,尝试另一个初始值所求解均为实型数据,如果所求解有复数量,所求根必须分解成实部

8、和虚部分别求解。上述方法适合求解各种非线性方程或方程组,Matlab 工具箱函数的强大功能大大地简化了程序的编写及调试,运算非常迅速。用Broyden 方法解非线性方程组虽然迭代次数多了一些,但不必计算原函数的代数值,甚至连导函数都不用,非常方便。参考文献1徐士良.Fortran 常用算法程序集M.北京:清华大学出版社,1997:121159.3潘状元.求解奇异问题新的加速迭代法J.高等学校计算数学学报,1988,2:118-125.4王兴华.一个迭代过程的收敛性J.科学通报,1975,132:558-559.5Hightpelfonnance Numeric Computtation and Visualization Softwave.Matlab User's Guide J.South Natick :The MathWorks ,Inc.,MA ,1994.335337.作者简介:任中贵(1979,男,哈尔滨理工大学硕士研究生,04级应用数学。责任编辑:王

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论