行列式求值,急
用matlab的det()求一个矩阵的行列式的值,如果这个矩阵是病态矩阵什么的,对求解的结果有没有影响。有没有什么因素可影响求行列式的值?谢谢我的目的是计算一系列行列式中等于零的行列式,但不知计算的结果可信不。矩阵是一个8×8的矩阵。
回复
把矩阵贴出来看看. "计算一系列行列式中等于零的行列式" 不知何意?以解方程组为例,
一般当矩阵接近(病态)奇异时,MATLAB会给出警告;
如果A是奇异的,则计算结果为inf.
[ 本帖最后由 xjzuo 于 2006-12-15 10:12 编辑 ]
回复 #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左右。如果对这个行列式求值,会不会出现大的误差?
回复
数值小并不一定意味着病态.由于你给的矩阵不完全,所以你自己先cond看看;计算时如果矩阵奇异应当也会警告.
病态时由于不稳定,很可能产生较大误差.
另附:看了你在 SimWe的帖子,以及bainhome 的回复,总算明白了你的意思.
除了上面提到的可能情况,一般可以用以下方法解决:(不用搜索)
%%%写入你的系数矩阵A;
sym(A)
b1=solve(det(A));
b=eval(b1) %%%即为所求
[ 本帖最后由 xjzuo 于 2006-12-15 20:30 编辑 ]
回复 #3 ccwdys 的帖子
谢谢zuo主任,呵呵
页:
[1]