eig

特征值和特征向量

描述

例子

e= eig (一个)返回一个列向量,包含方阵的特征值一个

例子

(V,D) = eig (一个)返回对角矩阵D特征值和矩阵V谁的列是对应的右特征向量,所以* V = V * D

例子

(V,D,W) = eig (一个)也返回完整的矩阵W它们的列是对应的左特征向量,所以W * = D * W的

特征值问题是确定方程的解一个v=λ.v,在那里一个是一个n-经过-n矩阵,v列向量是长度的吗n,λ.是一个标量。的值λ.满足方程的是特征值。对应的值v满足这个方程的是正确的特征向量。左特征向量,w,满足方程w一个=λ.w”。

例子

e= eig (一个,B)返回一个列向量,包含方阵的广义特征值一个B

例子

(V,D) = eig (一个,B)返回对角矩阵D广义特征值和全矩阵V谁的列是对应的右特征向量,所以a * v = b * v * d

(V,D,W) = eig (一个,B)也返回完整的矩阵W它们的列是对应的左特征向量,所以W W * = D *的* B

广义特征值问题是确定方程的解一个v=λ.Bv,在那里一个Bn-经过-n矩阵,v列向量是长度的吗n,λ.是一个标量。的值λ.满足方程是广义特征值。对应的值v是广义右特征向量。左特征向量,w,满足方程w一个=λ.wB

(___) = eig (一个,balanceOption),在那里balanceOption“nobalance”,禁用算法的初始均衡步骤。的默认值balanceOption“平衡”,实现了平衡。的eig函数可以返回前面语法中的任何输出参数。

例子

(___) = eig (一个,B,算法),在那里算法'CHOL',使用Cholesky因式分解B计算广义特征值。的默认值算法这取决于一个B,但通常是“求”,使用QZ算法。

如果一个埃尔米特,B厄米特是正定的吗算法'CHOL'

例子

(___) = eig (___,eigvalOption)以指定的形式返回特征值eigvalOption使用前面语法中的任何输入或输出参数。指定eigvalOption作为“向量”返回列向量或作为的特征值“矩阵”返回对角矩阵中的特征值。

例子

全部折叠

使用画廊来创建一个对称正定矩阵。

一个=画廊(“黄土”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 0.7500 1.0000 0.7500 1.0000

计算特征值一个。结果是一个列向量。

e = eig (A)
E =4×10.2078 0.4078 0.8482 2.5362

另外,使用eigvalOption返回对角矩阵中的特征值。

d = eig(a,“矩阵”)
d =4×40.2078 0 0 0 0 0 0.4078 0 0 0 0 0.8482 0 0 0 0 2.5362

使用画廊来创建一个循环矩阵。

一个=画廊(“线性”3,3)
一个=3×31 2 3 1 2 2 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.5774 + 0.0000i -0.2887 - 0.5000i -0.2887 + 0.5000i -0.2887 - 0.5000i
d =3×3复杂6.000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -1.5000 + 0.8660i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -1.5000 - 0.8660i

验证结果是否令人满意* V = V * D

a * v  -  v * d
ans =3×3复杂10-14年× -0.2220 + 0.0000i -0.0888 - 0.0111i -0.0888 + 0.0111i 0.0888 + 0.0000i 0.0000 + 0.0833i 0.0444 + 0.0000i -0.1110 + 0.0666i -0.1110 - 0.0666i

理想情况下,特征值分解满足这一关系。自eig然后,使用浮点计算执行分解* V最多能接近吗V * D。换句话说,a * v - v * d接近,但不完全,0

默认情况下eig不总是按顺序返回特征值和特征向量。使用排序函数将特征值按升序排列,并对相应的特征向量重新排序。

计算特征值和特征向量的5 × 5魔术方阵。

=魔法(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×50.4472 0.0976 -0.6330 0.6780 -0.2619 -0.4472 0.3525 0.5895 0.3223 - 0.3232 -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×5650,000 0000 0 -21.2768 0000 -13.1263 0000 21.2768 0000 13.1263

的特征值一个在对角线上D。然而,特征值是未排序的。

从对角线提取特征值D使用诊断接头(D),然后将得到的向量按升序排序。的第二个输出排序返回索引的排列向量。

位于[d] =排序(诊断接头(d))
d =5×1-21.2768 -13.1263 13.1263 21.2768 650000
印第安纳州=5×12 3 5 4 1

使用Ind.重新排序对角线元素D。因为特征值在D对应于列中的特征向量V,您还必须重新排序列V使用相同的索引。

Ds = D(印第安纳州)
Ds =5×5-21.2768 0000 0 -13.1263 000 13.1263 0000 21.2768 0000 650000
vs = v(:,ind)
vs =5×50.0976 -0.6330 - 2619 0.6780 - 0.472 0.3525 0.5895 -0.1732 0.3223 - 0.472 0.5501 -0.3915 0.3915 -0.5501 - 0.472 -0.3223 0.1732 -0.5895 -0.3525 - 0.472 -0.6780 0.2619 0.6330 -0.0976 -0.4472

两个都(v,d)(Vs Ds)产生特征值分解一个。的结果* V-V * D* Vs-Vs * Ds同意,直到舍入错误。

e1 =规范(* V-V * D);e2 =规范(* Vs-Vs * Ds);E = abs(e1 - e2)
e = 1.2622 e-29

创建一个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 -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 * = D * W的

W * A - D * W的
ans =3×310-13年× -0.0266 - 0.0132 -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 1 0;0 3 1;0 0 3];

计算特征值和右特征向量一个

[V D] = eig (A)
V =3×31.000 -1.000 1.0000 0.0000 -0.0000 0 0.0000
d =3×33 0 0 0 3 0 0 0 3

一个重复的特征值,特征向量不是独立的。这意味着一个不能对角化,因此是有缺陷的。

验证VD满足的方程,* V = V * D,即使一个是有缺陷的。

a * v  -  v * d
ans =3×310-15年×0 0.8882 -0.8882 0 0 0.0000 0 0 0

理想情况下,特征值分解满足这一关系。自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

* V - B * * D
ans =2×20 0 0 0

剩余误差* V - B * * D正是零。

创建一个条件恶劣的对称矩阵,包含接近机器精度的值。

格式eA = diag([10^-16, 10^-15])
一个=2×21.000000000000000e-16 00 1.000000000000000e-15

利用默认算法计算广义特征值和一组右特征向量。在这种情况下,默认算法为'CHOL'

(V1, D1) = eig (,)
v1 =2×23.162277660168380e+07
D1 =2×29.9999999999999999E-01 0 0 1.000000000000000E + 00

现在,计算广义特征值和一组右特征向量使用“求”算法。

(V2, D2) = eig(一个,“求”)
v2 =2×21 0 0 1
D2 =2×21 0 0 1

检查一下'CHOL'结果满足* V1 =一个* * D1

格式* V1 - * * D1
ans =2×210-23年× 0.1654 0 0 -0.6617

现在,看看“求”结果满足一个* V2 * * V2 = D2

* V2 - * V2 * D2
ans =2×20 0 0 0

当两个矩阵都是对称的,eig使用'CHOL'默认的算法。在这种情况下,QZ算法返回更准确的结果。

创建一个2 × 2的单位矩阵,一个,一个奇异矩阵,B

一个=眼(2);B = [3 6;4 8];

如果你试图计算矩阵的广义特征值 B - 1 一个 使用命令[v,d] = eig(b \ a),然后MATLAB®返回一个错误,因为B \生产INF.值。

相反,通过传递两个矩阵来计算广义特征值和右特征向量eig函数。

[V D] = eig (A, B)
V =2×2-0.7500 -1.000 -1.000 0.5000
d =2×2Inf . 0.0909 0 0

最好分别传递两个矩阵,让eig选择最好的算法来解决问题。在这种情况下,eig(a,b)返回一组特征向量和至少一个实特征值,即使B是不可逆的。

验证 一个 v = λ. B v 对于第一个特征值和第一个特征向量。

eigval = D (1,1);eigvec = V (: 1);* eigvec——eigval * B * eigvec
ans =2×110-15年×0.1110 - 0.2220

理想情况下,特征值分解满足这一关系。由于分解是使用浮点计算执行的,那么A * eigvec最多能接近吗eigval * B * eigvec,就像在这里一样。

输入参数

全部折叠

输入矩阵,指定为真实或复杂的方矩阵。

数据类型:|
复数的支持:万博1manbetx是的

广义特征值问题输入矩阵,指定为实值或复值的方阵。B必须和?一样大小一个

数据类型:|
复数的支持:万博1manbetx是的

余额选项,具体如下:“平衡”,可以进行初步的平衡步骤“nobalance”禁用它。在大多数情况下,平衡步骤改善了一个以产生更准确的结果。然而,在某些情况下,平衡会产生不正确的结果。指定“nobalance”一个包含规模差异显著的值。例如,如果一个如果包含非零整数,以及非常小(接近零)的值,那么平衡步骤可能会将这些小值缩放为与整数同样重要的值,并产生不准确的结果。

“平衡”是默认行为。有关平衡的更多信息,请参见平衡

广义特征值算法,具体为'CHOL'“求”,选择了用于计算一对广义特征值的算法。

算法 描述
'CHOL' 的广义特征值一个B用Cholesky因式分解B
“求” 采用QZ算法,也称为广义Schur分解。的对称性一个B

通常,这两种算法返回相同的结果。QZ算法在某些问题上更稳定,比如那些涉及坏条件矩阵的问题。

当你忽略算法论证,这eig函数根据属性选择算法一个B。它使用'CHOL'对称(厄密)算法一个和对称(隐士)积极确定B。否则,它使用“求”算法。

不管你指定的算法是什么eig函数总是使用QZ算法一个B不对称的。

特征值选项,指定为“向量”“矩阵”。此选项允许您指定特征值是以列向量还是以对角矩阵返回。默认行为根据指定的输出数量而变化:

  • 如果指定一个输出,例如e = eig (A),则默认情况下,特征值作为列向量返回。

  • 如果指定两个或三个输出,例如[V D] = eig (A),则特征值返回为对角矩阵,D默认情况下,。

例子:D = eig (A,“矩阵”)使用1输出语法返回特征值的对角矩阵。

输出参数

全部折叠

特征值,作为包含多重特征值(或一对的广义特征值)的列向量返回。

什么时候一个是实对称的还是复厄米特的e满足一个v=λ.v是真实的。

正确的特征向量,作为一个方形矩阵返回,其列是正确的特征向量一个或者这对的广义右特征向量,(a,b)。的形式和规范化V取决于输入参数的组合:

  • [V D] = eig (A)收益矩阵V,其列是的右特征向量一个这样* V = V * D。的特征向量V都是标准化的,所以每个的2范数都是1。

    如果一个是真正的对称,然后是正确的特征向量,V正交。

  • [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使用'CHOL'含有对称(Hermitian)的算法一个和对称(隐士)积极确定B,它将特征向量标准化V这样B每个的范数都是1。

不同的机器和MATLAB版本®可以产生数值上仍然准确的不同特征向量:

  • 对于实特征向量,特征向量的符号可以改变。

  • 对于复特征向量,特征向量可以乘以任何大小为1的复数。

  • 对于一个多重特征值,其特征向量可以通过线性组合进行重组。例如,如果一个x=λ.x一个y=λ.y,然后一个(x+y) =λ.(x+y),所以x+y也是的特征向量一个

特征值,作为特征值为的对角矩阵返回一个在主对角线上或者说特征值对上,(a,b),在主对角线上具有多重性。

什么时候一个是实对称的还是复厄米特的D满足一个v=λ.v是真实的。

左特征向量,作为一个方形矩阵返回,其列是左特征向量一个或者这对的广义左特征向量,(a,b)。的形式和规范化W取决于输入参数的组合:

  • [V D W] = eig (A)收益矩阵W,其列是的左特征向量一个这样W * = D * W的。的特征向量W是归一化的,以便每个2-norm是1.如果一个是对称的,然后WV

  • [v,d,w] = eig(a,'nobalance')也返回矩阵W。然而,每个特征向量的2范数不一定是1。

  • [V D W] = eig (A, B)[V D W] = eig (A, B,算法)返回W作为一个矩阵,其列是满足的概括左特征向量W W * = D *的* B。每个特征向量的2范数不一定是1。在这种情况下,D包含该对的广义特征值,(a,b),沿着主对角线。

    如果一个B是对称的,然后WV

不同的机器和MATLAB版本可以产生不同的特征向量,这些特征向量在数值上仍然是准确的:

  • 对于实特征向量,特征向量的符号可以改变。

  • 对于复特征向量,特征向量可以乘以任何大小为1的复数。

  • 对于一个多重特征值,其特征向量可以通过线性组合进行重组。例如,如果一个x=λ.x一个y=λ.y,然后一个(x+y) =λ.(x+y),所以x+y也是的特征向量一个

尖端

  • eig函数可以计算实对称稀疏矩阵的特征值。计算稀疏矩阵的特征向量,或计算非实且对称的稀疏矩阵的特征值,使用eigs函数。

扩展功能

之前介绍过的R2006a