计算符号矩阵的特征方程的根

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,解确实相同,但行列式可能更符合您的预期。