Você está na página 1de 2

%-----------------------Gauss Seidel--------------------------------------%Esta funcion se formulo para satisfacer el enunciado 3.

%Lo unico que se cambio es que el valor del vector solocion es obtenido
%dinamicamente, es decir se va utilizando a medida que se genera.
%------------------------------------------------------------------------%------------------------ANALISIS----------------------------------------%Se procedera construyendo una funcion con los datos de entrada
%A,b,tol,kmax,X
%A = Matriz del sistema lineal
%b = Vector columna
%tol = Tolerancia del error
%X = Vector que comienza con la iteracion.
%kmax = Numero de iteraciones maximas.
%Luego se creara un vecotor obtenido Xo que cumple la funcion de base de
%datos para el vector solucion calculado en algoritmo de GAUSS-SEIDEL.
%Mediante un bucle se delimita la cantidad de iteraciones kmax.
%Anidados se encuentran dos bucles y la condicion
%El primer bucle anidado es para seleccionar las filas de A y establecer los
%valores de Xo. El segundo almacena las sumas definidas por algoritmo de
%GAUSS-SEIDEL. (Ver anexo).
%Una vez obtenido el vector resultado se procedra a determinar la
%diferencia entre la iteracion X(k-1) y Xo(k).
%Luego se procede al cambio de X por Xo para almacenar el resultado como X
%La condicion if-en permite que si la diferencia entre Xo y X es menor o
%igual que la toleracia se impriman el vector solucion en k y la cantidad
%de solucion ademas de salir.
%En el caso de cumplirse el maximo de iteraciones kmax se imprime un
%mensaje el numero de iteraciones es insuficiente o diverge el sistema.
%------------------------------------------------------------------------%--------------------------PROGRAMA--------------------------------------function[] = GAUSSEIDEL(A,b,tol,X,kmax)
%FUNCION CON DATOS DE ENTRADA
Xo = zeros(length(X),1);
%PRE DEFIENICION VECTOR SOLUCION OB
TENIDO Vo
for k = 1 : kmax;
%BUCLE LIMITADO DE ITERACIONES
Sum = 0;
%VARIABLE TEMPORAL PARA ALMACENA SU
MA DE LOS PRODUCTOS DEL ALGORITMO
for i = 1 : length(b);
%BUCLE QUE UBICA LAS FILAS EN A Y b
TAMBIEN LA DIAGONAL A(i,i)
for j = 1 : length(b);
%BUCLE QUE DETERMINA LA COEFICIENTE
COLUMNA DE A Y FILA DE Xo
if j ~= i;
%CONDICION QUE EXCLUYE LOS ELEMENTO
S DE LA DIAGONAL
Sum = A(i,j) * Xo(j) + Sum; %AQUI RADICA LA DIFERENCIA SUSTANCI
AL CON JACOBI Xo EN LUGAR DE X PAR TENER DATOS ACTUALES
end;
end;
Xo(i) = (b(i) - Sum) / A(i,i);
%ALMACENAMIENTO DE VALORES DEL VECT
OR SOLUCION
Sum = 0;
end
diffkm1 = Xo-X;
%DIFERENCIA ENTRE VECTOR SOLUCION E
N k Y k-1 ITERACION
X = Xo;
%CAMBIO DE VALORES PARA QUE Xo PASE
HACER EL VALOR DE X EN ITERACION K-1
if norm(diffkm1) <= tol;
%CONDICION DE NORMA EN DIFERENCIA E
NTRE VECTOR SOLUCION EN K Y K-1 ITERACION.(VER REF BIBLIOGRAFICA)
disp('VECTOR SOLUCION X');
disp(X);
break;

%IMPRESION MENSAJE
%VECTOR SOLUCION CALCULADO
%SALIDA DE FUNCION

elseif k == kmax;
%CONDICION SI EL NUMERO DE ITERACIO
NES ES MAXIMO
disp('LAS ITERACIONES SON INSUFICIENTES O DIVERGE');
end;
end;
%-------------------------------------------------------------------------%VARIABLES UTILIZADAS
%VARIABLES UTILIZADAS.
%A = MATRIZ DE ENTRADA
%b = VECTOR COLUMNA
%kmax = NUMERO DE ITERACIONES MAXIMAS.
%X = VECTOR COLUMNA INICIAL
%tol = TOLERANCIA.
%diffkm1 = DIFERENCIA DE VECTORES SOLUCION EN K Y K-1 ITERACION
%Sum = VARIABLE QUE ALMACENA LA SUMA DE PRODUCTOS DE LOS COEFIENCIENTES DE
%LA MATRIZ CON LOS DEL VECTOR COLUMNA X.
%i = VARIABLE DE CONTEO.
%j = VARIABLE DE CONTEO.

genera.
%------------------------------------------------------------------------%------------------------ANALISIS----------------------------------------%Se procedera construyendo una funcion con los datos de entrada
%A,b,tol,kmax,X
%A = Matriz del sistema lineal
%b = Vector columna
%tol = Tolerancia del error
%X = Vector que comienza con la iteracion.
%kmax = Numero de iteraciones maximas.
%Luego se creara un vecotor obtenido Xo que cumple la funcion de base de
%datos para el vector solucion calculado en algoritmo de GAUSS-SEIDEL.
%Mediante un bucle se delimita la cantidad de iteraciones kmax.
%Anidados se encuentran dos bucles y la condicion
%El primer bucle anidado es para seleccionar las filas de A y establecer los
%valores de Xo. El segundo almacena las sumas definidas por algoritmo de
%GAUSS-SEIDEL. (Ver anexo).
%Una vez obtenido el vector resultado se procedra a determinar la
%diferencia entre la iteracion X(k-1) y Xo(k).
%Luego se procede al cambio de X por Xo para almacenar el resultado como X
%La condicion if-en permite que si la diferencia entre Xo y X es menor o
%igual que la toleracia se impriman el vector solucion en k y la cantidad
%de solucion ademas de salir.

Você também pode gostar