PDA

查看完整版本 : [MATLAB基础] 求助广义特征值求解


haolpk37
2012-03-15, 22:38
最近做广义特征值的求解,但是直接利用matlab命令eig无法得到比较好的解,也就是得到inf的特征值。请问有谁碰到过类似的问题吗?十分谢谢!
A=[226000000000.000 0 0 0 0 0 0 0
0 44000000000.0000 -5.80000000000000 -275 0 0 0 0
0 -5.80000000000000 5.64000000000000e-09 5.36700000000000e-12 0 0 0 0
0 -275 5.36700000000000e-12 0.000297000000000000 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
];

B=[0 -125000000000.000 -2.20000000000000 290.200000000000 -44000000000.0000 0 0 0
-44000000000.0000 0 0 0 0 -216000000000.000 9.30000000000000 350
-5.80000000000000 0 0 0 0 -9.30000000000000 -6.35000000000000e-09 -2.73750000000000e-09
-275 0 0 0 0 -350 -2.73750000000000e-09 -8.35000000000000e-05
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
];

另外,matlab中eps可以修改吗?
我在用rank计算上面A的特征值,得到A的特征是为6,显然A的特征值实际是8.
我找到rank的代码是:
s = svd(A);
if nargin==1
tol = max(size(A)) * eps(max(s));
end
r = sum(s > tol);
这是因为eps双精度值 2.220446049250313e-016使得A的秩变形,不知道有没有准确的方法来判断病态矩阵特征值,谢谢!