要求:
下面分别使用雅克比迭代法和高斯-赛德尔迭代法求一个方程组的近似解用的线性方程组是按实验要求给的:
7*x1+x2+2*x3=10
x1+8*x2+2*x3=8
2*x1+2*x2+9*x3=6
雅克比迭代法的matlab代码:(老师写的)
A=[7,1,2;1,8,2;2,2,9];
b=[10;8;6];
if(any(diag(A))==0)
error('error,pause')
end
eps=input('误差限eps=');
N=input('迭代次数N=');
D=diag(diag(A));
B=inv(D)*(D-A);
f=inv(D)*b;
K=0;
x0=zeros(size(b));
while 1
x1=B*x0+f
K=K+1;
fprintf('第-次迭代的近似解为',K)
disp(x1');
if norm(x1-x0,inf)<eps
fprintf('满足精度要求的解为\n')
disp(x1');
break
end
if K>N
fprintf('迭代超限')
end
x0=x1;
end
高斯-赛德尔迭代法matlab代码:(自己改的)
A=[7,1,2;1,8,2;2,2,9];
b=[10;8;6];
if(all(diag(A))==0)
error('error,pause')
end
eps=input('误差限eps=');
N=input('迭代次数N=');
D=diag(diag(A));
B=inv(D)*(D-A);
f=inv(D)*b;
K=0;
x0=zeros(size(b));
x00=x0;
while 1
x11=B*x0+f;
x00(1,1)=x11(1,1);
x12=B*x00+f;
x00(2,1)=x12(2,1);
x13=B*x00+f;
x00(3,1)=x13(3,1);
x1=x00
K=K+1;
fprintf('第-次迭代的近似解为',K)
disp(x1');
if norm(x1-x0,inf)<eps
fprintf('满足精度要求的解为\n') disp(x1');
break
end
if K>N
fprintf('迭代超限')
end
x0=x1;
end。