查看: 23083|回复: 5|关注: 0

[已答复] 讨论:Matlab中判断一矩阵奇异的方法

[复制链接]

新手

6 麦片

财富积分


050


6

主题

14

帖子

0

最佳答案
发表于 2010-4-25 09:18:36 | 显示全部楼层 |阅读模式
从数学上讲,对于方阵X,判断是否为奇异矩阵,可以通过看其行列式det(X)值是否为零来判断。
实际数值计算的操作中,由于误差的存在,det(X)一般不为零。这时我们往往通过det(X)<tol来判断,这样就遇到一问题就是对于容许的误差tol怎么来定。

matlab中,det命令的help中,也提到这个问题,引用如下:
“Using det(X) == 0 as a test for matrix singularity is appropriate only for matrices of modest order with small integer entries. Testing singularity using abs(det(X)) <= tolerance is not recommended as it is difficult to choose the correct tolerance. The function cond(X) can check for singular and nearly singular matrices.”

help中提到用cond(X)来判断,按我的理解,是通过条件数来判断矩阵是否病态,进而判断矩阵是否接近奇异。问题是:条件数多大才可认为是病态,条件数的取值和"det(X)<tol"中tol的取值一样也不好定。困惑中……

另外不知道Matlab中判断一矩阵奇异有什么别的方法,欢迎讨论

退役版主

582 麦片

财富积分


小博


137

主题

3691

帖子

124

最佳答案
  • 关注者: 98
发表于 2010-4-25 10:55:24 | 显示全部楼层
大的条件数感觉比很小的行列式值要好取,病态矩阵的条件是应该是非常大的,对于判断奇异,个人知识,是从这两个方面,呵呵

新手

6 麦片

财富积分


050


6

主题

14

帖子

0

最佳答案
 楼主| 发表于 2010-4-25 15:48:28 | 显示全部楼层

回复 2# lskyp 的帖子

首先谢楼上的回复。:)
"大的条件数感觉比很小的行列式值要好取"。有这样的感觉我想是因为,一般条件数的变化比行列式值的变化对矩阵是否奇异更加敏感吧。


我在想我提的这个问题是不是有点问题。不管是det的容许误差多少,还是条件数多大,才判断为奇异矩阵,应该根据实际处理的问题,和矩阵的具体形式定吧。单纯针对一个矩阵好像真的不好说。

这样对这个问题换个说法:
矩阵X是含有未知参数alpha的方阵,求使矩阵奇异(即行列式为零)的alpha值。
对于这么一个问题,如果通过作图来找值的话,alpha-det(X)图(与横轴交点),可能远没有alpha-cond(X)图(峰值点)来的明显。在这方面利用条件数是方便的。

我想matlab里面det的help命令里提到的,用cond来判断矩阵是否奇异,也应该是根据具体问题吧。否则单纯针对一个矩阵,条件数究竟大到什么程度才判定为奇异,可能真的不好说,否则的话,我想mathworks公司早就直接加一个判断矩阵是否奇异的命令。呵呵:lol

新手

5 麦片

财富积分


050


0

主题

9

帖子

0

最佳答案
发表于 2014-6-27 19:21:00 | 显示全部楼层
我也是卡在求解矩阵的时候遇到奇异的问题,用svd求解太过耗时。还想着判断行列式值直接忽略不计算本次矩阵。。楼主有什么好想法吗

新手

28 麦片

财富积分


050


0

主题

0

帖子

0

最佳答案
发表于 2019-3-25 14:44:55 | 显示全部楼层
那可不可以通过矩阵的秩判断,我说的是对于方阵,如果非满秩矩阵那么一定是奇异矩阵。这个有什么问题吗?

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-10-10 16:02:14 | 显示全部楼层
zhoulixing547 发表于 2019-3-25 14:44
那可不可以通过矩阵的秩判断,我说的是对于方阵,如果非满秩矩阵那么一定是奇异矩阵。这个有什么问题吗? ...

你好,请问你用秩判断这个思路发现问题了吗,可以用吗

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-10-10 17:24:16 | 显示全部楼层
用det(X) =0作为矩阵奇异性的检验只适用于具有小整数项的适度阶矩阵。不推荐使用abs(det(X)) <=公差来测试奇异性,因为很难选择正确的公差。函数cond(X)可以检查奇异矩阵和近似奇异矩阵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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