计算符号矩阵的特征方程的根
Calculate roots of characteristic equation of symbolic matrix
我有 3 个数据矩阵 A、B、C(均为 3x3),我使用以下代码计算 D(p)X = 0 的根
syms p
D = A + B*p + C*(p^2)
solP = double(solve(det(D)))
据此,我得到了 6 个 solP 值。但是当我尝试将它代回符号矩阵 D 时,如下所示,我有时会得到 det(D) 的非零值
for i = 1:6
p = solP(i)
det(double(subs(D)) % Should be zero always as we are substituting roots
end
请帮助我理解这种行为。
编辑::
示例:
A =
1.0e+11 *
4.8976 7.0936 6.7970
4.4559 7.5469 6.5510
6.4631 2.7603 1.6261
B =
1.0e+11 *
3.9223 7.0605 0.4617
6.5548 0.3183 0.9713
1.7119 2.7692 8.2346
C =
1.0e+11 *
6.9483 0.3445 7.6552
3.1710 4.3874 7.9520
9.5022 3.8156 1.8687
solP =
0.1061 + 0.0000i
1.5311 + 0.0000i
-0.3432 + 0.9356i
-0.3432 - 0.9356i
0.4228 - 0.5465i
0.4228 + 0.5465i
det(D) =
2.2143e+19
-5.4911e+20
-8.6415e+19 + 4.5024e+19i
-8.6415e+19 - 4.5024e+19i
-1.4547e+19 + 9.1135e+19i
-1.4547e+19 - 9.1135e+19i
问题与 relative accuracy of floating point values 有关,通常是 1e-16
。
输入矩阵的阶数为1e+11
- 1e+12
,解的阶数为1e+0
,所以D
的元素也是阶数1e+11
- 1e+12
。要计算 determinant of a 3x3 matrix,应该取三个矩阵元素与 add/subtract 的乘积。因此,每一项的顺序为 1e+33
- 1e+36
。如果减去这样的值来获得行列式,则预期精度的顺序为 1e+17
- 1e+20
。实际上,这与您获得的值相对应。鉴于相对精度,您无法进一步达到零。
请注意,如果您缩放输入矩阵,即除以 1e+11
,解确实相同,但行列式可能更符合您的预期。
我有 3 个数据矩阵 A、B、C(均为 3x3),我使用以下代码计算 D(p)X = 0 的根
syms p
D = A + B*p + C*(p^2)
solP = double(solve(det(D)))
据此,我得到了 6 个 solP 值。但是当我尝试将它代回符号矩阵 D 时,如下所示,我有时会得到 det(D) 的非零值
for i = 1:6
p = solP(i)
det(double(subs(D)) % Should be zero always as we are substituting roots
end
请帮助我理解这种行为。
编辑:: 示例:
A =
1.0e+11 *
4.8976 7.0936 6.7970
4.4559 7.5469 6.5510
6.4631 2.7603 1.6261
B =
1.0e+11 *
3.9223 7.0605 0.4617
6.5548 0.3183 0.9713
1.7119 2.7692 8.2346
C =
1.0e+11 *
6.9483 0.3445 7.6552
3.1710 4.3874 7.9520
9.5022 3.8156 1.8687
solP =
0.1061 + 0.0000i
1.5311 + 0.0000i
-0.3432 + 0.9356i
-0.3432 - 0.9356i
0.4228 - 0.5465i
0.4228 + 0.5465i
det(D) =
2.2143e+19
-5.4911e+20
-8.6415e+19 + 4.5024e+19i
-8.6415e+19 - 4.5024e+19i
-1.4547e+19 + 9.1135e+19i
-1.4547e+19 - 9.1135e+19i
问题与 relative accuracy of floating point values 有关,通常是 1e-16
。
输入矩阵的阶数为1e+11
- 1e+12
,解的阶数为1e+0
,所以D
的元素也是阶数1e+11
- 1e+12
。要计算 determinant of a 3x3 matrix,应该取三个矩阵元素与 add/subtract 的乘积。因此,每一项的顺序为 1e+33
- 1e+36
。如果减去这样的值来获得行列式,则预期精度的顺序为 1e+17
- 1e+20
。实际上,这与您获得的值相对应。鉴于相对精度,您无法进一步达到零。
请注意,如果您缩放输入矩阵,即除以 1e+11
,解确实相同,但行列式可能更符合您的预期。