Problem
用Matlab软件包求解下列方程的全部实根:
Methods
roots函数
- 使用方法:
r = roots(p)
以列向量的形式返回p
表示的多项式的根。输入p
是一个包含n+1
多项式系数的向量,以 xn 系数开头。0
系数表示方程中不存在的中间幂。例如:p = [3 2 -2]
代表多项式 。
roots
函数对 格式的多项式方程求解。包含带有非负指数的单一变量的多项式方程。
算法原理
roots 函数将 p 视为一个具有 n+1 个元素的向量,代表 n×n 矩阵 A 的 n 次特征多项式。多项式的根通过计算伴随矩阵 A 的特征值得出。
A = diag(ones(n-1,1),-1);
A(1,:) = -p(2:n+1)./p(1);
r = eig(A)
数学原理
已知
构造矩阵
设 (x为该方程的解)
下面我们以3项来说明方便理解:
原式:
联立以上3个方程得:
结论
- 因此,只要解出λ(特征根)的值,就得到 的解。从而,我们把解方程的根转化成了特征根的求解。
- 只算3个容易理解,实际上n个也是同理的。
- 需要注意的是,不能为0
4.特征根的求解:
然后用线性代数的知识解出来即可。(利用余子式的性质)
可以求得n个λ,得到n个解(包括复数)