Main Content

poly

具有指定根的多项式或特征多项式

说明

示例

p = poly(r)(其中 r 是向量)返回多项式的系数,其中多项式的根是 r 的元素。

示例

p = poly(A)(其中 An×n 矩阵)返回矩阵 det(λI – A) 的特征多项式的 n+1 个系数。

示例

全部折叠

计算矩阵 A 的特征值。

A = [1 8 -10; -4 2 4; -5 2 8]
A = 3×3

     1     8   -10
    -4     2     4
    -5     2     8

e = eig(A)
e = 3×1 complex

  11.6219 + 0.0000i
  -0.3110 + 2.6704i
  -0.3110 - 2.6704i

由于 e 中的特征值是 A 的特征多项式的根,使用 poly 可确定来自 e 中的值的特征多项式。

p = poly(e)
p = 1×4

    1.0000  -11.0000   -0.0000  -84.0000

使用 poly 来计算矩阵 A 的特征多项式。

A = [1 2 3; 4 5 6; 7 8 0]
A = 3×3

     1     2     3
     4     5     6
     7     8     0

p = poly(A)
p = 1×4

    1.0000   -6.0000  -72.0000  -27.0000

使用 roots 计算 p 的根。特征多项式的根是矩阵 A 的特征值。

r = roots(p)
r = 3×1

   12.1229
   -5.7345
   -0.3884

输入参数

全部折叠

多项式的根,指定为向量。

示例: poly([2 -3])

示例: poly([2 -2 3 -3])

示例: poly(roots(k))

示例: poly(eig(A))

数据类型: single | double
复数支持:

输入矩阵。

示例: poly([0 -1; 1 0])

数据类型: single | double
复数支持:

输出参数

全部折叠

多项式系数,以行向量形式返回。

  • 如果输入为 n×n 方阵 A,则 p 包含 A 的特征多项式的系数。

  • 如果输入是根的向量 r,则 p 包含其根在 r 中的多项式的系数。

在每种情况下,p 中的 n+1 个系数都以如下方式描述多项式

p1xn+p2xn1+...+pnx+pn+1.

提示

  • 对于向量,r = roots(p)p = poly(r) 互为反函数,负责舍入误差、排序和缩放。

算法

用于 polyroots 的算法阐明了现代特征值计算方法中一个有趣的方面。poly(A) 生成 A 的特征多项式,roots(poly(A)) 计算该多项式的根,而这些根是 A 的特征值。但 polyroots 都使用基于相似变换的 eig。传统方法实际上与之相反,它是将特征值定义为特征多项式根。

如果 An×n 矩阵,poly(A) 生成系数 p(1)p(n+1),对于以下方程,p(1) = 1

det(λIA)=p1λn++pnλ+pn+1.

算法是

z = eig(A);
p = zeros(n+1,1); 
p(1) = 1;
for j = 1:n
    p(2:j+1) = p(2:j+1)-z(j)*p(1:j);
end

此递归通过展开乘积来获得,

(λλ1)(λλ2)(λλn).

可以证明 poly(A)A 的舍入误差内生成矩阵特征多项式中的系数。即使 A 的特征值为病态的情况下,这也成立。用于获取特征多项式的传统算法不使用特征值,并且没有此类符合要求的数值属性。

扩展功能

版本历史记录

在 R2006a 之前推出