Вы находитесь на странице: 1из 15

Cristian Amador Loli Prudencio

TEORÍA DE ERRORES Y ARITMÉTICA DE COMPUTADORA.


SOLUCIÓN DE SISTEMAS LINEALES: MÉTODOS DIRECTOS.
SOLUCIÓN DE SISTEMAS LINEALES: MÉTODOS ITERATIVOS.
SOLUCIÓN DE ECUACIONES NO LINEALES.
INTERPOLACIÓN POLINÓMICA.
DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA.
ECUACIONES DIFERENCIALES ORDINARIAS CON VALOR INICIAL.
ECUACIONES DIFERENCIALES ORDINARIAS CON VALOR FRONTERA.
DIFERENCIAS FINITAS EN ECUACIONES DIFERENCIALES PARCIALES.
Cristian Amador Loli Prudencio

Capítulo 2
SOLUCIÓN DE SISTEMAS LINEALES: MÉTODOS DIRECTOS
Estudiaremos el Método de Gauss del ya ensalzado ‘príncipe de las
matemáticas’, Carl Friedrich Gauss (1777-1855), quien sistematizó
este proceso de solución de sistemas lineales, y lo incluyó en su artículo
de 1811 titulado ‘Disquisitio de Elementis Ellipticis Palladis ex
oppositionibus annorum 1803, 1804, 1805, 1807, 1808, 1809’. Wilhelm
Jordan (1842-1899), ingeniero geodésico alemán, desarrolló el Método
de Gauss-Jordan, profundizó el método de eliminación y publicó su
trabajo en 1895 en su libro ‘Handbuch der Vermessungskunde’.

En la forma estándar, un sistema general de n ecuaciones con n incógnitas, x1 , x2 ,..., xn , se presenta


como:

(1)

Los elementos aij y bi son números reales fijados. El sistema de ecuaciones (1) se puede escribir,
empleando una muy útil representación matricial, como:

 a11 a12 a13 ... a1n  x1   b1 


    
 a21 a22 a23 ... a2 n  x2   b2 
 a31 a32 a33 ... a3n  x3    b3  (2)
    
    
a ... ann    
 n1 an 2 an3  xn   bn 

Entonces podemos denotar estas matrices por A, x y b de forma que la ecuación se reduce
simplemente a:
Ax = b (3)

Ahora bien, ¿cómo resolvemos este problema? La respuesta, pasa por el uso del método de
Eliminación Gaussiana, el cual estudiaremos, sin significar que no existan otras alternativas, pero
esta es una de las que requiere menos operaciones aritméticas, lo cual lo califica como un algoritmo
de buen desempeño, y por ello muy apreciado y utilizado.

Página 2
Cristian Amador Loli Prudencio

SISTEMAS FÁCILES DE RESOLVER

Sistema Diagonal

Analizaremos previamente un sistema que sea fácil de resolver. Por ejemplo, supongamos que la
matriz A de nxn presenta estructura diagonal, es decir, todos los componentes distintos de cero se
encuentran sobre la diagonal principal. El sistema de ecuaciones (2) toma por tanto la forma:

 a11 0 0 ... 0   x1   b1 
0 a 0 ... 0   x2  b2 
 22

0 0 a33 ... 0   x3    b3  (4)


    
    
 0 0 0 ... ann   xn  bn 
En este caso el sistema se reduce a n ecuaciones simples y la solución es:

(5)

Sistema Triangular

Triangular Inferior
Continuando con la búsqueda de sistemas con soluciones fáciles, supongamos ahora que A tiene una
estructura triangular inferior, es decir, todos los elementos de A distintos de cero se sitúan bajo la
diagonal principal:
 a11 0 0 ... 0   x1   b1 
a ... 0   x2  b2 
 21 a22 0
 a31 a32 a33 ... 0   x3    b3  (6)
    
    
 an1 an 2 an 3 ... ann   xn  bn 

Es fácil ver que el valor de x1 se obtiene directamente a partir de la primera ecuación. Sustituyendo
el valor conocido de x1 en la segunda ecuación es posible obtener el valor de x2. Procediendo de la
misma forma para el resto de las ecuaciones, es posible obtener todos los valores x1 , x2, x3, ..., xn
uno tras otro y en ese orden. El algoritmo formal para encontrar la solución se denomina
sustitución progresiva (hacia adelante) y se puede expresar como:

(7)

Página 3
Cristian Amador Loli Prudencio

Triangular Superior
Se puede emplear el mismo razonamiento para el caso en que la estructura de la matriz A sea
triangular superior. En este caso el sistema matricial adopta la forma:

 a11 a12 a13 ... a1n   x1   b1 


0 a a23 ... a2 n   x2  b2 
 22

0 0 a33 ... a3n   x3    b3  (8)


    
    
 0 0 0 ... ann   xn  bn 

y es posible obtener las soluciones en el orden xn, xn-1, ..., x1, empleando en este caso una
modificación del algoritmo expresado por la ecuación (7) y que denominados algoritmo de
sustitución regresiva (hacia atrás):

(9)

Como es lógico, los métodos descritos se pueden aplicar a todos aquellos sistemas que se pueden
convertir en un sistema triangular permutando filas y columnas de forma adecuada, este proceso
ordenado se llama Eliminación Gaussiana.

ELIMINACIÓN GAUSSIANA

Es la aplicación de las Operaciones Elementales (Fila o Columna) para transformar una matriz a una
matriz más manejable, es decir a una matriz triangular, a una matriz diagonal, a una matriz
escalonada, a una matriz identidad.

Operaciones Elementales Fila

i) Intercambio: el orden de dos filas puede ser cambiado.


fila
i fila
j

ii) Escalamiento: una fila se puede multiplicar por una constante diferente de cero.
fila
i fila
i

iii) Reemplazo: una fila puede ser reemplazada por la suma de esa fila y otra fila escalada.

i

fila  j
filafila
i

Operaciones Elementales Columna

De forma análoga a las anteriores operaciones pero esta vez se realizan con columnas.

i) Intercambio: col
i col
j

Página 4
Cristian Amador Loli Prudencio

ii) Escalamiento: col


i col
i

i
iii) Reemplazo: col j
colcol
i

ELIMINACIÓN GAUSSIANA CON SUSTITUCIÓN HACIA ÁTRAS

El sistema Ax = b, puede ser almacenado en un arreglo de n x (n + 1); donde los coeficientes del
vector b se almacenan en la columna (n + 1) del arreglo. Esta nueva matriz, es conocida como
matriz aumentada y se la denota como [A, b]:
a11 a12 ... a1n b1 
 
a21 a22 ... a2n b2 
 . . . .
A,b 
 . . . .
 . . . .
 
a 
 n1 an2 ... ann bn

Arranquemos ya de nuestra matriz aumentada [A, b], que ahora denotamos [A(1), b(1)], y a
continuación explicitamos tras haber colocado el superíndice (1) a los coeficientes y a los términos
independientes, para indicar que estamos ante el primero de una serie:
 a11(1) a12(1) a13(1) ... a1(1)n b1(1) 
 (1) (1) (1) 
 a21 a22 a23 ... a2(1)n b2(1) 
1 1
 A ,b  =  a31
  
(1) (1)
a32 (1)
a33 ... a3(1)n b3(1)  (10)

 
 a (1) an(1)2 an(1)3 (1) (1) 
 n1 ... ann bn 

En la primera etapa construiremos [A(2), b(2)], denotada con el superíndice (2), que se obtiene del
sistema anterior tras eliminar la incógnita x1 de todas las ecuaciones salvo de la primera, lo cual se
traduce en que la matriz aumentada tenga en la primera columna debajo de a11(1) todos ceros. Para
ello, utilizamos las operaciones elementales fila siguientes, con la simbología fácilmente entendible:
ai(1)
Fi  m F  Fi , con mi1   (1) , i  2,3,..., n
(1) (1) (2) 1
i1 1 (11)
a11
Implícitamente se supone a11  0 . Obviamente el sistema A(2)x = b(2) adopta la forma:
(1)

 a11(1) a12(1) a13(1) ... a1(1)n b1(1) 


 (2) (2) 
 0 a22 a23 ... a2(2)n b2(2) 
 A  ,b   =  0
2 2 (2)
a32 (2)
a33 ... a3(2)
n b3
(2) 
(12)
   
 
 0 an(2)2 an(2)3 (2) (2) 
 ... ann bn 
En la segunda etapa eliminamos la incógnita x2 desde la tercera ecuación a la n-ésima ecuación:
ai(2)
m F  Fi , con mi 2   (2) , i  3, 4,..., n
(2) (2) (3) 2
Fi i2 1 (13)
a22

Página 5
Cristian Amador Loli Prudencio

Nuevamente percátese de que a22  0 . Aparece el sistema A(3)x = b(3) con la siguiente forma:
(2)

 a11(1) a12(1) a13(1) ... a1(1)n b1(1) 


 (2) (2) 
 0 a22 a23 ... a2(2)n b2(2) 
 3  3
 A ,b  =  0
   0 (3)
a33 ... a3(3)n b3(3)  (14)

 
 0 an(3)3 (3) (3) 
 0 ... ann bn 

Siguiendo este protocolo, llegamos por fin al sistema triangular superior A(n)x = b(n),

 a11(1) a12(1) a13(1) ... a1(1)n b1(1) 


 (2) (2) 
 0 a22 a23 ... a2(2)n b2(2) 
 n  n
 A ,b  =  0
   0 (3)
a33 ... a3(3)n b3(3)  (15)

 
 0 (n) (n) 
 0 0 ... ann bn 
dispuesto para ser resuelto por Sustitución Regresiva (hacia atrás).

De forma esquemática, a través de n – 1 etapas se ha construido la sucesión de n sistemas


equivalentes

A  x  b   A  x  b   ...  A
n 1
x  b
n 1
 A  x  b  ,
1 1 2 2 n n

donde el primero es el sistema de partida, el último es el sistema triangular superior resultante, y


donde, para q  1, 2,..., n  1 , el paso del sistema A  x  b  al siguiente A  x  b  se realiza
q q q 1 q 1

manteniendo intactas las q primeras ecuaciones y modificando las restantes de acuerdo con las
expresiones
aiq( q )
, con miq   , i  q  1,..., n
( q 1)
Fi (q)
 miq F q
(q)
 Fi (q)
(16)
aqq
Para q  1, 2,..., n  1 , la ecuación q-ésima del sistema A  x  b
q q (q)
se llama ecuación pivotal, aqq es
el elemento pivote, y a los escalares miq se les llama multiplicadores.

¿Y si apareciese un pivote nulo?


Comenzamos preguntándonos lo que haríamos si en el proceso general de eliminación gaussiana
descrito antes apareciese un pivote nulo. La respuesta evidente es que permutaríamos la ecuación
pivotal por alguna situada más abajo, quizá por la primera que encontremos que salve el
contratiempo y permita continuar la eliminación de incógnitas. Nótese que siempre daremos con una
tal ecuación, puesto que en caso contrario la matriz de coeficientes habría de ser singular (¿por
qué?), y no es eso lo que supusimos al comienzo. Obviamente el intercambio de ecuaciones es una
operación elemental, que no modifica la solución del sistema.
Ejemplo 1
Plantemos la resolución del siguiente sistema de ecuaciones, con eliminación gaussiana con
sustitución regresiva:

Página 6
Cristian Amador Loli Prudencio

 6 
pivote 2 2 4 12
m 12 
6 2 12 
8 6 10 34
21
 
1  
m  3
31 6  3 139 3 27
 
2
m
416 

6
1
 6 4 118 
38

Primera etapa: Tras la primera etapa,



6 2 2 4 12

0 4 2 2 10
 
m 4 
32
12
3
0 128 1 21
1 
m  2
2 2 3 14
42 4 0 
26

Segunda etapa: Tras la segunda etapa,


6 2 2 4 12 
0 4 2 2 10 

0 0 2 5 9 
 
m43 = 4 / 2 = 2 0 0 4 13 21

Tercera etapa: Tras la última etapa,


6 2 2 412 
0 4 2 2 10 

0 0 2 5 9 
 
0 0 0 3 3
Con lo cual se tiene el sistema triangular superior:

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. La solución del sistema de ecuaciones resulta ser:

Página 7
Cristian Amador Loli Prudencio

ELIMINACIÓN GAUSSIANA CON SUSTITUCIÓN HACIA ADELANTE

El sistema Ax = b, expresado en su matriz aumentada [A, b]:


a11 a12 ... a1n b1 
 
a21 a22 ... a2n b2 
 . . . .
A,b 
 . . . .
 . . . .
 
a 
 n1 an2 ... ann bn 
Igual que el método anterior arranquemos de nuestra matriz aumentada [A, b], denotada [A(1), b(1)]:
 a11(1) a12(1) a13(1) ... a1(1)n b1(1) 
 (1) (1) (1) 
 a21 a22 a23 ... a2(1)n b2(1) 
1 1
 A ,b  =  a31
  
(1) (1)
a32 (1)
a33 ... a3(1)n b3(1)  (17)

 
 a (1) an(1)2 an(1)3 (1) (1) 
 n1 ... ann bn 

En la primera etapa construiremos [A(2), b(2)], que se obtiene del sistema anterior tras eliminar la
incógnita xn de todas las ecuaciones salvo de la última, lo cual se traduce en que la matriz aumentada
(1)
tenga en la última columna encima de ann todos ceros. Para ello, utilizamos las operaciones
elementales fila siguientes, con la simbología fácilmente entendible:
ain(1)
Fi  min F  Fi , con min   , i  1, 2,..., n  1
(1) (1) (2)
n (1) (18)
ann
Implícitamente se supone ann  0 . Obviamente el sistema A(2)x = b(2) adopta la forma:
(1)

 a11(2) a12(2) a13(2) ... 0 b1(2) 


 (2) (2) (2) 
 a21 a22 a23 ... 0 b2(2) 
 2  2
 A ,b  =  a31
  
(2) (2)
a32 (2)
a33 ... 0 b3(2)  (19)

 
 a (1) an(1)2 an(1)3 (1) (1) 
 n1 ... ann bn 

Siguiendo este protocolo, llegamos por fin al sistema triangular inferior A(n)x = b(n),

 a11( n ) 0 0 ... 0b1( n ) 


 ( n 1) ( n 1) 
 a21 a22 0 ... 0 b2( n 1) 
 A  ,b   =  a31
n n ( n  2) ( n  2)
a32 ( n  2)
a33 ... 0 b3( n  2)  (20)
   
 
 a (1) an(1)2 an(1)3 (1) (1) 
 n1 ... ann bn 
dispuesto para ser resuelto por Sustitución Progresiva (hacia adelante).

Página 8
Cristian Amador Loli Prudencio

Ejemplo 2
Plantemos la resolución del siguiente sistema de ecuaciones, con eliminación gaussiana con
sustitución progresiva:

m14 = 2/9 6 2 12 
2 4
m24 = 5/9 12 8 6 10 34 
m34 = 1/ 6 3 13 9 3 27 
 
pivote   6 4 1 18 38

Primera etapa: Tras la primera etapa,


40 14 10 20 0 32 
m13 =  3 
165 9 9 9 
 
m23 = 
108  26 
52 59 0 116 
165 3 9 9 9 
 
Pivote  2 37 55 0 62 

 3 6 3 
 6 18 38 
 4 1
Segunda etapa: Tras la segunda etapa,
310  46 62 0 0 16 
m13 =   11 
502 33 11 
 
Pivote   398 502 0 0 104 

 55 165 55 
 
2 
37 55 0 62 
 3 6 3 
 6 4 18 38 
 1
Tercera etapa: Tras la última etapa,
 72 0 0 072 
  251 251 

 
 398 502 0 0

104 
 55 165 55 
 
2 
37 55 0 62 
 3 6 3 
 6 18 38 
 4 1
1
 
3
Luego, aplicando el algoritmo de sustitución progresiva: x   
 2 
 
1

Página 9
Cristian Amador Loli Prudencio

PIVOTEO EN LA ELIMINACIÓN GAUSSIANA


Sin embargo, los algoritmos que acabamos de describir pueden dar lugar a resultados erróneos
fácilmente. Por ejemplo, analicemos el siguiente sistema de ecuaciones, en el que є es un número
muy pequeño pero distinto de cero:

Al aplicar el algoritmo gaussiano se obtiene el siguiente sistema triangular superior:

y la solución es:
 2 1
 2
x 
 1 1
 x  1  x  1
 1 2

En el computador, si є es suficientemente pequeño, los términos 2 1 y 1 1 se computarán


como un mismo número, por lo que x2  1 y x1  0 . Sin embargo, la solución correcta es:
 1 2 
 x2  1   1

x  1  1
 1 1 
Entonces la solución calculada es exacta para x2 pero extremadamente inexacta para x1.

El problema anterior no radica en la pequeñez del término aii, sino en su pequeñez relativa respecto
de los otros elementos de su fila. La conclusión que podemos extraer es que un buen algoritmo debe
incluir el intercambio adecuado de ecuaciones cuando las circunstancias así lo exijan. Un algoritmo
que cumple este requisito es el denominado eliminación gaussiana con pivoteo de filas escaladas
(pivoteo total).

Así pues, mostramos 3 pivoteos:


- Pivoteo simple. Consiste en permutar la ecuación pivotal por la primera que encontremos que
tenga elemento pivot distinto de cero de la diagonal para abajo.
- Pivoteo parcial (máximo de columna). Consiste en permutar la ecuación pivotal por la primera
que encontremos que tenga elemento pivot distinto de cero y más grande en valor absoluto.
arj  máx aij
j i  n

- Pivoteo total (escalado de columna). Consiste en permutar la ecuación pivotal por la primera
que encontremos que tenga elemento pivot distinto de cero y más grande en valor absoluto
escalado.
aij
arj  máx , donde si  máx aik
j i  n si ik n

Página 10
Cristian Amador Loli Prudencio

SUSTITUCIÓN RECURSIVA

Comenzaremos resolviendo un sistema triangular inferior, modificando posteriormente el programa


para resolver sistemas triangulares superiores.

PROGRAMAS

Crear el programa trilower.m que resuelve un sistema triangular inferior Ax=b utilizando el
algoritmo siguiente:
Entrada: matriz triangular A=(aij) y vector b
Salida: vector x
Paso 1 Verificar que el sistema es triangular inferior
Paso 2 Obtener el orden del sistema n
Paso 3 Para k = 1 .. n (orden del sistema) repetir pasos 4-5
Paso 4 Verificar que el elemento diagonal no es nulo
k1
bk  akjxj
Paso 5 Hacer j1
xk 
akk
Se comprobará el correcto funcionamiento de Ax=b. Resolver un sistema triangular aleatorio
de orden 3, reflejando los resultados obtenidos.
Solución:

function x= trilower(A,b);
% Función que resuelve un sistema triangular inferior
if any(any(A-tril(A))
error('La matriz no es triangular inferior');
end
[n,m]=size(A);
if n~=m,error('La matriz no es cuadrada');end
[n,p]=size(b);
if n~=m | p~=1,error('No coinciden dimensiones');end
x=zeros(n,1);
for i=1:n %sustitución hacia adelante
if A(i,i)==0,error('Matriz Singular'),end
x(i)=(b(i)-A(i,1:i-1)*x(1:i-1))/A(i,i);
end

Y para crear, resolver el sistema y comprobar los resultados

>> rand('state',sum(100*clock));
>> A=tril(rand(3));b=rand(3,1);
>> x=trilower(A,b)
>> % comprobacion
>> xv=A\b

1. Crear el programa triupper.m que resuelve un sistema triangular superior utilizando el


algoritmo siguiente:

Entrada: matriz triangular A=(aij) y vector b


Salida: vector x
Paso 1 Verificar que el sistema es triangular superior
Paso 2 Obtener el orden del sistema n

Página 11
Cristian Amador Loli Prudencio

Paso 3 Para k = n .. 1 (orden del sistema) repetir pasos 4-5


Paso 4 Verificar que el elemento diagonal no es nulo
n
bk akjxj
Paso 5 Hacer
xk 
jk1 
akk

Se comprobará el correcto funcionamiento de Ax=b. Resolver un sistema triangular aleatorio
de orden 3, reflejando los resultados obtenidos.
Solución:

function x= triupper(A,b);
% Función que resuelve un sistema triangular superior
if any(any(A-triu(A)));error('La matriz no es triangular superior');end
[n,m]=size(A); if n~=m;error('La matriz no es cuadrada');end
[n,p]=size(b); if n~=m | p~=1;error('No coinciden dimensiones');end
x=zeros(n,1);
for i=n:-1:1 %sustitución hacia atrás
if A(i,i)==0;error('Matriz Singular'),end
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end

Si colocamos los multiplicadores utilizados al transformar el sistema en una matriz


triangular inferior unitaria (L) ocupando cada uno de ellos la posición del cero que
contribuyó a producir, obtenemos la siguiente matriz:

Por otra parte, la matriz triangular superior (U) formada por los coeficientes resultantes
tras aplicar el algoritmo de Gauss (ecuación 61), es:

Estas dos matrices nos dan la factorización LU de la matriz inicial de coeficientes, A,


expresada por la ecuación (58):

Página 12
Cristian Amador Loli Prudencio

Figure: Implementación del algoritmo de eliminación


gaussiana.

En la figura (12) se muestra un algoritmo en pseudocódigo para llevar a la práctica el


proceso básico de eliminación gaussiana que acabamos de describir. En este algoritmo
se supone que todos los elementos pivote son distintos de cero.

Método de Gauss-Jordan

Como hemos visto, el método de Gauss transforma la matriz de coeficientes en una


matriz triangular superior. El método de Gauss-Jordan continúa el proceso de

transformación hasta obtener una matriz diagonal unitaria (aij=0 para cualquier ).

Veamos el método de Gauss-Jordan siguiendo con el ejemplo empleado en el apartado


anterior. Aplicando el método de Gauss habíamos llegado a la siguiente ecuación:

Página 13
Cristian Amador Loli Prudencio

Ahora seguiremos un procedimiento similar al empleado en el método de Gauss.

Tomaremos como pivote el elemento a44=-3; multiplicamos la cuarta ecuación por y la


restamos a la primera:

Realizamos la misma operación con la segunda y tercera fila, obteniendo:

Ahora tomamos como pivote el elemento a33=2, multiplicamos la tercera ecuación por

y la restamos a la primera:

Repetimos la operación con la segunda fila:

Finalmente, tomamos como pivote a22=-4, multiplicamos la segunda ecuación por y la


sumamos a la primera:

El sistema de ecuaciones anterior es, como hemos visto, fácil de resolver. Empleando la
ecuación (46) obtenemos las soluciones:

Página 14
Cristian Amador Loli Prudencio

REFERENCIAS BIBLIOGRÁFICAS
[1] Cárdenas – Gómez Análisis Numérico REVERTÉ 2014

[2] Burden R. – Faires J. Análisis Numérico CENGAGE Learning 2011

[3] Chapra S. – Canale R. Métodos Numéricos para Ingenieros Mc Graw Hill 2010

[4] Kincaid – Cheney Análisis Numérico. Las Matemáticas Addison Wesley 1994

del Cálculo Científico. Iberoamericana

[5] Nakamura, Schoichiro Métodos numéricos aplicados Prentice Hall 1992

con software. Hispanoamericana

[6] Mathews – Fink Métodos Numéricos con Matlab. Prentice Hall 2003

[7] Avendaño Quiroz, Johnny Matlab: Introducción a los UNMSM 2009

Métodos Numéricos.

[8] Stoer, J. – Bulirsch, R. Introduction to Numerical Analysis. Springer 1992

[9] Terrence J., Akai Métodos numéricos aplicados Limusa 2008


a la ingeniería.

[10] Moore Holly Matlab para ingenieros Pearson Education 2007

[11] Nakamura, Shoichiro Análisis Numérico y Visualización Prentice Hall 1997

gráfica con MATLAB Hispanoamericana

[12] Amos Gilat Matlab: Una introducción con Reverté 2006

ejemplos prácticos

Página 15

Вам также может понравиться