justjim 发表于 2010-4-1 06:28:49

关于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具体求解过程有点疑问。

还望高手讲解一下。

messenger 发表于 2010-4-1 08:57:18

可能矩阵奇异吧,最后把矩阵贴出来,否则没办法知道倒底是什么问题

justjim 发表于 2010-4-2 02:24:17

矩阵很多个,贴出其中一个:
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

messenger 发表于 2010-4-2 13:23:24

你的A矩阵的第4、6列相同,奇异。b矩阵与A矩阵的数量级相差太多,计算容易造成误差,既使求出伪逆来,也不符合验证公式。你可以试试将b矩阵中先提出一个因子E+17,求出伪逆矩阵后再乘回去。

justjim 发表于 2010-4-5 01:51:57

非常感谢,没贴出来前自己都没看出来那两列一样,我调整了下初值,可以避开一部分导致那两列相同的元素,但是在我的系统中那两列相同在某些情况下毕竟还是会存在的。
所以想再问一下,我抛开那个数量级不管,如果有该两列一样的话,求出来的违逆为什么不符合验证公式呢?违逆处理不是满秩的情况不一样可以吗?

shmilywcy 发表于 2010-4-14 18:22:37

也太有才了也太有才了
页: [1]
查看完整版本: 关于matlab求解Pseudoinverse的问题