- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 MATLAB非线性方程求根
MATLAB命令 例1:解方程 解:在MATLAB里输入命令: X=solve(‘8*x^9+17*x^3-3*x=-1’) 可解出9个解。 例2:解方程 解: X=solve(‘sin(x)=0’),很可惜运行后只输出一个 根x=0. 缺点:用solve命令不能求出周期函数所对应的全 部根。 例3:解非线性方程组 解:在MATLAB命令窗口输入命令: E1=sym(x^x-4=0);E2=sym(2*x*y+x=1); [x,y]=solve( E1,E2) x1=double(x),y1=double(y) 出来的结果为: x = log(4)/lambertw(log(4)) y = -1/2*(log(4)-lambertw(log(4)))/log(4) x1 = 2 y1 = -0.2500 注:MATLAB系统只能做数值运算,并没有符 号运算功能,符号运算工具箱(symbolic math toolbox)则扩充了MATLAB这方面的功能,它是 由Maple的核心来完成。 例4:解方程 解:将方程化为 ,在matlab窗口 输入命令 fa=[8,0,0,0,0,0,17,0,-3,1]; xk=roots(fa) 运行后得所有根。 缺点:命令roots只能求 为多项式时方程 的根。 二、迭代法 迭代过程的几何表示 给出迭代法的一个M文件: function [k, piancha, xdpiancha, xk]=diedai(x0,k) %输入量--x0是初始值,k是迭代次数 x(1)=x0; for i=1:k x(i+1)=fun(x(i));%程序中调用的fun.m文件 piancha=abs(x(i+1)-x(i)); xdpiancha=piancha/abs(x(i+1)+eps); i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk] end if(piancha1)(xdpiancha0.5)(k3) disp(请用户注意:此迭代序列发散,请重新输入新 的迭代公式) return; end * * 第六章 非线性方程求根 非线性方程 的解称为 的根或零点。 本章主要研究单个非线性方程求根的一些方法,如图解法、二分法、牛顿迭代法、割线法、逐次代换法等,另外介绍求解非线性方程组的逐次代换法和牛顿迭代法。 一、图解法 设求方程 的正根, 设 分别画出 的图形,两条曲线 的交点即为原方程 的根,从图中观 察,根大约为0.38。 二、二分法 对于求解给定区间的根,二分法是一种既简单又稳健的方法,可以与图解法结合使用。 最终解 经过 n 步迭代后, 区间长度变为: 即为可能的最大误差 当给定容许误差 时,所需最小迭代步数为: 用于二分法计算的函数bisec_n. function bisec_n(f_name, a,c) tolerance = 0.000001; it_limit = 30; fprintf( It. a b c f(a) ); fprintf( f(b) f(c)\n ); it = 0; Ya = feval(f_name, a ); Yc= feval(f_name, c ); if ( Ya*Yc 0 ) fprintf( \n\n Stopped because f(a)f(c) 0 \n ); else while 1 it = it + 1; b = (a + c)/2; Yb = feval(f_name, b ); fprintf(%3.0f %10.6f, %10.6f, it, a, b ); fprintf(%10.6f, %10.6f, %10.6f, %10.6f\n, c, Ya, Yb, Yc ); if ( abs(c-a)=tolerance ) fprintf( Tolerance
文档评论(0)