有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/10 22:49:14
![有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀](/uploads/image/z/7820288-8-8.jpg?t=%E6%9C%89%E6%B2%A1%E6%9C%89%E5%A4%A7%E7%A5%9E%E8%83%BD%E7%94%A8MATLAB%E5%81%9A%E4%B8%80%E4%B8%AA%E8%BF%AD%E4%BB%A3%E6%B3%95%E6%B1%82%E7%9F%A9%E9%98%B5%E7%9A%84%E7%89%B9%E5%BE%81%E5%80%BC%E5%92%8C%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%91%80)
有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
雅可比迭代
function [x,n]=jacobi2(A,b,x0,eps,M)
% Jacobi迭代
%A=[9 1 1;1 8 1;1 1 9];
%b=[1;1;1];
%x0=[0;0;0];
%[x,n]=jacobi(A,b,x0)
if nargin==3
eps=1.0e-6;
M=10000;
elseif nargin==4
M=10000;
end
D=diag(diag(A));L=-tril(A,-1);
U=-triu(A,1);B=inv(D)*(L+U);
f=inv(D)*b;x=x0;n=0;
tol=1;
while tol>eps
x=B*x0+f;
n=n+1;
tol=norm(x-x0);%极大范数 等同于tol=max(abs(x-x0))但不能这样用
x0=x;
if(n>=M)
disp('Warning:迭代次数太多,可能不收敛');
break;
end
end
高斯赛德尔迭代
function[x,n]=gauseidel2(A,b,x0,eps,M )
% Detailed explanation goes here
% 解的精度:eps% 迭代步数控制:M
% 解 x% 求解所需的实际步数迭代:n
%[x,n]=gauseidel(A,b,x0)
if nargin==3
eps=1.0e-6;
M=10000;
elseif nargin==4
M=10000;
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;
f=(D-L)\b;
x=x0;
n=0;
tol=1;
while tol>=eps
x=G*x0+f;
n=n+1;
tol=norm(x-x0);%算矩阵sup范数
x0=x;
if(n>=M)
disp('Warning:迭代次数太多可能不收敛')
break
end
end