Vous êtes sur la page 1sur 3

METODO ITERATIVO DE GAUSS SEIDEL

Ingrese la matriz de coeficientes:


[4 -1 0 0;-1 4 -1 0;0 -1 4 -1;0 0 -1 4]
Ingrese los trminos independientes:
[1 1 1 1]'
Ingrese el vector con las aproximacimaciones Iniciales:
[0 0 0 0]'
Ingrese el nmero mximo de iteraciones:
20
Ingrese la tolerancia:
0.0001
condicional=
2.358570173636288
SOLUCION:
La matriz de transicion de gauss seidel:
0 0.250000000000000
0
0
0 0.062500000000000 0.250000000000000
0
0 0.015625000000000 0.062500000000000 0.250000000000000
0 0.003906250000000 0.015625000000000 0.062500000000000
re =
0.163627124296868
El vector constante es::
0.250000000000000
0.312500000000000
0.328125000000000
0.332031250000000
TABLA:
n

x1

x2

x3

Error

1.000000000000000 0.250000000000000 0.312500000000000 0.328125000000000


0.614871544797417
2.000000000000000 0.328125000000000 0.414062500000000 0.436523437500000
0.170009020678225
3.000000000000000 0.353515625000000 0.447509765625000 0.451660156250000
0.044797808943115
4.000000000000000 0.361877441406250 0.453384399414063 0.454074859619141
0.010517913892542
5.000000000000000 0.363346099853516 0.454355239868164 0.454468488693237
0.001806686652554
6.000000000000000 0.363588809967041 0.454514324665070 0.454532861709595
0.000297689519258
7.000000000000000 0.363628581166267 0.454540360718966 0.454543394036591
0.000048759485455

% METODO ITERATIVO DE GAUSS SEIDEL


clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long %permite utilizar la maxima capacidad de la maquina
fprintf('
METODO ITERATIVO DE GAUSS SEIDEL\n\n\n')
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
%input es un comando de solicitud de entrada de datos del usuario.
a=input('Ingrese la matriz de coeficientes:\n ');
b=input('\nIngrese los trminos independientes:\n ');
x=input('\nIngrese el vector con las aproximacimaciones Iniciales:\n ');
iter=input('\nIngrese el nmero mximo de iteraciones:\n ');
tol=input('\nIngrese la tolerancia:\n ');
k=norm(a)*norm(a^-1);%Se calcula el condicional de la matriz de coeficientes
disp('condicional=')
disp(k)
% la funcion disp nos permite imprimir una variable en el espacio de trabajo
determinante=det(a);%se calcula el determinante de la matriz de coeficiente
if determinante==0
disp('El determinante es cero, el problema no tiene solucin nica')
end
n=length(b); %numero de elementos del vector b
d=diag(diag(a)); %obtencion de la matriz diagonal
l=d-tril(a); %obtencion de la matriz diagonal superior L
u=d-triu(a); %obtencion de la matriz diagonal inferior u
fprintf('\n
SOLUCION:\n')
fprintf('\nLa matriz de transicion de gauss seidel:\n')
T=((d-l)^-1)*u; % matriz de transicion de gauss
disp(T)
re=max(abs(eig(T))) %calculo del radio espectral
if re>1
disp('Radio Espectral mayor que 1')
disp('el mtodo no converge')
return
end
fprintf('\nEl vector constante es::\n')
C=((d-l)^-1)*b; % vector constante C, para el metodo
disp(C)
i=0;
err=tol+1;
z=[i,x(1),x(2),x(3),err]; %vector que me permite graficar la tabla
while err>tol & i<iter
xi=T*x+C;
%disp(xi)
i=i+1;
err=norm(xi-x); %norma 2
%err=max(abs(xi-x)); %norma 1
%err=norm(xi-x)/norm(xi); %norma relativa
x=xi;
z(i,1)=i;

z(i,2)=x(1);
z(i,3)=x(2);
z(i,4)=x(3);
z(i,5)=err;
end
fprintf('\nTABLA:\n\n
n
Error\n\n
')
disp(z) %impresion de la tabla.

x1

x2

x3

Vous aimerez peut-être aussi