【发布时间】:2015-04-12 18:25:47
【问题描述】:
对于这个问题,我必须取一个 100 x 100 的随机生成值矩阵和一个初始 x 向量,并尝试获得特征值和相关对向量的最大绝对值以及迭代次数。
所描述的幂法:
我要求最大特征值的绝对值,对应的特征向量,迭代次数。
我的代码:
%% problem 2b: Power method
% code snippet from class generates A and x
nx = 10;
ex = ones(nx,1);
Dxx = spdiags([ex -2*ex ex], [-1 0 1], nx, nx);
A = kron(Dxx, speye(nx)) + kron(speye(nx), Dxx);
rng(2);
x = rand(nx*nx,1); % initial vector
yk = [] % stores yk values
count = 0; % keeps track of iterations
value = 1; % 1 to ensure while loop is entered
tolerance = 10^(-6); % tol
while (value >= tolerance)
yk = A*x; % yk = A*xk
xnext = yk/norm(yk); % Xk+1=yk/2norm(yk)
rk = dot(xnext,(A*xnext)); % rk = Xk+1 * (A*Xk+1)
count = count+1; % iterate count
value = norm(yk - rk*x); % update tolerance check
x = xnext;
end
value
x % final eigenvector
rk % the largest eignvalue in abs value
count % the number of iterations
根据答案,我最大的特征值——rk——是正确的,但是对应的特征向量和迭代次数不正确。有人可以为我澄清一下吗?我用的时候特征值和特征向量是一致的:
[C, D] = eigs(A)
【问题讨论】:
标签: matlab linear-algebra eigenvector eigenvalue