Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
err=tol+1;
iter=1;
Resumen:
En el siguiente proyecto se realiza un programa en el software Matlab para la solución de una distribución de calor en una
placa plana de espesor constante la cual es cuadrada, para esto se desarrolla un código en el cual se utilizara el método de
Gauss Seidel para resolver el sistema de ecuaciones que encontraremos.
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
Existen varias métodos numéricos para la resolución de problemas de ingeniería, para este caso se utilizara el método de Gauss
Seidel, el cual permite obtener una solución aproximada fijando cierta tolerancia.
Revisión Teórica:
Este método se diferencia al de Jacobi en que en la etapa (k + 1) − ésima los valores disponibles de x (k+1) se utilizan para
actualizar la solución. La división de A = M − N correspondiente es:
M = D − L, N = U,
Donde D es la matriz diagonal principal de A, L es una matriz triangular inferior y U es una matriz triangular superior. De esta
forma el método de Gauss-Seidel escrito en forma matricial es dado por:
(D − L) x (k+1) = Mx (k+1) = Nx (k) + b = Ux (k) + b
O de forma equivalente:
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
Para cada:
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
En Este método, estamos asumiendo que los componentes del vector x (k+1) son actualizados hacia adelante. Pero también
podemos formular otra versión donde los componentes del vector de aproximación son actualizados hacia atrás. La forma
matricial de esta versión es la siguiente:
M = D − U, N = L.
De esta forma el método es dado por:
(D − U) x (k+1) = Mx (k+1) = Nx (k) + b = Lx (k) + b
O de forma equivalente:
x (k+1) = (D − U) −1Lx (k) + (D − U) −1 b
err=tol+1;
iter=1;
2. METODOLOGÍA
1
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
Aplicación y Obtencion de la
Resultados y
comparación de matriz de
graficas
resultados. coeficientes.
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
err=tol+1;
iter=1;
err=tol+1;
iter=1;
Resultados:
- Luego de la resolución del problema se comparó los resultados obtenidos por el método de Gauss Seidel con un
resultado exacto obtenido por el método convencional, se observó que los valores no son distantes entre sí ya que el
programa tiene la opción de variar la precisión o tolerancia.
- Se resolvió el problema para un número determinado de divisiones y otros datos propios del problema.
- m: número de divisiones : 3
- k: conductividad térmica : 0.5 [w/mK]
ANEXOS:
Función Gauss-Seidel:
-------------------------------------------------------------------------------------------------------------------------------------------------
%Para un sistema de la forma 'Ax=b'
%imax: Número máxima de iteraciones en caso de
%que el método no converja
%tol: tolerancia deseada
function x=gseidel(A,b,tol,imax)
n=max(size(A)); % Obtenemos de la matriz A
% el número de ecuaiones
% y por ende de incognitas.
c=diag(A); % Almacenamos en 'c' los elementos
% de la diagonal principal.
d=1;
i=1;
while (d~=0)&&(i<n) % revisamos si en la diagonal principal 'c'
d=c(i,1)*c(i+1,1); % existe algún elemento igual a 0.
i=i+1; % En caso de que lo haya
end % salir del bucle y d=0.
err=tol+1;
iter=1;
err=tol+1;
iter=1;
err=tol+1;
iter=1;
err=tol+1;
iter=1;
5. REFERENCIAS
[1] Rosa Elena Scheid, Francis Di Constanzo. Métodos numéricos “Solución de sistemas de ecuaciones lineales”.
Schaum. 2011.