matlab中求特征值的eig函数说明

matlab中求特征值的eig函数说明

1 基本用法

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

示例
[V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 AV = VD。

示例
[V,D,W] = eig(A) 还返回满矩阵 W,其列是对应的左特征向量,使得 W’A = DW’。

特征值问题是用来确定方程 Av = λv 的解,其中,A 是 n×n 矩阵,v 是长度 n 的列向量,λ 是标量。满足方程的 λ 的值即特征值。满足方程的 v 的对应值即右特征向量。左特征向量 w 满足方程 w’A = λw’。

示例
e = eig(A,B) 返回一个列向量,其中包含方阵 A 和 B 的广义特征值。

示例
[V,D] = eig(A,B) 返回广义特征值的对角矩阵 D 和满矩阵 V,其列是对应的右特征向量,使得 AV = BV*D。

[V,D,W] = eig(A,B) 还返回满矩阵 W,其列是对应的左特征向量,使得 W’A = DW’*B。

广义特征值问题是用来确定方程 Av = λBv 的解,其中,A 和 B 是 n×n 矩阵,v 是长度 n 的列向量,λ 是标量。满足方程的 λ 的值即广义特征值。对应的 v 的值即广义右特征向量。左特征向量 w 满足方程 w’A = λw’B。

[___] = eig(A,B,algorithm)(其中,algorithm 为 ‘chol’)使用 B 的 Cholesky 分解计算广义特征值。algorithm 的默认值取决于 A 和 B 的属性,但通常是 ‘qz’,表示使用 QZ 算法。

如果 A 为 Hermitian 并且 B 为 Hermitian 正定矩阵,则 algorithm 的默认值为 ‘chol’。

2 按特征值大小排序

A = magic(5);
[V,D] = eig(A);
[d,ind] = sort(diag(D));
Ds = D(ind,ind);
Vs = V(:,ind)

默认情况下,eig 并不总是返回已排序的特征值和特征向量。可以使用 sort 函数将特征值按升序排序,并重新排序相应的特征向量。
使用 diag(D) 从 D 的对角线上提取特征值,然后按升序对得到的向量进行排序。sort 的第二个输出返回索引的置换向量。
使用 ind 对 D 的对角线元素进行重新排序。由于 D 中的特征值对应于 V 的各列中的特征向量,因此还必须使用相同的索引对 V 的列进行重新排序。

3 广义特征值

创建一个 2×2 单位矩阵 A 和一个奇异矩阵 B。

A = eye(2);
B = [3 6; 4 8];

尝试计算矩阵 B − 1 A B^{-1}A B1A的广义特征值。

[V,D] = eig(B\A)
Warning: Matrix is singular to working precision.
Error using eig
Input to EIG must not contain NaN or Inf.

现在,将上述两个矩阵传递给 eig 函数,计算广义特征值和右特征向量。

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

最好是分开传递两个矩阵,并让 eig 选择求解该问题的最佳算法。在这种情况下,eig(A,B) 返回了一组特征向量和至少一个实数特征值,尽管 B 不可逆。

4 matlab eig(A,B)和eig(B\A)的区别

得到的特征值是一样的,但是特征向量有差别是正常的,但是特征向量是一族向量,只是差了常数倍而已。

  • 18
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JYJ-Alex

在校学生,学习动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值