用inv进行矩阵求逆时,出现矩阵奇异的情况。
只需将inv替换为pinv求伪逆即可。
1.对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)
2.对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆、
很多时候你不需要求逆矩阵,例如:
inv(A)*B 实际上可以写成 A\B
B*inv(A) 实际上可以写成 B/A
这样比求逆之后带入精度要高
inv:Y=inv(X)返回方阵X的逆矩阵,如果X病态或者高度奇异,则会显示警告信息。实际上,很少需要真的把矩阵的逆求出来,常见的使用失误主要出现在求解线性方程组AX=b。一种求解方法为x=inv(A)*b,但如要达到更快,更稳定,就得用X=A\b。这个算法使用高斯消去法,因此不产生逆矩阵。
“\”:反斜线符号,矩阵左除。如果A是方阵,A\B近似等于inv(A)*B,只是他们的算法不一样。如果A是n*n的方阵,B是n*1的列向量,或n*?的矩阵,那么X=A\B是AX=B的解。如果A很病态或者很奇异,很会显示警告信息。A\EYE(SIZE(A))计算A的逆,参见mldivide可得到更多信息。如果A是m*n的矩阵,m!=n,B是m*1或m*?的列向量,那么X=A\B就是线性方程组AX=B(超定或者欠定)的最小二乘解。A的有效秩(effective rank)k有选主元的QR分解决定。Asolution X is computed that has at most k nonzero componentspercolumn。如果K<N,结果通常和pinv(A)*B不一样,后者是最小范数解。A\EYE(SIZE(A))用来求解A的广义逆。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162948.html