Métodos Numéricos para ingeniería
SESIÓN 3:ELIMINACIÓN GAUSSIANA
Johann Carl Friedrich
Gauss, el niño prodigio
que supo de todas las
matemáticas (30 -04-1777
– Gotinga- Alemania. 3-
02 -1855).
¿PIVOTEO?
Responda lo siguiente:
¿Pivoteo simple?
¿Pivoteo parcial?
¿Pivoteo total?
LOGRO DE SESIÓN
Al finalizar la sesión, el
estudiante ejecuta operaciones
elementales filas y columna,
utiliza la eliminación gaussiana
para resolver sistemas de
ecuaciones lineales.
Eliminación Gaussiana
Es la aplicación de las operaciones elementales (filas o columnas) para transformar una
matriz a una matriz triangular, diagonal, escalonada o identidad
Operaciones elementales filas
Intercambio: el orden de dos filas puede ser cambiado
𝑓𝑖 ↔ 𝑓𝑗
Escalamiento: una fila se puede multiplicar por una constante diferente de cero
𝛼𝑥(𝑓𝑖 ) ↔ 𝑓𝑗
Reemplazo: una fila puede ser reemplazado por la suma de esa fila y otra fila
escalada
𝛼𝑥(𝑓𝑗 ) + 𝑓𝑗 ↔ 𝑓𝑖𝑙𝑎𝑗
ALGORITMO
Un algoritmo es un conjunto de instrucciones o reglas bien definidas, ordenadas y finitas
que permiten llevar a cabo una actividad mediante pasos sucesivos que no generen dudas
a quien deba hacer dicha actividad.
Estructura de control
MATLAB tiene seis operadores relacionales para comparar : < ; =< ; > ; >= ; == ; ~=
Operación lógica NOT (~); AND (&); OR ( I ).
Condicional
Uso de if, elseif, else
Evalúa una expresión y ejecuta un grupo
de instrucciones cuando la expresión es
if expresión
verdadera. Una expresión es verdadera
declaraciones
cuando su resultado no está vacío y
else
contiene solo elementos no nulos
declaraciones
(numéricos reales o lógicos). De lo
end
contrario, la expresión es falsa.
ALGORITMO
Ejemplo Realizaremos un script ingresando el número de años de una
persona e indicaremos si es mayor de edad o no.
edad = input( ‘Ingrese su edad : ‘ ) ;
if edad < 18
disp( ‘Usted es menor de edad ‘ ) ;
else
disp( ‘Usted es mayor de edad ‘ ) ;
end
Ejemplo Ingrese un número y determine si es par o impar.
n = input( ‘Ingrese un numero natural :’) ;
if mod(n,2) == 0
disp( ‘Es par !’) ;
else
disp( ‘Es impar ! ‘ ) ;
end
ALGORITMO
Ejemplo Realizaremos un script ingresando una letra y determinamos si es una vocal o no. Tener en
cuenta que para ingresar por teclado una cadena debemos aumentar ‘s’ para la instrucción
input.
n = input( 'Ingrese una letra: ','s');
if (n == 'a'||n == 'e'|| n =='i'|| n =='o'||n =='u')
disp ( 'Es vocal ! ' ) ;
else
disp ( 'No es vocal !' ) ;
end
Ejemplo Comparaciones entre dos número. Ingrese dos número y diga quien es el mayor y cual es el
menor.
a = input( ‘Ingrese el primer numero : ‘) ;
b = input( ‘Ingrese el segundo numero : ‘) ;
if a > b
fprintf ( ‘El mayor es : %.2f \n ‘ ,a) ;
fprintf ( ’El menor es : %.2f \n ’ ,b) ;
elseif a < b
fprintf ( ’El mayor es : %.2f \n ’ ,b) ;
fprintf ( ’El menor es : %.2f \n ’ ,a) ;
else
disp( ’Los números ingresados son iguales ’ ) ;
end
ALGORITMO
ejecuta un grupo de instrucciones en un bucle un número especificado de veces, evalúes,
tiene una de las siguientes formas:
Uso del for
for índice = valores
declaraciones
end
Ejemplo Imprime números pares del 1 a 10.
for i = 1:10
if mod( i ,2) == 0
disp( i ) ;
end
end
ALGORITMO
Ejemplo Imprime los divisores de un numero natural que ingreses por teclado.
N = input( ’ Ingrese un numero natural : ’ ) ;
disp( ’Los divisores son : ’ ) ;
for i =1:N
if mod(N, i ) == 0
disp( i ) ;
end
end
Ejemplo
function z = divisores (N)
% Esta función me retorna un arreglo donde sus elementos son los %
% divisores del argumento
% El argumento es un numero natural
z=[];
for i =1:N
if mod(N, i ) == 0
z=[z i];
end
end
end
Eliminación Gaussiana con sustitución hacia atrás
6𝑥1 − 2𝑥2 + 2𝑥3 + 4𝑥4 = 12 6 −2 2 4 𝑥1 12
−4𝑥2 + 2𝑥3 + 2𝑥4 = 10 0 −4 2 2 𝑥2 = 10
2𝑥3 − 5𝑥4 = −9 0 0 2 −5 𝑥3 −9
−3𝑥4 = −3 0 0 0 −3 𝑥4 −3
𝐴 𝑋 𝐵
>> A=[6 -2 2 4;0 -4 2 2;0 0 2 -5 ;0 0 0 -3 ]
>> B=[12;10;-9;-3]
>> X=[0;0;0;0]
sustitución hacia atrás
>> 𝑥𝟒 =B(4)/A(4,4) 𝑥4 = 1
>> 𝑥𝟑 =(B(3)-A(3,4)*𝑥4 )/A(3,3) 𝑥3 = −2
>> 𝑥𝟐 =(B(2) - A(2,3)*𝑥3 - A(2,4)*𝑥4 )/A(2,2) 𝑥2 = −3
>> 𝑥1 =(B(1) -A(1,2)*𝑥2 -A(1,3)*𝑥3 -A(1,4)*𝑥4 )/A(1,1) 𝑥1 = 1
Si 𝑘 = 𝑛 − 1: −1: 1 𝑥𝑘 = 𝐵 𝑘 − 𝐴 𝑘, 𝑘 + 1: 𝑛 ∗ 𝑥(𝑘 + 1: 𝑛 /𝐴(𝑘, 𝑘))
Eliminación Gaussiana con sustitución hacia atrás
Programa en MATLAB
function X=backsub(A,B)% sustitución regresiva
%Datos
%A es una matriz triangular superior invertible de orden nxn
%B es una matriz de orden nx1
%Resultados
% X la solución del sistema lineal AX=B
%1.- Cáculo de la dimensión de B e inicialiización de X
n=length(B);% indica el numero de filas de la matriz B
X=zeros(n,1); % matriz ceros de orden nx1
X(n)=B(n)/A(n,n);% despeja la última variable
for k=n-1:-1:1
X(k)=(B(k)-A(k,k+1:n)*X(k+1:n))/A(k,k);
end
>> A=[6 -2 2 4;0 -4 2 2;0 0 2 -5 ;0 0 0 -3];
>> B=[12;10;-9;-3];
>> backsub(A,B)
ans =
1
-3
-2
1
Eliminación Gaussiana
sustitución progresiva con sustitución hacia adelante
−15 0 0 𝑥1 −1
−15𝑥1 = −1 −7 −1 0 𝑥2 = −2
−7𝑥1 − 𝑥2 = −2 5 1 1 𝑥3 3
5𝑥1 + 𝑥2 + 𝑥3 = 3 𝐴 𝑋 𝐵
>> A=[-15 0 0;-7 -1 0;5 1 1 ]
>> B=[-1;-2;3]
>> X=[0;0;0]
>> 𝑥1 =B(1)/A(1,1) 𝑥1 = 0.0667
>> 𝑥2 =(B(2)-A(2,1)*𝑥1 )/A(2,2) 𝑥2 = 1.5333
>> 𝑥3 =(B(3)-A(3,1)*𝑥1 -A(3,2)*𝑥2 )/A(3,3) 𝑥3 = 1.1333
𝑘 = 2: 𝑛 𝑥 𝑘 = (𝐵 𝑘 − 𝐴 𝑘, 1: 𝑘 − 1 ∗ 𝑥(1: 𝑘 − 1))/𝐴(𝑘, 𝑘)
Eliminación Gaussiana con sustitución hacia adelante
Programa en MATLAB
function X=forsub(A,B)% sustitución progresiva
%Datos
%A es una matriz triangular superior invertible de orden nxn
%B es una matriz de orden nx1
%Resultados
% X la solución del sistema lineal AX=B
%1.- Cáculo de la dimensión de B e inicialiización de X
n=length(B);% indica el numero de filas de la matriz B
X=zeros(n,1); % matriz ceros de orden nx1
X(1)=B(1)/A(1,1);% despeja la ultima variable
for k=2:n
X(k)=(B(k)-A(k,1:k-1)*X(1:k-1))/A(k,k);
end
>> A=[-15 0 0;-7 -1 0;5 1 1];
>> B=[-1;-2;3];
>> forsub(A,B)
ans =
0.0667
1.5333
1.1333
Eliminación Gaussiana
6𝑥1 − 2𝑥2 + 2𝑥3 + 4𝑥4 = 12
12𝑥1 − 8𝑥2 + 6𝑥3 + 10𝑥4 = 34
3𝑥1 − 13𝑥2 + 9𝑥3 + 3𝑥4 = 27
−6𝑥1 + 4𝑥2 + 𝑥3 − 18𝑥4 = −38
>> A=[6 -2 2 4 12;12 -8 6 10 34;3 -13 9 3 27;-6 4 1 -18 -38] Matriz aumentada
Primera columna A=
>> A(2,:)=A(2,:)-2*A(1,:) 6 -2 2 4 12
0 -4 2 2 10
>> A(3,:)=A(3,:)-0.5*A(1,:) 0 -12 8 1 21
>> A(4,:)=A(4,:)+A(1,:) 0 2 3 -14 -26
segunda columna A=
6 -2 2 4 12 6𝑥1 − 2𝑥2 + 2𝑥3 + 4𝑥4 = 12
>> A(3,:)=A(3,:)-3*A(2,:) −4𝑥2 + 2𝑥3 + 2𝑥4 = 10
0 -4 2 2 10
>> A(4,:)=A(4,:)+0.5*A(2,:) 0 0 2 -5 -9 2𝑥3 − 5𝑥4 = −9
0 0 4 -13 -21 −3𝑥4 = −3
tercera columna
A=
>> A(4,:)=A(4,:)-2*A(3,:) 6 -2 2 4 12
0 -4 2 2 10
0 0 2 -5 -9
0 0 0 -3 -3
Eliminación Gaussiana
El sistema triangular superior es equivalente al sistema original (las soluciones de ambos
sistemas coinciden). Sin embargo, este sistema es fácilmente resoluble aplicando el
algoritmo de sustitución regresiva (sustitución hacia atrás).
6𝑥1 − 2𝑥2 + 2𝑥3 + 4𝑥4 = 12 6𝑥1 − 2𝑥2 + 2𝑥3 + 4𝑥4 = 12
12𝑥1 − 8𝑥2 + 6𝑥3 + 10𝑥4 = 34 ≈ −4𝑥2 + 2𝑥3 + 2𝑥4 = 10
3𝑥1 − 13𝑥2 + 9𝑥3 + 3𝑥4 = 27 2𝑥3 − 5𝑥4 = −9
−6𝑥1 + 4𝑥2 + 𝑥3 − 18𝑥4 = −38 −3𝑥4 = −3
sustitución hacia atrás
>> 𝑥4 =A(4,5)/A(4,4) 𝑥4 = 1
>> 𝑥3 =(A(3,5)-A(3,4)*𝑥4 )/A(3,3) 𝑥3 = −2
>> 𝑥2 =(A(2,5) - A(2,4)*𝑥4 - A(2,3)*𝑥3 )/A(2,2) 𝑥2 = −3
>> 𝑥1 =(A(1,5)-A(1,4)*𝑥4 -A(1,3)*𝑥3 -A(1,2)*𝑥2 )/A(1,1) 𝑥1 = 1
Eliminación Gaussiana
𝑥1 + 2𝑥2 − 𝑥3 = 2 1 2 1 x1 2
−2𝑥1 + 0𝑥2 + 𝑥3 = 1 2 0 1 x2 1
5𝑥1 + 𝑥2 + 𝑥3 = 3 5 1 1 x 3
3
>> A=[1 2 -1 2;-2 0 1 1;5 1 1 3]
Tercera columna A=
6 3 0 5
>>A(1,:)=A(1,:)+A(3,:)
-7 -1 0 -2
>> A(2,:)=A(2,:)-A(3,:) 5 1 1 3
Segunda columna A= −15𝑥1 = −1
-15 0 0 -1
−7𝑥1 − 𝑥2 = −2
>> A(1,:)=A(1,:)+3*A(2,:) -7 -1 0 -2
5 1 1 3 5𝑥1 + 𝑥2 + 𝑥3 = 3
Eliminación Gaussiana con sustitución hacia adelante
𝑥1 + 2𝑥2 − 𝑥3 = 2 −15𝑥1 = −1
−2𝑥1 + 0𝑥2 + 𝑥3 = 1 ≈ −7𝑥1 − 𝑥2 = −2
5𝑥1 + 𝑥2 + 𝑥3 = 3 5𝑥1 + 𝑥2 + 𝑥3 = 3
sustitución progresiva
>> 𝑥1 =A(1,4)/A(1,1) 𝑥1 = 0.0667
>> 𝑥2 =(A(2,4)-A(2,1)*𝑥1 )/A(2,2) 𝑥2 = 1.5333
>> 𝑥3 =(A(3,4)-A(3,1)*𝑥1 -A(3,2)*𝑥2 )/A(3,3) 𝑥3 = 1.1333
Inversa: Método de Gauss Jordan
Ilustraremos el método de Gauss Jordan aplicando procedimiento a la matriz
1 1 2
𝐴= 0 2 1
0 0 3
Se define la matriz aumentada 𝐴 = 𝐴: 𝐼
1 1 2 1 0 0
𝐴𝐼 = 0 2 1 0 1 0
0 0 3 0 0 1
Se realiza operaciones elementales hasta obtener 𝐼: 𝐵
Luego la matriz 𝐵 = 𝐴−1
Inversa: Método de Gauss-Jordan
>> A=[1 1 2 1 0 0;0 2 1 0 1 0;0 0 3 0 0 1] >> A(2,:)=(A(2,2))^-1*A(2,:)
A= >> A(3,:)=(A(3,3))^-1*A(3,:)
1 1 2 1 0 0
0 2 1 0 1 0 A=
0 0 3 0 0 1 1 0 0 1 -0.5000 -0.5000
0 1 0 0 0.5000 -0.1667
>> A(1,:)=A(1,:)-A(1,3)/A(3,3)*A(3,:) 0 0 1 0 0 0.3333
>> A(2,:)=A(2,:)-A(2,3)/A(3,3)*A(3,:)
A=
1 1 0 1 0 -0.6667
0 2 0 0 1 -0.3333 1 −1/2 −1/2
0 0 3 0 0 1 𝐴−1 = 0 1/2 1/6
0 0 1/3
>> A(1,:)=A(1,:)-A(1,2)/A(2,2)*A(2,:)
A=
1 0 0 1 -0.5000 -0.5000
0 2 0 0 1 -0.3333
0 0 3 0 0 1
REFERENCIAS BIBLIOGRAFICAS
N° CÓDIGO AUTOR TITULO AÑO
519.4 MATH MATHEWS, J. Métodos numéricos con MATLAB. 2000
1
519.4 AVEN AVENDAÑO, J. Matlab: Una introducción a los métodos 2005
2
numéricos
09/09/2019 20