matlab编程与工程应用——第7章matlab求解与函数极值.pptVIP

matlab编程与工程应用——第7章matlab求解与函数极值.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
matlab编程与工程应用——第7章matlab求解与函数极值

MATLAB编程与工程应用 教 师 :曾晓东 电 话 E_mail : zengxiaodong@263.net QQ : 241747139 第7章 MATLAB解方程与函数极值 7.1 线性方程组求解 7.2 非线性方程数值求解 7.3 常微分方程初值问题的数值解法 7.4 函数极值 7.1 线性方程组求解 一、直接解法 对于线性方程组Ax=b,可以使用下面方法直接求解: 1.利用左除运算符 x=A\b 2. 利用矩阵的逆 x=inv(A)*b 或 x=A^(-1)*b 例7.1 用直接法求解线性方程组 exp7_1.m 一、直接解法 3. 利用矩阵分解求解 矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解、 Schur分解、奇异分解等。 对系数矩阵分解后再求解,可大大提高求解速度 (1) LU分解 矩阵的LU分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式。自变量A要求是方阵。 [L,U]=lu(A) x=U\(L\b)=inv(L)*inv(U)*b A=L*U,其中L是一个下三角阵,U是一个上三角阵 [L,U,P]=lu(A) x=U\(L\P*b)=inv(L)*inv(U)*P*b P*A=L*U,其中P是置换矩阵 例7.2 用LU分解求解例7.1 exp7_2.m 3. 利用矩阵分解求解 (2) QR分解 对矩阵X进行QR分解,就是把X分解为一个正交矩阵Q和一个上三角矩阵R的乘积形式。 QR分解只能对方阵进行。 [Q,R]=qr(A) x=R\(Q\b)=inv(Q)*inv(R)*b A=Q*R,其中Q是正交矩阵(即Q*Q’=I),R是上三角矩阵。 [Q,R,E]=qr(A) x=R\(Q\E*b)=inv(R)*inv(Q)*E*b E*A=Q*R,其中E是置换矩阵。 例7.3 用QR分解求解例7.1 exp7_3.m 7.1 线性方程组求解 二、迭代解法 迭代解法非常适合求解大型系数矩阵的方程组。在数值分析中,迭代解法主要包括 Jacobi迭代法、Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。 1.Jacobi迭代法 对于线性方程组Ax=b,如果A为非奇异方阵,即aii≠0, 则A可分解为A=D-L-U,其中D为对角阵,其元素为A的对角元素,L与U为A的下三角阵和上三角阵,于是Ax=b化为: x=D-1(L+U)x+D-1b 与之对应的迭代公式为: x(k+1)=D-1(L+U)x(k)+D-1b 例7.4 利用jacobi迭代法求方程的解 exp7_4.m jacobi.m 二、迭代解法 2.Gauss-Serdel迭代法 在Jacobi迭代过程中,计算时,已经得到,不必再用,即原来的迭代公式Dx(k+1)=(L+U)x(k)+b可以改进为Dx(k+1)=Lx(k+1)+Ux(k)+b,于是得到: x(k+1)=(D-L)-1Ux(k)+(D-L)-1b 和Jacobi迭代相比,Gauss-Serdel迭代用新分量代替旧分量,精度会高些,稳定时间更快。 例7.5 利用Gauss-Serdel迭代法求方程的解 exp7_5.m gauseidel.m 例7.6 两种迭代法的比较 exp7_6.m 7.2 非线性方程数值求解 一、单变量非线性方程求解 x=fzero(fname,x0,tol,trace) fname是待求根的函数文件名, x0为搜索的起点。 tol控制结果的相对精度,缺省时取tol=eps, trace指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省为0。 例7.7 求f(x)=x-10x+2=0在x0=0.5附近的根。 funx.m exp7_7.m 7.2 非线性方程数值求解 二、非线性方程组求解 x=fsolve(fname,x0,option) fname用于定义需求解的非线性方程组的函数文件名。 x0为搜索的起点。 option优化选项设定 最优化工具箱提供了20多个选项,用户可以使用optimget命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。 Display选项决定函数调用时中间结果的显示方式,其中‘off’为不显示,‘iter’表示每步都显示,‘final’只显示最终结果。optimset(‘Display’,‘off’)将设定Display选项为‘off’。 7.2 非线性方程数值求解 例7.8 求下列非线性方程组在(0.5,0.5) 附近的数值解。 7.3 常微分方程初值问题的数值解法 一、龙格-库塔法简介 考虑求如下常微分方程(组)初值问题的数值解 一

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档