# 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 的准确度。但是在一般情况下,这种改进的准确度难以实现。