数值分析求收敛性用雅可比,高斯赛德尔法分别求下方程组矩阵的收敛性2 -1 11 1 11 1 -2
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 19:42:50
数值分析求收敛性用雅可比,高斯赛德尔法分别求下方程组矩阵的收敛性2 -1 11 1 11 1 -2
数值分析求收敛性
用雅可比,高斯赛德尔法分别求下方程组矩阵的收敛性
2 -1 1
1 1 1
1 1 -2
数值分析求收敛性用雅可比,高斯赛德尔法分别求下方程组矩阵的收敛性2 -1 11 1 11 1 -2
雅科比法:
function x=jcb(A,b,epsilon)
clc;
m=max(size(A));
L=-tril(A,-1);
U=-triu(A,1);
D=diag(diag(A));
T=L+U;
for i=1:m
T(:,i)=huidai(D,T(:,i));
end
if((norm(T,1)>=1)&&(norm(T)>=1)&&(norm(T,inf)>=1)&&(norm(T,'fro')>=1))
error('迭代矩阵的谱范数>1,无法用此方法计算!');
end
x=rand(m,1);
y=zeros(m,1);
while (norm(y-x))>epsilon
y=x;
Dx=(L+U)*x+b;
for j=1:m
x(j,1)=Dx(j,1)/D(j,j);
end
end
x0=inv(A)*b;
r=norm(x0)-norm(x);
高斯赛德尔法(令参数w=1):
function x=sor(A,b,epsilon,w)
clc;
m=max(size(A));
L=-tril(A,-1);
U=-triu(A,1);
D=diag(diag(A));
M=(1/w)*D-L;
N=((1-w)/w)*D+U;
T=zeros(m);
for i=1:m
T(:,i)=qiandai(M,N(:,i));
end
if((norm(T,1)>=1)&&(norm(T)>=1)&&(norm(T,inf)>=1)&&(norm(T,'fro')>=1))
error('迭代矩阵的谱范数>1,无法用此方法计算!');
end
x=rand(m,1);
y=zeros(m,1);
while (norm(y-x))>epsilon
y=x;
Mx=N*x+b;
x=qiandai(M,N*x+b);
end
x0=inv(A)*b;
r=norm(x0)-norm(x);
用matlab很容易得出结果:雅科比法发散 GS法收敛