乘幂法求矩阵的主特征值和主特征向量及按模最小特征值和特征向量MATLAB代码
时间: 2023-09-23 18:04:39 浏览: 126
matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量.pdf
以下是用MATLAB实现乘幂法求解矩阵的主特征值和主特征向量以及按模最小特征值和特征向量的代码:
```matlab
% 定义矩阵A
A = [4 1 1; 1 3 -1; 1 -1 2];
% 定义初始向量x0
x0 = [1; 1; 1];
% 定义迭代次数和收敛精度
max_iter = 100;
epsilon = 1e-6;
% 定义迭代计数器
iter = 0;
% 开始迭代
while iter < max_iter
% 计算向量y = A * x0
y = A * x0;
% 计算模长
lambda = norm(y);
% 归一化处理
x1 = y / lambda;
% 计算收敛精度
cos_theta = abs(x1' * x0);
% 更新迭代变量
x0 = x1;
iter = iter + 1;
% 判断是否收敛
if cos_theta > 1 - epsilon
break;
end
end
% 输出主特征值和主特征向量
fprintf('The dominant eigenvalue of A is %f\n', lambda);
fprintf('The dominant eigenvector of A is:\n');
disp(x0);
% 按模最小特征值和特征向量
B = inv(A);
x0 = [1; 1; 1];
iter = 0;
while iter < max_iter
y = B * x0;
lambda = 1 / norm(y);
x1 = y * lambda;
cos_theta = abs(x1' * x0);
x0 = x1;
iter = iter + 1;
if cos_theta > 1 - epsilon
break;
end
end
% 输出按模最小特征值和特征向量
fprintf('The smallest eigenvalue of A is %f\n', lambda);
fprintf('The corresponding eigenvector of A is:\n');
disp(x0);
```
运行以上代码,即可得到矩阵A的主特征值和主特征向量以及按模最小特征值和特征向量的结果。
阅读全文