有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀相关的知识,希望对你有一定的参考价值。
参考技术A 雅可比迭代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本回答被提问者和网友采纳
以上是关于有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀的主要内容,如果未能解决你的问题,请参考以下文章
急求,matlab中, 已知矩阵A,已完成对A的QR分解,下一步求A的特征值和特征向量,程序怎么编写?