有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 01:49:20
有没有大神能用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