matlab roots求根及其数学原理


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)

数学原理

已知

  1. 构造矩阵
    ~A_{n*n}= \left[ \begin{matrix} -\frac{a_{n-1}}{a_n} &-\frac{a_{n-2}}{a_n} & \cdots & -\frac{a_{0}}{a_n}\\ 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots& 0 &1 \end{matrix} \right]

  2. 设 (x为该方程的解)

  3. 下面我们以3项来说明方便理解:
    原式:



联立以上3个方程得:

结论
  • 因此,只要解出λ(特征根)的值,就得到 的解。从而,我们把解方程的根转化成了特征根的求解。
  • 只算3个容易理解,实际上n个也是同理的。
  • 需要注意的是,不能为0

4.特征根的求解:
然后用线性代数的知识解出来即可。(利用余子式的性质)
可以求得n个λ,得到n个解(包括复数)

你可能感兴趣的:(matlab roots求根及其数学原理)