特征多项式的根与矩阵特征值为何不一致?附矩阵B计算案例
特征多项式根与特征值的本质一致性
咱先把这个事儿掰扯明白:特征多项式的根和矩阵的特征值其实是完全相同的,只是两者的呈现形式不一样——一个是数值近似解,一个是符号解析解。
一步步拆解你的例子
1. 矩阵B的定义
先看你给出的目标矩阵:
B = [1 2 0 ; 2 4 6 ; 0 6 5]
2. eig(B)的数值特征值
用eig(B)得到的是浮点数形式的数值近似解,这是计算机通过数值算法直接算出的近似值,方便直接拿来用:
{-2.2240, 1.5109, 10.7131}
3. 特征多项式与符号解
通过syms x; polyB = charpoly(B,x)得到的是精确的符号特征多项式:
x^3 - 10*x^2 - 11*x + 36
而solve(polyB)给出的是这个三次方程的精确解析解——也就是用根式(甚至包含复数形式)表示的严格解,看起来复杂,但只要把这些解析解转换成数值形式,就会和eig(B)的结果完全匹配。
比如你可以跑一段代码验证:
syms x polyB = x^3 - 10*x^2 - 11*x + 36; roots_sym = solve(polyB); double(roots_sym)
运行后得到的结果就是:
-2.2240 1.5109 10.7131
和eig(B)的结果一模一样!
为啥看起来差这么多?
eig是专门针对矩阵特征值的数值计算工具,直接输出近似浮点数,适合工程计算里直接用。solve是符号求解工具,它会尽可能给出方程的精确解析形式,对于三次方程这类非一次多项式,难免会出现带复数、嵌套根式的复杂表达式,但这些表达式的数值结果和特征值完全等价。
内容的提问来源于stack exchange,提问作者M a m a D
相关产品推荐
相关产品推荐

