ccwdys 发表于 2006-12-15 09:54

行列式求值,急

用matlab的det()求一个矩阵的行列式的值,如果这个矩阵是病态矩阵什么的,对求解的结果有没有影响。有没有什么因素可影响求行列式的值?谢谢
    我的目的是计算一系列行列式中等于零的行列式,但不知计算的结果可信不。矩阵是一个8×8的矩阵。

xjzuo 发表于 2006-12-15 10:01

回复

把矩阵贴出来看看. "计算一系列行列式中等于零的行列式" 不知何意?

以解方程组为例,
一般当矩阵接近(病态)奇异时,MATLAB会给出警告;
如果A是奇异的,则计算结果为inf.

[ 本帖最后由 xjzuo 于 2006-12-15 10:12 编辑 ]

ccwdys 发表于 2006-12-15 11:08

回复 #1 ccwdys 的帖子

其实呢我解的是一个线性方程组,因为其有非平庸解的条件是其系数行列式=0,因为系数中有一个未知量b,我就让b取不同的值,来搜索行列式=0时b的值,也就是我要求的b值了。我的其中一个行列式如下:
L =

1.0e+008 *

   0.0001   0.0000-0.0000-0.0001   0.0000-0.0000-0.1043   -0.0000
-0.0000-0.0001   0.0001   0.0000   0.0000-0.0000-0.0000    -0.1043
   0.0001-0.0000-0.0000   0.0001   0.0000   0.0000 - 1.0293i-0.0000
-0.0000   0.0001   0.0001-0.0000   0.0000   0.0000-0.0000+ 1.0293i
-0.0000-0.0000   0.0000   0.0000   0.0000-0.0000   0.4524    0.0000
   0.0000   0.0000-0.0000-0.0000   0.0000-0.0000   0.0000    0.4524
-0.0000   0.0000-0.0000   0.0000   0.0000-0.0000-1.5433   -0.0000
-0.0000   0.0000-0.0000   0.0000   0.0000-0.0000-0.0000   -1.5452
其中那些0.0000都不是零,但非常小只是因为显示的原因没有显示出来,我看了一下,最小的只有2左右。如果对这个行列式求值,会不会出现大的误差?

xjzuo 发表于 2006-12-15 19:20

回复

数值小并不一定意味着病态.由于你给的矩阵不完全,
所以你自己先cond看看;计算时如果矩阵奇异应当也会警告.
病态时由于不稳定,很可能产生较大误差.

另附:看了你在 SimWe的帖子,以及bainhome 的回复,总算明白了你的意思.
除了上面提到的可能情况,一般可以用以下方法解决:(不用搜索)
%%%写入你的系数矩阵A;
sym(A)
b1=solve(det(A));
b=eval(b1)    %%%即为所求

[ 本帖最后由 xjzuo 于 2006-12-15 20:30 编辑 ]

ccwdys 发表于 2006-12-16 15:50

回复 #3 ccwdys 的帖子

谢谢zuo主任,呵呵
页: [1]
查看完整版本: 行列式求值,急