关于matlab求解Pseudoinverse的问题
本人用matlab求解非满秩矩阵的Pseudoinverse时,碰到些问题,描述如下:设Ax=b. A 为mXn方阵,b为mX1矩阵,定义A的Pseudoinverse为Aplus, 求解X时按理说解之一为 x = Aplus*b. 但是反过来验算时发现A*Aplus*b = A*x 却又不等于b(数值上验算了)。本人的A为非满秩方阵,矩阵本身的选择应该是符合consistency的,所以本人对于matlab求解Pseudoinverse具体求解过程有点疑问。
还望高手讲解一下。 可能矩阵奇异吧,最后把矩阵贴出来,否则没办法知道倒底是什么问题 矩阵很多个,贴出其中一个:
A矩阵:
0.01 0.0058 0.9999 -0.0173 0.5 -0.0173
0 -0.0115 0.9999 0.0173 1.4999 0.0173
-0.01 0.0058 0.9999 -0.0173 0.9999 -0.0173
0.01 0.0058 0.9999 0.0173 -0.9999 0.0173
0 -0.0115 0.9999 -0.0173 -1.4999 -0.0173
-0.01 0.0058 0.9999 0.0173 -0.5 0.0173
b矩阵
3.86E+16
-6.57E+16
-1.12E+18
2.17E+17
-1.82E+17
1.85E+17 你的A矩阵的第4、6列相同,奇异。b矩阵与A矩阵的数量级相差太多,计算容易造成误差,既使求出伪逆来,也不符合验证公式。你可以试试将b矩阵中先提出一个因子E+17,求出伪逆矩阵后再乘回去。 非常感谢,没贴出来前自己都没看出来那两列一样,我调整了下初值,可以避开一部分导致那两列相同的元素,但是在我的系统中那两列相同在某些情况下毕竟还是会存在的。
所以想再问一下,我抛开那个数量级不管,如果有该两列一样的话,求出来的违逆为什么不符合验证公式呢?违逆处理不是满秩的情况不一样可以吗? 也太有才了也太有才了
页:
[1]