eig
特征值和特征向量
语法
描述
[___= eig(
,在那里一个
,balanceOption
)balanceOption
是“nobalance”
,表示禁用算法中的初步均衡步骤。默认的balanceOption
是“平衡”
,从而实现平衡。的eig
函数可以返回以前语法中的任何输出参数。
[___= eig(___,
以指定的形式返回特征值outputForm
)outputForm
使用以前语法中的任何输入或输出参数。指定outputForm
作为“向量”
返回列向量或中的特征值“矩阵”
返回对角线矩阵中的特征值。
例子
矩阵的特征值
使用画廊
创建一个对称正定矩阵。
画廊(“黄土”4)
一个=4×41.0000 0.5000 0.3333 0.2500 0.5000 1.0000 0.6667 0.5000 0.3333 0.6667 1.0000 0.7500 0.2500 0.5000 0.7500 1.0000
计算的特征值一个
.结果是一个列向量。
e = eig(A)
e =4×10.2078 0.4078 0.8482 2.5362
另外,使用outputForm
返回对角线矩阵中的特征值。
D = eig(A,“矩阵”)
D =4×40.2078 0 0 0 0 0.4078 0 0 0 0 0.8482 0 0 0 0 2.5362
矩阵的特征值和特征向量
使用画廊
创建一个循环矩阵。
画廊(“线性”3)
一个=3×31 2 3 3 1 2 2 3 1
计算的特征值和右特征向量一个
.
[V,D] = eig(A)
V =3×3复杂-0.5774 + 0.0000i 0.5774 + 0.0000i 0.5774 + 0.0000i -0.2887 - 0.5000i -0.2887 + 0.5000i -0.5774 + 0.0000i -0.2887 + 0.5000i -0.2887 - 0.5000i
D =3×3复杂6.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 -1.5000 + 0.8660i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 -1.5000 - 0.8660i
验证结果是否满足要求A* v = v * d
.
A* v - v * d
ans =3×3复杂10-14年× -0.2665 + 0.0000i -0.0888 - 0.0111i -0.0888 + 0.0111i 0.0888 + 0.0000i 0.0000 + 0.0833i 0.0000 - 0.0833i -0.0444 + 0.0000i -0.1157 + 0.0666i -0.1157 - 0.0666i
理想情况下,特征值分解满足关系。自eig
然后使用浮点计算执行分解* V
最多能接近吗V * D
.换句话说,A* v - v * d
很接近,但不完全是,0
.
已排序的特征值和特征向量
默认情况下eig
并不总是按顺序返回特征值和特征向量。使用排序
函数将特征值按升序排列并重新排列相应的特征向量。
计算5 × 5魔方阵的特征值和特征向量。
A =魔术(5)
一个=5×517 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
[V,D] = eig(A)
V =5×5-0.4472 0.0976 -0.6330 0.6780 -0.2619 -0.4472 0.3525 0.5895 0.3223 -0.1732 -0.4472 0.5501 -0.3915 -0.5501 0.3915 -0.4472 -0.3223 0.1732 -0.3525 -0.5895 -0.4472 -0.6780 0.2619 -0.0976 0.6330
D =5×565.0000 0000 -21.2768 0000 0 -13.1263 0000 0 21.2768 0000 0 13.1263
的特征值一个
在对角线上D
.然而,特征值是未排序的。
的对角线上提取特征值D
使用诊断接头(D)
,然后对得到的向量进行升序排序。的第二个输出排序
返回索引的排列向量。
[d,ind] = sort(diag(d))
d =5×1-21.2768 -13.1263 13.1263 21.2768 65.0000
印第安纳州=5×12 3 5 4 1
使用印第安纳州
的对角线元素重新排序D
.因为特征值在D
对应于的列中的特征向量V
的列也必须重新排序V
使用相同的索引。
Ds = D(ind,ind)
Ds =5×5-21.2768 0000 0 -13.1263 0000 13.1263 0000 21.2768 0000 0 65.0000
V = V(:,ind)
和=5×50.0976 -0.6330 -0.2619 0.6780 -0.4472 -0.3525 0.5895 -0.1732 0.3223 -0.4472 0.5501 -0.3915 0.3915 -0.5501 -0.4472 -0.3223 0.1732 -0.5895 -0.3525 -0.4472 -0.6780 0.2619 0.6330 -0.0976 -0.4472
这两个(V, D)
而且(Vs Ds)
的特征值分解一个
.的结果* V-V * D
而且* Vs-Vs * Ds
同意,直到舍入误差。
e1 =范数(A*V-V*D);e2 =范数(A*Vs-Vs*Ds);E = abs(e1 - e2)
E = 0
左特征向量
创建一个3 × 3矩阵。
A = [1 7 3;2 9 12;5 22 7];
计算右特征向量,V
,特征值,D
,左特征向量,W
.
[V,D,W] = eig(A)
V =3×3-0.2610 -0.9734 0.1891 -0.5870 0.2281 -0.5816 -0.7663 -0.0198 0.7912
D =3×325.5548 0 0 0 -0.5789 0 0 0 -7.9759
W =3×3-0.1791 -0.9587 -0.1881 -0.8127 0.0649 -0.7477 -0.5545 0.2768 0.6368
验证结果是否满足要求W'* a = d *W'
.
W'* a - d *W'
ans =3×310-13年× -0.0266 -0.2132 -0.1243 0.0056 -0.0286 -0.0072 -0.0022 0 -0.0178
理想情况下,特征值分解满足关系。自eig
然后使用浮点计算执行分解W”*
最多能接近吗D * W '
.换句话说,W'* a - d *W'
很接近,但不完全是,0
.
不可对角化(缺陷)矩阵的特征值
创建一个3 × 3矩阵。
A = [3 10 0;0 3 1;0 0 3];
计算的特征值和右特征向量一个
.
[V,D] = eig(A)
V =3×31.0000 -1.0000 1.0000 0 0.0000 -0.0000 00 0.0000
D =3×33 0 0 0 3 0 0 0 3
一个
有重复的特征值特征向量是不独立的。这意味着一个
不能对角,因此是有缺陷的。
验证V
而且D
满足方程,A* v = v * d
,即使一个
是有缺陷的。
A* v - v * d
ans =3×310-15年× 0 0.8882 -0.8882 00 0.0000 0000
理想情况下,特征值分解满足关系。自eig
然后使用浮点计算执行分解* V
最多能接近吗V * D
.换句话说,A* v - v * d
很接近,但不完全是,0
.
广义特征值
创建两个矩阵,一个
而且B
,然后对特征值和右特征向量求解广义特征值问题(A, B)
.
A =[1/√(2)0;0 1];B = [0 1;1 /√(2)0];[V D] = eig (A, B)
V =2×2复杂1.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 - 0.7071i 0.0000 + 0.7071i
D =2×2复杂0.0000 + 1.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 - 1.0000i
验证结果是否满足要求A* v = b * v * d
.
A* v - b * v * d
ans =2×20 0 0 0
剩余误差A* v - b * v * d
等于0。
差条件矩阵的广义特征值QZ算法
创建一个条件差的对称矩阵,其中包含接近机器精度的值。
格式长eA = diag([10^-16, 10^-15])
一个=2×21.000000000000000e-16 00 1.00000000000e -15
使用默认算法计算广义特征值和一组右特征向量。在本例中,默认算法为“胆固醇”
.
[V1,D1] = eig(A,A)
V1 =2×21.000000000000000e+08 00 3.162277660168380e+07
D1 =2×29.999999999999999e-01 00 1.000000000000000e+00
现在,计算广义特征值和一组右特征向量使用“求”
算法。
[V2,D2] = eig(A,A,“求”)
V2 =2×21 0 0 1
D2 =2×21 0 0 1
检查一下“胆固醇”
结果满足A* v1 = A* v1 * d1
.
格式短A* v1 - A* v1 * d1
ans =2×210-23年× 0.1654 0 0 -0.6617
现在,检查一下“求”
结果满足A* v2 = A* v2 * d2
.
A* v2 - A* v2 * d2
ans =2×20 0 0 0
当两个矩阵都是对称的,eig
使用“胆固醇”
默认算法。在这种情况下,QZ算法返回更准确的结果。
一个矩阵是奇异的广义特征值
创建一个2 × 2单位矩阵,一个
,和奇异矩阵,B
.
A =眼睛(2);B = [3 6;4 8];
如果你试图计算矩阵的广义特征值
用命令[V,D] = eig(B\A)
,则MATLAB®返回错误,因为B \
生产正
值。
相反,计算广义特征值和右特征向量通过传递两个矩阵到eig
函数。
[V,D] = eig(A,B)
V =2×2-0.7500 -1.0000 -1.0000 0.5000
D =2×20.0909 0 0 Inf
最好分别传递两个矩阵,然后让eig
选择解决问题的最佳算法。在这种情况下,eig (A, B)
返回一组特征向量和至少一个实数特征值B
不是可逆的。
验证 对于第一个特征值和第一个特征向量。
eigval = D(1,1);igvec = V(:,1);A*特征向量-特征向量*B*特征向量
ans =2×110-15年× 0.1110 0.2220
理想情况下,特征值分解满足关系。由于分解是使用浮点计算执行的,那么A * eigvec
最多能接近吗eigval * B * eigvec
,就像在这种情况下一样。
输入参数
一个
- - - - - -输入矩阵
方阵
输入矩阵,指定为实方阵或复方阵。
数据类型:双
|单
复数支持:金宝app是的
B
- - - - - -广义特征值问题输入矩阵
方阵
广义特征值问题的输入矩阵,指定为实值或复值的方阵。B
一定要和一个
.
数据类型:双
|单
复数支持:金宝app是的
balanceOption
- - - - - -平衡的选择
“平衡”
(默认)|“nobalance”
平衡选项,指定为:“平衡”
,使一个初步平衡步骤,或“nobalance”
这就使它失效了。在大多数情况下,平衡步骤改善了调节一个
为了产生更准确的结果。然而,在某些情况下,平衡会产生不正确的结果。指定“nobalance”
当一个
包含规模差异很大的值。例如,如果一个
包含非零整数,以及非常小(接近零)的值,那么平衡步骤可能会缩放小值,使它们与整数一样重要,从而产生不准确的结果。
“平衡”
是默认行为。有关平衡的更多信息,请参见平衡
.
算法
- - - - - -广义特征值算法
“胆固醇”
|“求”
广义特征值算法,指定为“胆固醇”
或“求”
,选择用于计算一对广义特征值的算法。
算法 | 描述 |
---|---|
“胆固醇” |
的广义特征值一个 而且B 的Cholesky因式分解B . |
“求” |
采用QZ算法,也称为广义舒尔分解。该算法忽略了的对称性一个 而且B . |
通常,这两种算法返回相同的结果。QZ算法对于某些问题更稳定,比如那些涉及糟糕条件矩阵的问题。
当你省略算法
参数,eig
函数根据的属性选择算法一个
而且B
.它使用“胆固醇”
对称(厄米)算法一个
对称(厄米式)正定B
.否则,它使用“求”
算法。
无论您指定的算法是什么eig
函数总是使用QZ算法时一个
或B
不是对称的。
outputForm
- - - - - -特征值的输出格式
“向量”
|“矩阵”
特征值输出格式,指定为“向量”
或“矩阵”
.此选项允许您指定特征值是在列向量中返回还是在对角矩阵中返回。默认行为根据指定的输出数量而变化:
如果指定一个输出,例如
e = eig(A)
,则特征值默认作为列向量返回。如果指定两个或三个输出,例如
[V,D] = eig(A)
,则特征值以对角矩阵的形式返回,D
,默认为。
例子:D = eig(A,'matrix')
返回具有one输出语法的特征值对角线矩阵。
输出参数
V
-右特征向量
方阵
右特征向量,作为一个方阵返回它的列是的右特征向量一个
或者这对的广义右特征向量,(A, B)
.的形式和规范V
取决于输入参数的组合:
[V,D] = eig(A)
收益矩阵V
,它的列是的右特征向量一个
这样A* v = v * d
.中的特征向量V
都是标准化的,所以每个的2模都是1。[V,D] = eig(A,'nobalance')
同时返回矩阵V
.但是,每个特征向量的2范数不一定是1。[V,D] = eig(A,B)
而且[V,D] = eig(A,B,算法)
返回V
作为一个矩阵,它的列是广义右特征向量满足A* v = b * v * d
.每个特征向量的2范数不一定是1。在这种情况下,D
包含对的广义特征值,(A, B)
,沿主对角线。当
eig
使用“胆固醇”
对称(厄米)算法一个
对称(厄米式)正定B
,它规范化了特征向量V
所以B
-norm of each = 1。
不同的机器和MATLAB版本®可以产生不同的特征向量,在数值上仍然是准确的:
对于实特征向量,特征向量的符号可以改变。
对于复特征向量,特征向量可以乘以任何大小为1的复数。
对于多个特征值,其特征向量可以通过线性组合进行重组。例如,如果一个x=λx而且一个y=λy,然后一个(x+y) =λ(x+y),所以x+y也是的特征向量一个.
W
-左特征向量
方阵
左特征向量,作为方阵返回它的列是的左特征向量一个
或者广义左特征向量对,(A, B)
.的形式和规范W
取决于输入参数的组合:
不同的机器和MATLAB版本可以产生不同的特征向量,它们在数值上仍然是准确的:
对于实特征向量,特征向量的符号可以改变。
对于复特征向量,特征向量可以乘以任何大小为1的复数。
对于多个特征值,其特征向量可以通过线性组合进行重组。例如,如果一个x=λx而且一个y=λy,然后一个(x+y) =λ(x+y),所以x+y也是的特征向量一个.
更多关于
对称矩阵
一个方阵,
一个
,是对称的,如果它等于它的非共轭转置,A = A。
.对于矩阵元素,这意味着
由于实矩阵不受复共轭的影响,一个对称的实矩阵也是厄米矩阵。例如,矩阵
既是对称的又是厄米的。
斜对称的矩阵
一个方阵,
一个
,是斜对称的,如果它等于它的非共轭转置的负,A = -a。”
.对于矩阵元素,这意味着
由于实矩阵不受复共轭的影响,一个倾斜对称的实矩阵也是倾斜厄米矩阵。例如,矩阵
既是斜对称的又是斜厄米的。
埃尔米特矩阵
一个方阵,
一个
是厄米共轭的,如果它等于它的共轭转置,A = A'
.对于矩阵元素,这意味着
厄米矩阵对角线上的元素总是实数。由于实矩阵不受复共轭的影响,一个对称的实矩阵也是厄米矩阵。例如,矩阵
既是对称的又是厄米的。
厄米矩阵的特征值是实数。
斜厄密矩阵
一个方阵,
一个
如果它等于它的复共轭转置的负数,A = -a '
.对于矩阵元素,这意味着
斜厄米矩阵对角线上的元素总是纯虚数或零。由于实矩阵不受复共轭的影响,一个倾斜对称的实矩阵也是倾斜厄米矩阵。例如,矩阵
既是斜厄米的又是斜对称的。
斜厄米矩阵的特征值是纯虚数或零。
提示
的
eig
函数可以计算实对称稀疏矩阵的特征值。要计算稀疏矩阵的特征向量,或计算非实对称稀疏矩阵的特征值,请使用eigs
函数。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
V
可能表示不同的特征向量基。这种表示意味着由生成的代码计算的特征向量在C和c++代码中可能与在MATLAB中不同。中的特征值D
可能和MATLAB中的顺序不一样。您可以验证V
而且D
用特征值问题方程求值A* v = v * d
.对于标准特征值问题,
[V,D] = eig(A)
,当一个
是厄米式还是斜厄米式,代码生成使用舒尔
计算V
而且D
.否则,结果[V,D] = eig(A)
是否与使用[V,D] = eig(A, size(A)),'qz')
的列,除了V
是标准化的。
如果指定LAPACK库回调类,则代码生成器支持以下选项:金宝app
的
“平衡”
而且“nobalance”
标准特征值问题的选项。左特征向量的计算。
输出是复杂的。
代码生成不支持此函数的稀疏矩阵输入。金宝app
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
只支持以下单输入参数语法:金宝app
e = eig(A)
[V,D] = eig(A)
如果输入矩阵
一个
包含南
或正
,则函数返回一个错误。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
使用注意事项和限制:
对于一个非对称的全矩阵
一个
,你必须使用eig (A,“nobalance”)
语法。对于广义情况,
eig (A, B)
,一个
而且B
必须是实对称或复厄米对称的。此外,B
肯定是肯定的。完整的分布式数组不支持以下语法:金宝app
[__] = eig(A,'balance')
对非对称一个
.[__] = eig(A,B,'qz')
[V,D,W] = eig(A,B)
有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱).
版本历史
R2006a之前介绍R2021b:eig
返回南
对于非有限输入
R2021b的行为发生了变化
eig
返回南
当输入包含非有限值(正
或南
).在此之前,eig
当输入包含非有限值时抛出错误。
R2021a:斜厄米矩阵的改进算法
对输入矩阵偏厄米矩阵的算法进行了改进。使用函数调用[V,D] = eig(A)
,在那里一个
斜厄密,eig
现在保证了特征向量的矩阵V
特征值的对角矩阵是酉矩阵吗D
纯粹是虚构的。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。