用MATLAB解超定方程.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  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解超定方程

 HYPERLINK /opencv2008/213736/message.aspx \l # 用MATLAB解超定方程 /////////////////////////////////////////////////? 根据解的存在情况,线性方程可以分为: 有唯一解的恰定方程组, 解不存在的超定方程组, 有无穷多解的欠定方程组。 ////////////////////////////////////////////////// ? 对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且nm。则方程组没有精确解,此时称方程组为超定方程组。线性超定方程组经常遇到的问题是数据的曲线拟合。对于超定方程,在MATLAB中,利用左除命令(x=A\b)来寻求它的最小二乘解;还可以用广义逆来求,即x=pinv(A),所得的解不一定满足Ax=b,x只是最小二乘意义上的解。左除的方法是建立在奇异值分解基础之上,由此获得的解最可靠;广义逆法是建立在对原超定方程直接进行 householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快; ////////////////////////////// 独立方程个数大于独立的未知参数的个数的方程,称为超定方程,在matlab里面有三种方法求解, 一是用伪逆法求解,x=pinv(A)*b,二是用左除法求解,x=A\b,三是用最小二乘法求解, x=lsqnonneg(A,b) ////////////////////////////////// (3)矩阵求逆 行数和列数相等的矩阵称为方阵,只有方阵有逆矩阵。方阵的求逆函数为: B=inv(A) 该函数返回方阵A的逆阵。如果A不是方阵或接近奇异的,则会给出警告信息。 在实际应用中,很少显式的使用矩阵的逆。在MATLAB中不是使用逆阵x=inv(A)*B来求线性方程组Ax=B的解,而是使用矩阵除法运算x=A\B来求解。因为MATLAB设计求逆函数inv时,采用的是高斯消去法,而设计除法解线性方程组时,并不求逆,而是直接采用高斯消去法求解,有效的减小了残差,并提高了求解的速度。因此,MATLAB推荐尽量使用除法运算,少用求逆运算。 (4)除法运算 在线性代数中,只有矩阵的逆的定义,而没有矩阵除法的运算。而在MATLAB中,定义了矩阵的除法运算。矩阵除法的运算在MATLAB中是一个十分有用的运算。根据实际问题的需要,定义了两种除法命令:左除和右除。 矩阵左除: C=A\B或C=mldivide(A,B) 矩阵右除; C=A/B或C=mrdivide(A,B) 通常矩阵左除不等???右除,如果A是方阵,A\B等效于A的逆阵左乘矩阵B。也就是inv(A)*B。如果A是一个n′n矩阵,B是一个n维列向量,或是有若干这样的列的矩阵,则A\B就是采用高斯消去法求得的方程AX=B的解。如果A接近奇异的,MATLAB将会给出警告信息。 如果A是一个m′n矩阵,其中m不等于n,B是一个m维列向量,或是由若干这样的列的矩阵,则X=A\B是不定或超定方程组AX=B的最小二乘解。通过QR分解确定矩阵A的秩k,方程组的解X每一列最多只有k个非零元素。如果kn,方程的解是不唯一的,用矩阵除法求得的最小二乘解是这种类型解中范数最小的。 B/A大体等效于B*inv(A) (B右乘A的逆阵),但在计算方法上存在差异,更精确的,B/A=(AT\BT)T。 输入:A=[1 2 3;4 5 7;4 7 9];B=[1 3 7;3 5 7;8 5 1]; 矩阵左除。输入:A\B 显示:ans = ? -0.7500?? -0.5000?? -2.0000 ?? 5.7500?? -3.5000? -18.0000 ? -3.2500??? 3.5000?? 15.0000 矩阵右除。输入:A/B 显示:ans = ? -0.0217??? 0.4565?? -0.0435 ?? 0.6522??? 0.3043??? 0.3043 ? -0.5652??? 1.8696?? -0.1304 独立方程个数大于独立的未知参数的个数的方程,称为超定方程,在matlab里面有三种方法求解,一是用伪逆法求解,x=pinv(A)*b,二是用左除法求解,x=A\b,三是用最小二乘法求解,x=lsqnonneg(A,b)

文档评论(0)

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

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

1亿VIP精品文档

相关文档