为什么逻辑算子对这个矩阵的特征值不起作用?

1次观看(过去30天)
我试着找出一个矩阵的特征值的下标它等于1。但由于某些原因,'=='或'ismember'不能识别它。有人能看一下这段代码并提出问题吗?
Tm = [0.1,0.2,0.7;0.5, 0.2, 0.3, 0.1, 0.1, 0.8);
[V,D] = eig(TM');
V
D
vec = sum(D);
N1 = 1:长度(vec)
如果(vec(n1) == 1)
Index_for_pop = n1;
结束
结束
index_for_pop
= = =输出
V =
-0.2022 -0.8100 -0.4938
-0.1711 0.3162 -0.3162
-0.9643 0.4938 0.8100
D =
1.0000 0
0 -0.1562 0
0 0 0.2562
未定义的函数或变量index_for_pop。
错误在trial2(第14行)
index_for_pop

接受的答案

克里斯汀Tobler
克里斯汀Tobler 2021年4月30日
在特征值1上有一个小舍入误差:
> tm = [0.1,0.2,0.7;0.5, 0.2, 0.3, 0.1, 0.1, 0.8);
[V,D] = eig(TM',“向量”);
D (1)
ans =
1.0000
>> d (1) - 1
ans =
4.4409 e-16
在数值计算中,使用“==”类型的比较通常不是一个好主意,最好使用 abs(D(1) -1) < 1e-14 例如。

更多答案(1)

史蒂文的主
史蒂文的主 2021年4月30日
特征值不是 完全 等于1。它非常接近1,因此在默认显示格式中显示为1。
你最好打个电话 eig 用向量输入所以它返回的特征值是向量而不是对角线矩阵。
使用 ismembertol 或者在最后一段代码中显示的技术 这篇回答文章

类别

了解更多线性代数帮助中心而且文件交换

下载188bet金宝搏

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!