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