function iteration
A=[10,1,2,3,4;
1,9,-1,2,-3;
2,-1,7,3,-5;
3,2,3,12,-1;
4,-3,-5,-1,15];
b=[12,-27,14,-17,12]';
x0=[0,0,0,0,0]';
tol=1e-12;
disp('jacobi迭代法的结果和次数如下:')
[x,k]=Fjacobi(A,b,x0,tol)
disp('G-S迭代法的结果和次数如下:':')
[x,k]=Fgseid(A,b,x0,tol)
disp('超松弛的结果和次数如下:':')
[x,k]=Fsor(A,b,x0,,tol)
disp('共轭梯度法的结果和次数如下:':')
[x,k]=Fcg(A,b,x0,tol)
%jacobi迭代法
function [x,k]=Fjacobi(A,b,x0,tol)
max=300;
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;
x=B*x0+f;
k=1;
while norm(x-x0)>=tol
x0=x;
x=B*x0+f;
k=k+1;
if(k>=max)
disp('μü′ú3?1y300′?£?·?3ì×é?é?ü2?ê?á2');
return;
end
end
%G-S迭代法
function [x,k]=Fgseid(A,b,x0,tol)
max=300;
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;
f=(D-L)\b;
x=G*x0+f;
k=1;
while norm(x-x0)>=tol
x0=x;
x=G*x0+f;