Matlab快速入门之线性代数:特征值

4.3
(3)

本文属于Matlab快速入门之线性代数的第四篇,即特征值,主要包括特征值的分解多重特征值Schur 分解等。

Matlab快速入门之线性代数:特征值

特征值的分解

方阵 A 的特征值和特征向量分别为满足以下条件的标量 λ 和非零向量 υ

Aυ = λυ。

对于对角矩阵的对角线上的特征值 Λ 以及构成矩阵列的对应特征向量 V,公式为

AV = VΛ。

如果 V 是非奇异的,这将变为特征值分解。

A = VΛV^–1。

微分方程 dx/dt = Ax 的系数矩阵就是一个很好的示例:

>> A =[0,-6,-1;6,2,-16;-5,20,-10]

A =

     0    -6    -1
     6     2   -16
    -5    20   -10

此方程的解用矩阵指数 x(t) = etAx(0) 表示。如下语句,生成包含 A 的特征值的列向量。对于该矩阵,这些特征值为复数:

>> lambda = eig(A)

lambda =

  -3.0710 + 0.0000i
  -2.4645 +17.6008i
  -2.4645 -17.6008i

每个特征值的实部都为负数,因此随着 t 的增加,eλt 将会接近零。两个特征值 ±ω 的非零虚部为微分方程的解提供了振动分量 sin(ωt)。

使用这两个输出参数,eig 便可以计算特征向量并将特征值存储在对角矩阵中:

>> [V,D] = eig(A)

V =

  -0.8326 + 0.0000i   0.2003 - 0.1394i   0.2003 + 0.1394i
  -0.3553 + 0.0000i  -0.2110 - 0.6447i  -0.2110 + 0.6447i
  -0.4248 + 0.0000i  -0.6930 + 0.0000i  -0.6930 + 0.0000i


D =

  -3.0710 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -2.4645 +17.6008i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i  -2.4645 -17.6008i
Matlab快速入门之线性代数:特征值

第一个特征向量为实数,另外两个向量互为共轭复数。所有三个向量都归一化为具有等于 1 的欧几里德长度 norm(v,2)

矩阵 V*D*inv(V)(可更简洁地写为 V*D/V)位于 A 的舍入误差界限内。inv(V)*A*V 或 V\A*V 都在 D 的舍入误差界限内。

多重特征值

某些矩阵没有特征向量分解。这些矩阵是不可对角化的。例如:

>> A=[1 -2 1;0 1 4;0 0 3]

A =

     1    -2     1
     0     1     4
     0     0     3

对于此矩阵

>> [V,D] = eig(A)

V =

    1.0000    1.0000   -0.5571
         0    0.0000    0.7428
         0         0    0.3714


D =

     1     0     0
     0     1     0
     0     0     3
Matlab快速入门之线性代数:特征值

λ =1 时有一个双精度特征值。V 的第一列和第二列相同。对于此矩阵,并不存在一组完整的线性无关特征向量。

Schur 分解

许多高级矩阵计算不需要进行特征值分解。而是使用 Schur 分解。

A = USU′,

其中,U 是正交矩阵,S 是对角线上为 1×1 和 2×2 块的块上三角矩阵。特征值是通过 S 的对角元素和块显示的,而 U 的列提供了正交基,它的数值属性要远远优于一组特征向量。

例如,比较下面的亏损矩阵的特征值和 Schur 分解:

>> A=[6 12 19;-9 -20 -33;4 9 15]

A =

     6    12    19
    -9   -20   -33
     4     9    15

>> [V,D] = eig(A)

V =

   -0.4741   -0.4082   -0.4082
    0.8127    0.8165    0.8165
   -0.3386   -0.4082   -0.4082


D =

   -1.0000         0         0
         0    1.0000         0
         0         0    1.0000

>> [U,S] = schur(A)

U =

   -0.4741    0.6648    0.5774
    0.8127    0.0782    0.5774
   -0.3386   -0.7430    0.5774


S =

   -1.0000   20.7846  -44.6948
         0    1.0000   -0.6096
         0    0.0000    1.0000
Matlab快速入门之线性代数:特征值

矩阵 A 为亏损矩阵,因为它不具备一组完整的线性无关特征向量(V 的第二列和第三列相同)。由于 V 的列并非全部是线性无关的,因此它有一个很大的条件数,大约为 1e8。但 schur 可以计算 U 中的三个不同基向量。由于 U 是正交矩阵,因此 cond(U) = 1

矩阵 S 的实数特征值作为对角线上的第一个条目,并通过右下方的 2×2 块表示重复的特征值。2×2 块的特征值也是 A 的特征值:

>> eig(S(2:3,2:3))

ans =

   1.0000 + 0.0000i
   1.0000 - 0.0000i

共计3人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/3287.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2022年09月25日 21:13
下一篇 2022年09月27日 00:53

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号