查看: 12458|回复: 8|关注: 0

[已答复] 请问用inv(A)求矩阵的逆,但返回值全是inf,该怎么解决?

[复制链接]

新手

10 麦片

财富积分


050


4

主题

12

帖子

0

最佳答案
  • 关注者: 1
发表于 2012-8-15 14:19:26 | 显示全部楼层 |阅读模式
例如矩阵A=
    0.3989    0.0535    0.0303
    0.0535    0.0072    0.0041
    0.0303    0.0041    0.0023

inv(A)
Warning: Matrix is singular to working precision.
ans =
   Inf   Inf   Inf
   Inf   Inf   Inf
   Inf   Inf   Inf

似乎是已经超出了Matlab工作精度

请问这种情况有办法解决么?

比如说能否提高Matlab的工作精度?

谢谢

论坛优秀回答者

退役版主

415 麦片

财富积分



8

主题

2595

帖子

48

最佳答案
QQ
  • 关注者: 440
发表于 2012-8-15 14:38:23 | 显示全部楼层
你的矩阵的特征值为-5.3800e-010,很接近0,矩阵为奇异矩阵。你试试伪逆pinv。

新手

12 麦片

财富积分


050


10

主题

33

帖子

0

最佳答案
发表于 2012-8-15 14:50:27 | 显示全部楼层
C:\Users\lenovo\Desktop\矩阵求逆

新手

12 麦片

财富积分


050


10

主题

33

帖子

0

最佳答案
发表于 2012-8-15 14:52:18 | 显示全部楼层
我把你的矩阵输入了,但是能求出结果啊,你看截的图
矩阵求逆.png

新手

6 麦片

财富积分


050


6

主题

40

帖子

0

最佳答案
发表于 2012-8-15 16:05:58 | 显示全部楼层
遇到了奇异点,使用伪逆求解

新手

10 麦片

财富积分


050


4

主题

12

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2012-8-15 17:50:25 | 显示全部楼层
谢LS诸位解答
鄙人刚才又调试了多遍

发现感觉问题好像不是那么简单
鄙人的版本是Matlab2010b

现在是这样的
如果前面的矩阵A
0.3989 0.0535 0.0303
0.0535 0.0072 0.0041
0.0303 0.0041 0.0023
这个是上一个公式算出来的矩阵
A=某个公式
那么第二句跟着inv(A)就会出现主楼所说情况,出来全是inf

但是,如果把算出来的ans计算结果手动复制下来做成新矩阵(假设是B)
那么inv(B)会出
ans =

  1.0e+004 *

    0.0465   -0.2193   -0.2212
   -0.2193    0.1152    2.6840
   -0.2212    2.6840   -1.8271


鄙人目前的实际情况是这样的
原始的矩阵A是一个3*3*2543*4的4维矩阵
目的是只想把这个思维矩阵所有的3*3部分求逆
因此编程:
AN=zeros(3,3,2543,4);
for iz=1:1:2543
    for tz=1:1:4
        AN(:,:,iz,tz)=inv(A(:,:,iz,tz));
    end
end

这个循环程序能够把绝大多数(:,:,iz,tz)的情况正常求出来
但是有个别的(:,:,i,t)就出现了主楼的情况
出来全是inf或者-inf

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2015-3-5 21:02:47 | 显示全部楼层
!!!!!!

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
发表于 2019-2-11 08:55:29 | 显示全部楼层
同样情况,请问解决出来了吗

论坛优秀回答者

专家

2974 麦片

财富积分


20003000


1

主题

3286

帖子

667

最佳答案
  • 关注者: 136
发表于 2019-2-11 09:52:51 | 显示全部楼层
joyeyang 发表于 2019-2-11 08:55
同样情况,请问解决出来了吗

用符号算法。
A=[sym('0.3989') sym('0.0535') sym('0.0303');sym('0.0535') sym('0.0072') sym('0.0041');sym('0.0303') sym('0.0041') sym('0.0023')];
inv(A)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表