第4.2讲 非线性方程组求解及matlab实现.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
松弛法注意事项 由上式可知,当松弛因子ω=1时,松弛迭代法变为不动点迭代法;当松弛因子ω1时,松弛法使迭代步长加大,可加速迭代,但有可能使原理收敛的迭代变为发散;当0ω1时,松弛法使迭代步长减小,这适合于迭代发散或振荡收敛的情况,可使振荡收敛过程加速;当ω0时,将使迭代反方向进行,可使一些迭代发散过程收敛 松弛迭代法是否有效的关键因素是松弛因子的值能否正确选定。如果值选用适当,能使迭代过程加速,或者使原来不收敛的过程变成收敛;但如果值选用不合适,则效果相反,有时甚至会使原来收敛的过程变得不收敛。松弛因子的数值往往要根据经验选定,但选用较小的松弛因子,一般可以保证迭代过程的收敛 第二部分:MATLAB应用 MATLAB求解非线性方程函数 非线性方程 非线性方程组 非线性方程 多项式函数 roots fzero fsolve 多项式求根函数roots 多项式的表达式约定如下: 对于多项式,用以下行向量表示: 这样就把多项式问题转化为向量问题 Matlab提供了多种多项式计算函数,如多项式求根函数roots,求多项式的值,polyval;多项式乘法,conv;多项式除法,deconv;多项式微分,polyder;多项式拟合,polyfit 函数roots r = roots(c),用于求解多项式的根 其中,行向量c的元素是多项式的系数,按多项式次数降序排列 如果c中含有n+1个元素,则多项式为n次 roots可以获得多项式的所有根 其算法为计算伴随矩阵的特征值 求解实例 例题6 求方程 的根 c = [1 -1 0 -1]; r = roots(c) r = 1.4656 -0.2328 + 0.7926i -0.2328 - 0.7926i polyval(c, r(1)) ans = -2.5535e-015 非线性方程求解函数fzero fzero 对于一般的单个超越方程,可以采用fzero函数求解 fzero函数结合使用二分法、割线法和可逆二次内插法 函数fzero [x,fval,exitflag,output] = fzero(fun,x0,options, p1, p2, ...) 此函数的作用求函数fun在x0附件的零值点,x0是标量 x:所求解 fval:函数在解x处的值 exitflag:程序结束情况: 0,程序收敛于解;0,程序没有收敛;=0,计算达到了最大次数 output是一个结构体,提供程序运行的信息;output.iterations,迭代次数;output.functions,函数fun的计算次数;output.algorithm,使用的算法 options:选项,可用optimset函数设定选项的新值 fun可以是函数句柄或匿名函数。 Fun函数如何编写? X0如何选取? 求解实例 例题7 计算以下方程的根 1) 求sinx在3附近的零点; 2) 求cosx在[1,2]范围内的零点; 3) 4) 本例较简单,可直接在命令窗口输入命令求解: 1) fzero(@sin,3) 2) fzero(@cos,[1,2]) 3) fzero(@(x) x^3-2*x-5,1); roots([1 0 -2 -5]) 4) fzero(@(x) x^3-2*sin(x),1) 说明 1) 第2小题中,如果所给区间两端方程不异号,则程序出错 2) 除了采用匿名函数外,当然可以采用句柄函数定义函数,例如第4小题可以采用如下程序: function Cha2demo1 x=fzero(@fun,1) function y=fun(x) y=x^3-2*sin(x); 3) 初值的选择对于解有影响,不同的初值可能获得不同的解 可以根据感兴趣的解的区间确定初值范围 可以作出函数在一定范围内的曲线,直观的确定解的大致范围 4) fzero不能获得多项式的多重根,尤其是复数根。而roots函数求解,则可获得所有根 利用函数求解 1. 直接编写函数 function Cha2demo1 x=fzero(@fun,1) function y=fun(x) y=x^3-2*sin(x); 2. 将上述文件保存为Cha2demo1的m文件 3. 在命令窗口键入 Cha2demo1 则得到结果 function y=myfun(x) y=x^3-2*sin(x); 1.编写函数 2.将上述文件保存为myfun的m文件 3.在命令窗口中键入 x=fzero(@fun,1),则得结果 求解实例 例题8 求

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档