matlab求解特征向量程序逆迭代法,有没有大神能用MATLAB做一个迭代法求矩阵的特征值和特征向量的程序呀...

这篇博客介绍了两种数值计算中的迭代方法——雅可比迭代和高斯-赛德尔迭代。作者给出了MATLAB代码实现,详细解释了函数参数及其作用,并展示了迭代过程中的精度控制和迭代次数限制。通过这两个函数,读者可以理解如何解决线性方程组的问题。
摘要由CSDN通过智能技术生成

匿名用户

1级

2014-11-06 回答

雅可比迭代

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值