Sie sind auf Seite 1von 3

FIUNA – 4º Semestre – CALCULO 4 – CAPITULO 1

1.1. Para aplicar el método de Gauss y resolver un sistema lineal de n


ecuaciones con n incógnitas:
a) Explicar la condición de existencia de solución única y la técnica del
pivoteo parcial.
b) Escribir el algoritmo.
𝑡
Sea 𝐴𝑥 = 𝑏 el sistema lineal a resolver, con 𝐴 = (𝑎𝑖𝑗 ); 𝑥 = (𝑥𝑗 ) . El método de Gauss, considera la
matriz ampliada 𝑀 = (𝐴, 𝑏) y se realiza en dos etapas, diagonalización y retrosustitución.
La diagonalización con pivoteo parcial, es tomar como pivot akk, distinto de cero y el mayor de su
columna intercambiando filas, si es necesario, para k = 1, 2, …, n-1, y se realizan las operaciones sobre
(𝑘−1)
(𝑘) (𝑘−1) (𝑘−1) 𝑎𝑖𝑘
las filas para i = k + 1; 𝑎𝑖𝑗 = 𝑎𝑖𝑗 − 𝑚𝑖𝑘 𝑎𝑖𝑗 , 𝑐𝑜𝑛 𝑚𝑖𝑘 = (𝑘−1) , con lo cual se obtiene un
𝑎𝑘𝑘
sistema equivalente, pero con matriz en forma escalonada. El sistema admite solución única si 𝐴 es no
singular.
(𝑛−1)
𝑏𝑛
La retrosustitución, que es la segunda parte, se inicia con la obtención de 𝑥𝑛 = (𝑛−1) y luego
𝑎𝑛𝑛
(𝑛−1) 𝑗=𝑛 (𝑛−1)
𝑏𝑘 −∑𝑗=𝑘+1 𝑎𝑘𝑗 𝑥𝑗
sucesivamente, para k = n-1, n-2, …, 2, 1 𝑥𝑘 = (𝑛−1) .
𝑎𝑘𝑘

Un algoritmo, expresado en lenguaje MATLAB puede escribirse


function X = metGauss(A, B)
%Input - A matriz no singular n x n
% - B matriz n x 1
%Output - X matriz n x 1 que contiene la solucion de AX=B.
%Inicializacion de X y la matriz auxiliar C
[n n] = size(A);
X = zeros(n,1);
C = zeros(1,n+1);
%Matriz ampliada: Aug=[A|B]
Aug=[A B];
for p = 1 : n-1
%Pivoteo parcial para la columna p
[Y,j] = max(abs(Aug(p:n,p)));
%Intercambio de las filas p con la j
C=Aug(p,:);
Aug(p,:)=Aug(j+p-1,:);
Aug(j+p-1,:)=C;
if Aug(p,p)==0
'A es singular. La solucion no es unica'
break
end
%Proceso de eliminacion para la columna p
for k=p+1:n
m = Aug(k,p)/Aug(p,p);
Aug(k,p:n+1) = Aug(k,p:n+1) - m*Aug(p,p:n+1);
end
end
%Retrosustitucion
X(n)=Aug(n,n+1)/Aug(n,n);
for k=n-1:-1:1
X(k) = (Aug(k,n+1) - Aug(k,k+1:n)*X(k+1:n))/Aug(k,k);
end
BORRADOR – Se agradecerá cualquier observación al respecto – Héctor A. Rojas S.
FIUNA – 4º Semestre – CALCULO 4 – CAPITULO 1
1.2. Para aplicar el método de Jacobi y resolver un sistema lineal de n
ecuaciones con n incógnitas:
a) Explicar la condición suficiente de convergencia.
b) Escribir el algoritmo e indicar la(s) condición(es) de finalización de la
iteración.
𝑡
Sea 𝐴𝑥 = 𝑏 el sistema lineal a resolver, con 𝐴 = (𝑎𝑖𝑗 ); 𝑥 = (𝑥𝑗 ) . El método de Jacobi, tiene como
condición suficiente de convergencia que la matriz 𝐴 sea diagonal estrictamente dominante, es decir, que
se verifique: |𝑎𝑘𝑘 | > ∑𝑛𝑗=1|𝑎𝑘𝑗 | ∀𝑘 = 1, 𝑛.
𝑗≠𝑘
Se parte de una aproximación inicial 𝑥 (0) . Se expresa la matriz del sistema 𝐴 = (𝑎𝑖𝑗 ) como la suma de
dos matrices 𝐷 = (𝑎𝑖𝑖 ); 𝑖 = 1, 𝑛; 𝑚𝑎𝑡𝑟𝑖𝑧 𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 𝑦 𝑄 = (𝑞𝑖𝑗 ) 𝑚𝑎𝑡𝑟𝑖𝑧 𝑐𝑢𝑎𝑑𝑟𝑎𝑑𝑎 𝑐𝑜𝑛 𝑞𝑖𝑗 =
𝑎𝑖𝑗 , ∀𝑖 ≠ 𝑗 ∧ 𝑞𝑗𝑗 = 0, ∀𝑗 = 1, 𝑛. Así el sistema se escribe (𝐷 + 𝑄)𝑥 = 𝑏, con lo cual, para 𝑘 = 1, 2, ⋯, se
tienen 𝑥 (𝑘) = 𝐷−1 (𝑏 − 𝑄𝑥 (𝑘−1) ) que es la fórmula de iteración del método, que se interrumpe cuando
‖𝑥 (𝑘) − 𝑥 (𝑘−1) ‖ < 𝛿 𝑜 𝑏𝑖𝑒𝑛 ‖𝑥 (𝑘) − 𝑥 (𝑘−1) ‖/‖𝑥 (𝑘) ‖ < 𝛿, siendo delta la tolerancia prefijada y ‖ ‖ la
norma utilizada.
El algoritmo, expresado en lenguaje MATLAB puede escribirse
function [X, k]=metJacobi(A,B,P,delta, max1)
% Input - A es una matriz no singular n x n
% - B es una matriz n x 1
% - P es una matriz n x 1 que contiene los valores iniciales
% - delta es la tolerancia para P
% - max1 es el maximo numero de iteraciones
% Output - X es una matriz n x 1 que contiene la aproximacion de Jacobi a la solucion de AX = B
n = length(B);
for k=1:max1
for j=1:n
X(j)=(B(j)-A(j,[1:j-1,j+1:n])*P([1:j-1,j+1:n]))/A(j,j);
end
err=abs(norm(X'-P));
relerr=err/(norm(X)+eps);
P=X';
if (err<delta)|(relerr<delta)
break
end
end
X=X';

BORRADOR – Se agradecerá cualquier observación al respecto – Héctor A. Rojas S.


FIUNA – 4º Semestre – CALCULO 4 – CAPITULO 1
1.3. Para aplicar el método de Gauss-Seidel y resolver un sistema lineal de n
ecuaciones con n incógnitas: Explicar la condición suficiente de convergencia.
b) Escribir el algoritmo e indicar la(s) condición(es) de finalización de la
iteración.
𝑡
Sea 𝐴𝑥 = 𝑏 el sistema lineal a resolver, con 𝐴 = (𝑎𝑖𝑗 ); 𝑥 = (𝑥𝑗 ) . El método de Gauss-Seidel, tiene
como condición suficiente de convergencia que la matriz 𝐴 sea diagonal estrictamente dominante, es
decir, que se verifique: |𝑎𝑘𝑘 | > ∑𝑛𝑗=1|𝑎𝑘𝑗 | ∀𝑘 = 1, 𝑛.
𝑗≠𝑘
Se parte de una aproximación inicial 𝑥 (0) y la diferencia con el método de Jacobi, es que cada incognita
(𝑘)
𝑥𝑠 obtenida es utilizada para el cálculo de la siguiente, entonces la fórmula de iteración es:
(𝑘) (𝑘−1)
(𝑘) 𝑏𝑠 − ∑𝑘−1
𝑗=1 𝑎𝑠𝑗 𝑥𝑗 − ∑𝑛𝑗=𝑘+1 𝑎𝑠𝑗 𝑥𝑗
𝑥𝑠 =
𝑎𝑠𝑠
(𝑘) (𝑘−1)
La iteración se iterrumpe cuando ‖𝑥 − 𝑥 ‖ < 𝛿 𝑜 𝑏𝑖𝑒𝑛 ‖𝑥 (𝑘) − 𝑥 (𝑘−1) ‖/‖𝑥 (𝑘) ‖ < 𝛿, siendo delta
la tolerancia prefijada y ‖ ‖ la norma utilizada
El algoritmo, expresado en lenguaje MATLAB puede escribirse
function [x, k] = metGaussSeid(A, b, p, delta, max1)
%Input: - A matriz inversible nxn (matriz del sistema, no singular, diagonalmente dominante)
% - b matriz nx1 (terminos conocidos)
% - p matriz nx1 (punto inicial)
% - delta tolerancia para p
% - max1 maximo numero de iteraciones.
%Output: - x matriz nx1 (aproximacion a la solucion de ax = b)
n = length(b);
for k = 1 : max1
x(1) = (b(1)-A(1,2:n)*p(2:n))/A(1,1);
for j = 2 : n - 1;
x(j) = (b(j) - A(j, 1 : j-1)*x(1 : j-1) - A(j, j+1:n)*p(j+1:n))/A(j,j);
end
x(n) = (b(n) - A(n, 1: n-1)*(x(1 : n-1))')/A(n, n);
err = abs(norm(x' - p));
relerr = err/(norm(x) + eps);
p = x';
if (err <delta) | (relerr< delta)
break;
end
end
x=x';

BORRADOR – Se agradecerá cualquier observación al respecto – Héctor A. Rojas S.