# polyeig


多项式特征值问题

函数库: TyMath

# 语法

X,e = polyeig(A0)
X,e,s = polyeig(A0,A1,..,AP)

# 说明

X,e = polyeig(A0) 返回多项式特征值问题的特征值 e 和大小为 n×n 的矩阵 X,其列是特征向量。当输入矩阵只有一个时,此时只有两个输出参数。示例


X,e,s = polyeig(A0,A1,..,AP) 还返回长度为 p*n 的向量 s,其中包含特征值的条件数。A0 和 Ap 中至少有一个必须是非奇异的。条件数较大表示该问题接近于具有重复特征值的问题。示例

# 示例

质量、阻尼和刚度矩阵的二次特征值问题

解算涉及质量矩阵 M、阻尼矩阵 C 和刚度矩阵 K 的二次特征值问题。运动方程中会发生此二次特征值问题:

此方程适用于各种振荡系统,包括动态质量弹簧系统或 RLC 电子网络。基本解是 y(t)=xe^λt,因此 λ 和 x 都必须解算二次特征值问题 (QEP),

创建系数矩阵 M、C 和 K 来表示具有四个自由度的质量弹簧系统。系数矩阵全部是对称矩阵和半正定矩阵,M 是对角矩阵。

using TyMath
M = diagm([3, 1, 3, 1])
M = 4×4 Matrix{Int64}:
 3  0  0  0
 0  1  0  0
 0  0  3  0
 0  0  0  1
C = [0.4 0 -0.3 0; 0 0 0 0; -0.3 0 0.5 -0.2; 0 0 -0.2 0.2]
C = 4×4 Matrix{Float64}:
  0.4  0.0  -0.3   0.0
  0.0  0.0   0.0   0.0
 -0.3  0.0   0.5  -0.2
  0.0  0.0  -0.2   0.2
K = [-7 2 4  0; 2 -4 2 0; 4 2 -9 3; 0 0 3 -3]
K = 4×4 Matrix{Int64}:
 -7   2   4   0
  2  -4   2   0
  4   2  -9   3
  0   0   3  -3

使用 polyeig 针对特征值、特征向量和条件数解算 QEP。

X,e,s = polyeig(K,C,M)
X = 4×8 Matrix{Float64}:
  0.18275    0.342146   -0.398888  -0.0620964  -0.389042   0.414316  -0.457541  0.45629
  0.352967  -0.929558   -0.333031   0.85712     0.636559   0.271665  -0.498061  0.498467
 -0.536028  -0.0455876   0.172411  -0.350854    0.342343  -0.166603  -0.510586  0.510713
  0.744776   0.12954     0.836812   0.372009   -0.571174  -0.852516  -0.530937  0.53151

e = 8-element Vector{Float64}:
 -2.449849443705629
 -2.1536161980373105
 -1.62477834052925
  2.227908732047909
  2.0363509766437007
  1.4752411434756638
  0.3352944297785456
 -0.34655129967363174

s = 8-element Vector{Float64}:
  0.581251046798245
  0.8609352734037644
  1.2232366854023524
  0.7855208453750588
  0.7012379991924005
  1.2921977506995563
 10.109729978343493
 10.051891671415989

提示

不同电脑可能结果有差异。

检查第一个特征值 e[1] 和第一个特征向量 X[:,1] 满足 QEP 方程。结果接近但不是零。

lambda = e[1]
x = X[:,1]
(M*lambda^2 + C*lambda + K)*x
ans = 4-element Vector{Float64}:
 -2.6645352591003757e-15
  2.1094237467877974e-15
 -8.881784197001252e-16
 -1.9984014443252818e-15

# 输入参数

A0,A1,...,Ap - 系数方阵(作为单独参数)
矩阵

系数方阵,指定为单独参数。各矩阵必须具有相同的阶 n。

数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16

复数支持:

# 输出参数

e - 特征值
向量

特征值,以向量形式返回。

X - 特征向量
矩阵

特征向量,在矩阵的列中返回。第一个特征向量是 X[:,1],第二个是 X[:,2],以此类推。

s - 条件数
向量

条件数,以向量形式返回。s 中的条件数对应于 e 中类似位置的特征值。较大的条件数表示此问题接近于具有重复的特征值。

# 详细信息

多项式特征值问题
矩阵

多项式特征值问题是标准特征值问题 的变体,但涉及多项式而不是线性项。

与标准特征值问题一样,其解涉及到求取满足以下方程的特征值和特征向量,

其中多项式次数 p 为非负整数,并且 A0,A1,...Ap 是 n 阶系数方阵。

最常见的形式是二次多项式特征值问题,即

二次特征值问题与标准(或广义)特征值问题的一个主要区别是,前者可以有最多 2n 个特征值以及最多 2n 个右特征向量和左特征向量。如果特征向量多于 n 个,则特征向量不会形成线性无关的集。

# 提示

polyeig 处理以下简化的情况:

  • p = 0,即 polyeig(A),是标准特征值问题 eigvals(A);

  • p = 1,即 polyeig(A,B),是广义特征值问题 eigvals(A,-B);

  • n = 0,即 polyeig(a0,a1,...,ap),是标准多项式问题 roots([ap ... a1 a0]),其中 a0,a1,...,ap 是标量。

# 算法

在计算广义特征值时,polyeig 函数使用 QZ 分解求中间结果。polyeig 使用中间结果确定特征值是否是完全确定的。

计算出的解可能不存在或不唯一,还可能计算不准确。如果 A0 和 Ap 都是奇异矩阵,则该问题可能是不适定问题。如果 A0 和 Ap 中只有一个是奇异矩阵,则部分特征值可能为 0 或 Inf。

缩放 A0,A1,...,Ap 以使 norm(Ai) 约等于 1 可能会增加 polyeig 的准确度。但是在一般情况下,这种改进的准确度难以实现。

# 另请参阅

eigen | cond | polyval