matlab逆矩阵运算是不是有问题?

请看下面一段简单代码:
clear all
AA=[ 5 8 18 10 8 13 29 19
18 29 65 39
10 19 39 65]

BB=inv(AA);
CC=inv(BB)

以上代码CC的结果按理说就是AA本身,因为是CC是AA逆矩阵的逆矩阵,就是本身。可结果却得到了:

CC= [10.9274 17.2501 39.1049 18.3497
17.9215 28.4927 64.3357 33.1189
39.7762 62.9930 142.5455 69.8182
28.4196 47.8881 104.7273 93.0909 ]
这是为什么?

原因是你这个矩阵是个不可逆的哦。

你可以rank(AA)看一下,秩是2
或者det(AA)看一下,结果是个0(由于精度问题,是个非常小的数)
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-24
矩阵接近奇异,即det(AA)接近0,解方程组得到的结果可能不正确,产生很大的误差。你可以试试求AA行列式的值,几乎接近零,从矩阵求逆的公式就可以知道,计算过程将会产生很大的误差。来自:求助得到的回答
第1个回答  2013-03-24
是你矩阵有问题,不是matlab出错

matlab逆矩阵运算是不是有问题?
原因是你这个矩阵是个不可逆的哦。你可以rank(AA)看一下,秩是2 或者det(AA)看一下,结果是个0(由于精度问题,是个非常小的数)

matlab矩阵求逆问题
MATLAB中矩阵求逆的答案是使用“inv”函数。详细解释如下:一、MATLAB中的矩阵求逆操作 在MATLAB中,求矩阵的逆是一个常见的操作。对于给定的矩阵A,其逆矩阵可以通过内置函数“inv”来获得。具体来说,如果A是一个方阵,并且是可逆的,那么可以使用以下命令来求其逆矩阵:matlab B...

逆矩阵matlab
MATLAB中求解逆矩阵的常用方法有三种:直接使用inv(a)或a^-1,通过矩阵左除运算x = A\\b,以及使用LU分解法。直接使用inv(a)或a^-1来求解逆矩阵虽然简洁,但往往不推荐,因为这种做法可能会导致较高的计算时间和内存消耗,并且在数值计算中可能导致精度问题。一种更好的方法是使用矩阵左除运算x = A...

matlab 矩阵求逆问题
应该先进行判断矩阵B是否可逆也就是det(B)是否等于零,如果不等于零计算是没有问题的,如果等于零说明矩阵不可逆

matlab矩阵求逆问题
这个是有可能的,但这是由你的矩阵B决定的,矩阵B不病态的话逆矩阵也不会病态的

matlab逆矩阵问题
一般矩阵超过10阶就不能直接求逆了,那样速度慢而且误差巨大。对大型矩阵求逆一般采用矩阵分解的方法(LU,QR,LLT,SVD...).在matlab里建议采用\\运算,这样matlab会自动采用矩阵分解的方法。inv(A)*B可以写为A\\B A*inv(B)可以写为A\/B

为什么用matlab算一个逆矩阵,会出不来呢,数量级也不是太夸张啊,哪位...
在计算之前先看看其行列式的值是多少?如果太小了就会被认为是奇异的,建议你在计算之前先将指数幂提取出来,再计算逆矩阵,然后除去该指数幂

matlab求逆
并非所有矩阵都有逆矩阵,例如奇异矩阵就没有逆矩阵。求逆计算可能会涉及到复杂的数学运算,对于大规模矩阵,计算量会非常大,需要耗费较多的计算机资源。在实际应用中,应验证求得的逆矩阵是否正确,可以通过计算原矩阵与逆矩阵的乘积来验证。总之,MATLAB中的“inv”函数可以方便地求出矩阵的逆,但在使用...

MATLAB矩阵求逆(矩阵元素是复数)
如果你能确保程序没写错,那么你的矩阵很有可能是非常病态的。当然还有可能是matlab的bug。一般来讲matlab本身是不会有问题的,不过我听说有一个版本的matlab(好像是2009b)解方程组的时候有bug。看起来是没什么毛病,矩阵也是良态的。F = 0.1790 - 1.6485i 0.2474 + 0.5375i 0.0906 + 0...

matlab逆矩阵问题
matlab中transpose这个函数是对矩阵求转置的函数,即b=transpose(a)就实现了对矩阵a求转置的运算。但在所有矩阵左边可以加.'同样实现矩阵转置,即b=a.'。注意中间还有一个.呢,如果不加.则表示对矩阵共轭转置,也就是a中行列颠倒后对每个元素求共轭。如果你的矩阵为实矩阵,由于实数的共轭是它本身 ...

相似回答