0
我想用Matlab跟蹤屬於某個矩陣的特定特徵值。假設我們有一個矩陣A = A(x),並且我想看看當我在循環中移動x時A的特定特徵值會發生什麼。是否可以在Matlab中「追蹤」特定的特徵值?
的問題是,使用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
的例子。現在,如果您取消註釋上面的註釋行,以便專注於並繪製特定的特徵值,您將看到焦點從某個特徵值跳到另一個特徵值。那麼你怎麼能專注於繪製一個特徵值?
一個2×2矩陣,它是使用分析表達式容易地追蹤特徵值,是你想要的還是更通用的?此外,「跟蹤」特徵值假定您的矩陣絕熱地變化。你知道這是你的問題嗎? – bla
我正在處理的真實世界矩陣至少是128x128。我知道,從同時繪製所有特徵值(並放大各個區域),他們不斷變化...但是我想只關注單個特徵值而不是多個在各個地方重疊的特徵值,因爲它太難以理清發生了什麼當你在情節中擁有許多特徵值時。 – sonicboom
你沒有提到絕熱論證。沒有太多的意義跟蹤他們,如果變化率不足夠慢(因此絕熱近似) – bla