是否有可能在Matlab中“跟踪”特定的特征值?

时间:2016-02-25 20:14:43

标签: matlab scientific-computing eigenvalue

我想使用Matlab跟踪属于某个矩阵的特定特征值。假设我们有一个矩阵A = A(x),我想看看当我在循环中移动x时,A的特定特征值会发生什么。

问题是当使用Matlab eig函数时,似乎特征值不是“始终”放在输出向量中。我已经创建了一个问题的例子

clc
clear all
close all

xMin = 0;
xMax = 100;
Nx = 1001; % changed from 101 to 1001 to highlight 'continuous' eigenvalues
xRange = linspace(xMin, xMax, Nx);

for ix=1:Nx
    x = xRange(ix) + 1i;
    A = [ cos(x)-sin(-x), 1; 1 cos(x)-exp(-x) ];
    e = eig(A);
%     e = e(1); uncomment this
    figure(1);
    hold on
    grid on
    scatter(real(e), imag(e));
end

如果您运行此代码,您将看到一个包含两个不同特征值的图。现在,如果您取消注释上面的注释行,以便聚焦并绘制特定的特征值,您将看到焦点在某个点从一个特征值“跳跃”到另一个特征值。那么你如何专注于并只绘制一个特征值?

1 个答案:

答案 0 :(得分:1)

如果不进入数学有效性的讨论(参见我的评论),可以使用所谓的粒子追踪方案来回答实现所需内容的方法。例如,您可以尝试实施可从FEX获得的此simple particle tracker,或更复杂的选项,例如thisthis。显然,你的问题有点容易,因为不需要使用图像处理等“检测”粒子,另一方面你需要调整代码以适应更多的维度......