MATLAB函數檔案
function x=Agui_GS(A,b)
%方程Ax=b,x0為初始向量
%e為精度,N為最大疊代次數
n=length(b);
N=100;
e=1e-4;
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
A1=tril(A);
A2=inv(A1);
while norm(x0-x,inf)>e&&k<N
k=k+1;
x0=x;
x=-A2*(A-A1)*x0+A2*b;
format long
k
disp(x');
end
if k==N
wArning('已達到最大疊代次數');
end
例1
>> A=[10 -1 -2;-1 10 -2;-1 -1 5]
A =
10 -1 -2
-1 10 -2
-1 -1 5
>> b=[72;83;42]
b =
72
83
42
>> x=agui_GS(A,b)
k =
1
7.200000000000000 9.020000000000001 11.644000000000000
k =
2
10.430800000000001 11.671880000000002 12.820536000000001
......
k =
8
10.999997817131550 11.999998662278413 12.999999295881992
x =
10.999997817131550
11.999998662278413
12.999999295881992
例2
>> A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4]
A =
4 -1 0 -1 0 0
-1 4 -1 0 -1 0
0 -1 4 -1 0 -1
-1 0 -1 4 -1 0
0 -1 0 -1 4 -1
0 0 -1 0 -1 4
>> b=[0;5;-2;5;-2;6]
b =
0
5
-2
5
-2
6
>> x=agui_GS(A,b)
k =
1
1 至 3 列
0 1.250000000000000 -0.187500000000000
4 至 6 列
1.203125000000000 0.113281250000000 1.481445312500000
......
k =
14
1 至 3 列
0.999917067032988 1.999910029133425 0.999924067870464
4 至 6 列
1.999930546109209 0.999942834404453 1.999966725568729
x =
0.999917067032988
1.999910029133425
0.999924067870464
1.999930546109209
0.999942834404453
1.999966725568729