Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MATLAB PROGRAM :
function [ x ] = itergauss( A,b,n )
%%check if gauss-seidel method is
applicable
[si,sj]=size(A);
if si~=sj
disp('error matrix is not square');
return
end
if prod(diag(A))==0
disp('gauss-seidel iterative method is
not applicable');
return
end
E=tril(A,-1);
F=triu(A,1);
D=A-E-F
Bj=-inv(D)*(E+F);
rho=max(abs(eig(Bj))); %spectral radius
if rho>=1
rho=1;
end
%if rho>=1
% disp('gauss-seidel method do not
converge');
% return
%end
y=zeros(si,n);
tic
for i=[1:1:n]
y(:,i+1)=inv(D+E)*(b-F*y(:,i));
end
x=y(:,n);
execution_time=toc
end
MATLAB RESULTS .
A=
Columns 1 through 5
Columns 6 through 9
b=
6.7200
5.8000
10.6400
6.1600
1.1200
5.0400
2.8000
3.3600
0.5600
>> n=9
n=
>> [x]=itergauss(A,b,n)
Undefined function or variable 'itergauss'.
>> [x]=itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
>> itergauss
Not enough input arguments.
>> [x]=itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
>> [x]=itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
>> x=itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
>> itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
x=itergauss(A,b,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
execution_time =
0.0122
x=
-17.6877
51.1768
-3.0558
12.0614
-0.5444
0.6921
-17.9662
-19.9951
2.1746
>>
b1=[0.9629;0.9545;0.7946;0.8991;0.9454;0.9167;0.9732;0.9825;0.9182]
b1 =
0.9629
0.9545
0.7946
0.8991
0.9454
0.9167
0.9732
0.9825
0.9182
>> x=itergauss(A,b1,n)
D=
Columns 1 through 8
52 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 45 0 0 0 0 0
0 0 0 6 0 0 0 0
0 0 0 0 50 0 0 0
0 0 0 0 0 37 0 0
0 0 0 0 0 0 2 0
0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0
Column 9
0
0
0
0
0
0
0
0
55
execution_time =
0.0029
x=
-0.4070
1.2217
-0.0713
0.2934
-0.0012
0.0211
-0.2965
-0.3155
0.0455
>>