Documente Academic
Documente Profesional
Documente Cultură
Algebra Lineal
a 11 x 1 a 12 x 2 a 1n x n c1
a 21 x 1 a 22 x 2 a 2n x n c2
(1)
a n1 x 1 a n2 x 2 a nn x n cn
Estas ecuaciones deben ser linealmente independientes para que haya una
solucin.
En forma compacta el problema se escribe
Ax c
Eliminacin Gaussiana.
El proceso de sumar o restar filas multiplicadas o divididas por escalares
tal de obtener ceros
por debajo de la diagonal principal lleva el nombre de eliminacin de Gauss.
Supongamos que la matriz aumentada (ltima columna es el vector c) es:
1 1 1 1 2
1 1 1 1 0
2 1 1 2 9
3 1 2 1 7
F1 F 1 /a 11 1 1 1 -1 2
F2 F2 F1 0 -2 -2 2 -2
F3 F 3 2F 1 0 -1 -3 4 5
F4 F 4 3F 1 0 -2 -1 2 1
F1 F1 1 1 1 -1 2
1
F2 F2/ 2 0 1 1 -1 1
F3 F3 F2 0 0 -2 3 6
F4 F 4 2F 2 0 0 1 0 3
F1 F1 1 1 1 -1 2
F2 F2 0 1 1 -1 1
3
F3 F3 / 2 0 0 1 2
-3
3
F4 F4 F3 0 0 0 2
6
1 1 1 -1 2
0 1 1 -1 1
3
0 0 1 2
-3
0 0 0 1 4
x1 x2 x3 x4 2
x2 x3 x4 1
x 3 32 x 4 3
x4 4
2
funcin que reordene las incgnitas en el orden original.
Gauss-Jordan
Aplicando el procedimiento de eliminacin Gausiana tal que se eliminen tam-
bin los elementos por arriba de la diagonal principal, se produce una matriz
diagonal (Identidad si se normaliza), que facilita el despeje de las incgnitas.
Matrices Elementales
Las operaciones comunes realizadas en las filas de una matriz para transfor-
marla en una triangular o diagonal son:
a) Intercambio de filas
b) Multiplicacin de una fila por un escalar
c) Sustitucin de una fila por la suma de esta con alguna otra fila
Estas operaciones se pueden realizar multiplicando por la izquierda la matriz en
cuestin por ciertas matrices elementales que realizan en la matriz original el cam-
bio deseado.
Algunos ejemplos:
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13
0 m 0 b 21 b 22 b 23 mb 21 mb 22 mb 23 mF 2
0 0 1 b 31 b 32 b 33 b 31 b 32 b 33
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13
m 1 0 b 21 b 22 b 23 mb 11 b 21 mb 12 b 22 mb 13 b 23
0 0 1 b 31 b 32 b 33 b 31 b 32 b 33
mF 1 F2
1 0 0 b 11 b 12 b 13 b 11 b 12 b 13
0 0 1 b 21 b 22 b 23 b 31 b 32 b 33 P 23 B
0 1 0 b 31 b 32 b 33 b 21 b 22 b 23
permutacin de filas.
Resumiendo, podemos decir que las operaciones elementales con renglones son:
Hemos hablado de pivoteo parcial y hemos trabajado con las filas de la matriz.
Cuando las matrices elementales se multiplican por la derecha, las operaciones
elementales se realizan con las columnas.
Es interesante recordar adems que, cualquier matriz elemental se puede generar
a partir de la matriz Identidad I n y una sola operacin elemental. Adems los in-
versos de las matrices elementales resultan ser muy similares en forma a la matriz
3
elemental.
Si el conjunto de matrices elementales que transforman una matriz A en la matriz
Identidad las denominamos
E EmEm 1. . . . . . . . . . . E1
E A|b I|x
1
E A
adems
det EA det I
det E . det A 1
det A 1
det E
Ejercicio:
Determinar los valores del determinante de las distintas matrices elementales: per-
mutadora, multiplicadora por factor m, y matriz elemental del tipo de sustitucin.
a 11 a 12 a 13 a 14 1 0 0 0
a 21 a 22 a 23 a 24 0 1 0 0
| (2)
a 31 a 32 a 33 a 34 0 0 1 0
a 41 a 42 a 43 a 44 0 0 0 1
4
1 0 0 0 b 11 b 12 b 13 b 14
0 1 0 0 b 21 b 22 b 23 b 24
| (3)
0 0 1 0 b 31 b 32 b 33 b 34
0 0 0 1 b 41 b 42 b 43 b 44
o sea hemos realizado ciertas operaciones que han generado la matriz identidad
al lado izquierdo y al mismo tiempo la matriz del lado derecho que originalmente
era la matriz Identidad, se ha transformado en una nueva matriz b ij . Esta matriz
(del lado derecho) es la matriz inversa de a ij , como se constata a continuacin
Si b ij a ij 1 , multiplicando ec. (2) por b ij , obtenemos ec. (3)
b ij . a ij | I I | b ij (4)
a 11 a 12 a 13 a 14 b 11 1
a 21 a 22 a 23 a 24 b 21 0
(5a)
a 31 a 32 a 33 a 34 b 31 0
a 41 a 42 a 43 a 44 b 41 0
(5b)...(5c)
a 11 a 12 a 13 a 14 b 14 0
a 21 a 22 a 23 a 24 b 24 0
(5d)
a 31 a 32 a 33 a 34 b 34 0
a 41 a 42 a 43 a 44 b 44 1
a ij b ij I (6)
Descomposicin LU
Se conoce por este nombre (del ingls L lower (inferior) U upper (supe-
rior)) al proceso por el cual transformamos la matriz original en el producto
de una matriz triangular inferior por una triangular superior. Existen varios
algoritmos que no son sino ligeras variantes del esquema general. Estudia-
remos a continuacin los tres ms populares. Mtodo de Crout, mtodo
5
de Doolitle y el mtodo de Cholesky que se aplica a matrices simtricas.
Matrices triangulares con ceros por arriba (o por abajo) de la diagonal
principal juegan un rol importante en algebra lineal, ya que aparecen con
frecuencia y adems como ya hemos visto, simplifican enormemente el
proceso de solucin de sistemas simultneos de ecuaciones.
Lc b (8a)
Tx c (8b)
Mtodo de Crout
Empecemos escribiendo las matrices aumentadas correspondientes a las
ecs. (7) y (8):
a 11 a 12 a 13 b1 L 11 0 0 1 T 12 T 13 c1
a 21 a 22 a 23 | b 2 L 21 L 22 0 0 1 T 23 | c 2 (9)
a 31 a 32 a 33 b3 L 31 L 32 L 33 0 0 1 c3
L 11 a 11 T 12 a 12 /L 11
L 21 a 21 ; L 22 a 22 L 21 T 12 ;
L 31 a 31 L 32 a 32 L 31 T 12
(10)
T 13 a 13 /L 11 c1 b 1 /L 11
T 23 a 23 L 21 T 13 /L 22 ; c2 b 2 L 21 c 1 /L 22
L 33 a 33 L 31 T 13 L 32 T 23 c3 b 3 L 31 c 1 L 32 c 2 /L 33
x3 c3
x2 c2 T 23 x 3 (11)
6
x1 c1 T 13 x 3 T 12 x 2
Para el caso general de una matriz n x n, las matrices L, T, c estan dadas por
j 1
L ij a ij L T
k 1 ik kj
, i j, j j 2, 3. . . . . . . . , n
1 i 1
T ij L ii
a ij L T
k 1 ik kj
, i j, j 2, 3, . . . . . , n
(12)
1 i 1
ci L ii
bi L c ,
k 1 ik k
i 2, 3, . . . . . . , n
T ij a ij /a 11 , i 1
L ij a i1, j 1
c1 b 1 /L 11
adems: xn cn;
n
xj cj T x,
r j 1 jr r
j n 1, n 2, . . . . . , 1
Mtodo de Doolittle
Una variante del mtodo de Crout es el siguiente
a 11 a 12 a 13 b1 1 0 0 T 11 T 12 T 13 c1
a 21 a 22 a 23 | b 2 L 21 1 0 0 T 22 T 23 | c 2 (13)
a 31 a 32 a 33 b3 L 31 L 32 1 0 0 T 33 c3
PAx Pb
LUx Pb
La funcin lu se invoca as
[l,u,p] lu(A)
Mtodo de Cholesky
Cuando la matriz es simtrica ( A A ), la descomposicin LU se simplifi-
7
ca ya que
A LU A UL
esto indica L U y U L
a 11 a 12 a 13 b1 u 11 0 0 u 11 u 12 u 13 c1
a 21 a 22 a 23 | b 2 u 12 u 22 0 0 u 22 u 23 | c 2 (14)
a 31 a 32 a 33 b3 u 13 u 23 u 33 0 0 u 33 c3
Ec. (14) es equivalente a la ec. (9), y seguimos igual procedimiento para determi-
nar los elementos u ij . Igualando trminos correspondientes, obtene-
mos
u 11 a 11 ; u 22 a 22 u 212 ; c1 b 1 /u 11
u 12 a 12 /u 11 ; u 23 a 23 u 12 u 13 /u 22 ; c2 b 2 c 1 u 12 /u 22 (15)
u 13 a 13 /u 11 u 33 a 33 u 213 u 223 c3 b 3 c 1 u 13 c 2 u 23 /u 33
u 11 u 12 u 13 x1 c1
0 u 22 u 23 x2 c2 (16)
0 0 u 33 x3 c3
u 11 a 11 , c 1 b 1 /u 11
u 1j a 1j /u 11 , i 2, 3, . . . . . . . , n
i 1 2
u ii a ii u , i 2, 3, . . . . . , n
k 1 ki
i 1
u ij a ij u u /u ii , j
k 1 ki kj
2, 3, . . . . , n (17)
i 1
ci bi u c /u ii ,
k 1 ki k
i 2, 3, . . . . , n
xn c n /u nn
n
xi ci u x /u ii , i
k i 1 ik k
n 1, . . . . . , 1
u ij 0 para i j
8
a 11 a 12 a 1n x1
a 21 a 22 a 2n x2
x Ax x1, x2, . . . . . . . , xn 0 (18)
a n1 a n2 a nn a nn
2 1 0 x1 2x 1 x2
x Ax x1, x2, x3 1 2 1 x2 x1, x2, x3 x1 2x 2 x3
0 1 2 x3 x2 2x 3
2x 21 2x 1 x 2 2x 22 2x 2 x 3 2x 23
arreglando trminos
x Ax x 21 x 21 2x 1 x 2 x 22 x 22 2x 2 x 3 x 23 x 23
x 21 x 1 x 2 2 x 2 x 3 2 x 23 0
a no ser que x 1 , x 2 , x 3 0
Una regla que reemplaza a estos cuatro criterios es: Una matriz A es positi-
va definida si y solo si sus primeras submatrices principales tienen determi-
nante positivo. Empleando la misma matriz del ejemplo anterior tenemos
det A 1 det 2 2 0
2 1
det A 2 det 3 0
1 2
2 1 0
det A 3 det 1 2 1 24 1 1 2 4 0
0 1 2
9
Emplee el comando help y estudie la funcin chol
Comentarios finales.
Los sistemas con matrices triangulares son muy fciles de resolver. Esa es la razn
por la que el mtodo LU es tan popular. Veamos el siguiente ejemplo.
Sea U una matriz triangular superior, queremos determinar x en el siguiente
problema.
Ux b
un algoritmo para obtener x (empezamos por la ltima fila) es:
x zeros n, 1
for k n: 1:1
j k 1 : n;
xk bk U k, j x j /U k, k ;
end
El algoritmo para resolver un sistema triangular con matriz triangular inferior L, es
similar (empezamos en la primera fila).
Sistemas Tridiagonales
Como su nombre lo indica, matrices tridiagonales poseen solamente tres
diagonales,la diagonal principal, la diagonal superior y la diagonal inferior.
Hay tantos ceros en estas matrices que resulta ineficiente almacenarlos,
siendo que sabemos de antemano que son ceros. Imaginemos una matriz
100x100 con solo tres diagonales (3n 2 elementos) y el resto de la ma-
triz con ceros (n 2 3n 2 elementos), o sea 10,000-298 9,702 ceros.
Porcentualmente, estaramos diciendo que el 97 % de la matriz son ceros.
Basta reconocer que la matriz es tridiagonal para no necesitar guardar esos
ceros y usar espacio de memoria en el computador.
Aplicando el mtodo de Crout a
d1 t1 0 0 x1 b1
l1 d2 t2 0 x2 b2
(19a)
0 l2 d3 t3 x3 b3
0 0 l3 d4 x4 b4
Tri x b L Ux b (19b)
Como ya hemos analizado este problema, parecera una simple aplicacin
ms de la descomposicin LU. Sin embargo en el presente caso no cono-
cemos L ni tampoco U y queremos llegar a frmulas particulares para resol-
ver este problema de una forma eficiente. Las matrices aumentadas corres-
10
pondientes a las ecuaciones anteriores son:
Tri|b L U|B (19c)
Obviamente de (19b) se concluye que
1
Ux L b B (19d)
Esta ltima ecuacin muestra que solo necesitamos resolver una sola ecua-
cin para determinar x por sustitucin regresiva. Pero para eso debemos
determinar en forma analtica las matrices L, U y el vector B.
d1 t1 0 0 b1 D1 0 0 0 1 T1 0 0 B1
l1 d2 t2 0 b2 L2 D2 0 0 0 1 T2 0 B2
| |
0 l2 d3 t3 b3 0 L3 D3 0 0 0 1 T3 B3
0 0 l3 d4 b4 0 0 L4 D4 0 0 0 1 B4
(20)
D1 d1, T1 t 1 /D 1 , T2 t 2 /D 2 , T3 t 3 /D 3 ,
L2 l2, D2 d2 T1L2, D3 d3 L3T2, D4 d4 T3L4,
L3 l3, L4 l4,
(21)
B1 b 1 /D 1 , B 2 b2 B 1 L 2 /D 2 , B 3 b3 B 2 L 3 /D 3 ,
B4 b 4 B 3 L 4 /D 4
D1 d1,
Li li, i 2, . . . . . . . . . , n
T i t i /D i , i 1, . . . . . . . . . , n 1 (22)
Di di Ti 1Li, i 2, . . . . . . . . , n
B 1 b 1 /D 1 ,
Bi b i B i 1 L i /D i , i 2, . . . . . . . . , n
1 T1 0 0 x1 B1
0 1 T2 0 x2 B2
0 0 1 T3 x3 B3
0 0 0 1 x4 B4
11
y obtenemos
xn Bn
xi Bi Tixi 1, i n 1, n 2, . . . . . . . . . . , 1 (23)
Mtodos Iterativos
Los mtodos de solucin de ecuaciones simultneas basados en la aplica-
cin de operaciones elementales (eliminacin) se vuelven costosos desde
el punto de vista de la memoria usada en el computador y adems se vuel-
ven inexactos ya que al crecer el orden de la matriz, se incrementa el nme-
ro de operaciones y el error de redondeo se propaga, haciendo el proceso
ineficiente y aproximado. En la solucin de ecuaciones diferenciales parcia-
les es comn encontrar matrices de orden superior a cien y en varias aplica-
ciones se encuentran ecuaciones de orden mil o mayor. En estos casos re-
sulta ms efectivo y exacto emplear un mtodo iterativo cuya exactitud se
puede precisar con anticipacin.
a 11 a 12 a 13 x1 b1
a 21 a 22 a 23 x2 b2 (24)
a 31 a 32 a 33 x3 b3
a 12 a 13 b1
x1 0 a 11 a 11 x1 a 11
a 21 a 23 b2
x2 a 22 0 a 22 x2 a 22 (25)
a 31 a 32 b3
x3 a 33 a 33 0 x3 a 33
x Bx c (26)
12
k 1 k
x Bx c, k 0, 1, 2, . . . . . . .
(27)
x 0
x 10 , x 20 , . . . . . . x n0 es el vector inicial
1
x k1 1
a 11 b1 a 12 x k2 a 13 x k3
k 1 1
x x k2 1
a 22 b2 a 21 x k1 1
a 23 x k3 (29)
x k3 1 1
a 33 b3 a 31 x k1 1
a 32 x k2 1
1 i 1 n
x ki 1
a ii bi a xk 1
j 1 ij j
a xk
j i 1 ij j
, para 1 i n (30)
1 i 1 n
x ki 1
a ii bi l xk 1
j 1 ij j
u xk
j i 1 ij j
, para 1 i n (31)
Convergencia
Los mtodos de Jacobi y Gauss-Seidel convergen si
n
|a ii | j 1 |a ij |; 1 i n
j i
13
y (32)
n
|a ii | i 1 |a ij |; 1 j n
j i
Aceleracin de Covergencia
La velocidad con que estos procesos iterativos llegan a la solucin, depen-
de esencialmente del tipo de matriz, de su tamao y de lo acertada que sea
la seleccin de los valores iniciales. En sistemas de dimensiones mayores
que cien resulta ventajoso emplear el proceso de sobrerelajacin que con-
siste en exagerar la correccin de las incgnitas, en cada paso (sobrerelajar).
En cada iteracin obtenemos un nuevo valor del vector x que se relaciona
con su valor previo, de acuerdo a
k 1 k k
x x r (33)
i 1 n
x ki 1
x ki w bi l xk 1
j 1 ij j
x ki u xk
j i 1 ij j
1 i n (36)
14
1
D0 A
F0 I AD 0
Dk Dk 1 Dk 1Fk 1
(k 1, 2, 3,.......)
El error correspondiente es
Fk I AD k
F1 I AD 1 I A D0 D0F0 I AD 0 I F0
I I F0 I F0 I I F 20 F 20
en forma similar
F2 F 21 F 40
y en general
Fk F 20 k
15
la Universidad de Harvard. Por ser un mtodo iterativo de increible sencillz,
merece ser estudiado.
Las ecuaciones que sirven de base al mtodo se dan a continuacin.
Llamemos B a una aproximacin del inverso de A. B A 1
Una matriz error es
EB I BA
1
A A 1B 1 B BA 1 B I E B 1B
Anlogamente a
1 x 1 1 x x 2 x 3 . . . . . . . . . . , para x 1
tenemos
A 1 I E E 2 E 3 . . . . . . . . . . B, para q 1
si
E0 e ij Primera matriz de error
q
|e ij | n
Bk I Ek Bk 1
que es la conocida iteracin de Newton llamada tambin refinamiento de
la solucin.La contribucin de Pan y Reif fu el descubrimiento de una
simple forma de iniciar el proceso iterativo de Newton con una B 0 como
aproximacin a la matriz A 1 .
Algoritmo de Pan-Reif:
1. Forme A H (tiene elementos A j, i
2. Evalue las normas t 1 A 1 y t2 A y calcule t 1/ t 1 t 2
3. Haga B 0 tA H
4. Haga E k I B k 1 A k 1, 2, . . . . . . . .
5. Iteracin de Newton: B k I Ek Bk 1 k 1, 2, . . . . . . .
6. Repita iterativamente los pasos 4 y 5 hasta que los elementos de la ma-
triz de error E k satisfagan algn criterio de tolerancia, por ejemplo
E k 1 0. 0001.
Cuando esto suceda la matriz B sera una buena aproximacin al inverso
de A.
Nota: En Matlab A AH
El siguiente listado muestra una implementacin del algoritmo en Matlab.
16
n2 n*n;
n4 n2*n2;
t1 norm(a,1);
t2 norm(a,inf);
y eye(size(a));
t 1/(t1*t2);
E 2*y; % inicializa a valor grande
i 0;
while norm(E,1) 1/n4;
% aqui empieza la iteracin de Newton
i i 1;
E y-b*a;
b (y E)*b;
end
iter i;
Una prueba del algoritmo puede hacerse asi:
clear
a rand(20,20) % matriz de nmeros aleatorios
[b, iter] pan_reif(a)
% iter es el nmero de iteraciones, b el inverso
% de a
% Se puede constatar la exactitud de b
% calculando:b*a
% debe resultar la matriz identidad
Problemas mal condicionados
Necesitamos en esta seccin, hablar de normas de matrices. Primero repasare-
mos las normas de vectores para luego introducir algunas normas de matrices.
La norma
n
x 1 |x |
i 1 i
(37a)
n 1/2
x 2 x2
i 1 i
(37b)
La norma l es
x max |x i | 1 i n (37c)
x x 2 n x (38)
i) A 0.
17
ii) A 0, si y slo si A es [0].
iii) A | | A .
iv) A B A B .
v) AB A B
A max Ax (39)
x 1
n
A max Ax max |a |
j 1 ij
(41)
x 1 1 i n
o sea
A max fila 1 A 1, fila 2 A 1, . . . . . . . . . , fila n A 1
1/2
A 2 max Ax 2 AA (42)
x 2 1
que equivale a
18
1
Cond A A A (45)
Cond A 1 (46)
Origen de Cond(A)
En un sistema de ecuaciones simultaneas Ax b, con A no singular y b 0
es siempre importante conocer la sensibilidad de x respecto a pequeos cam-
bios en b o en A. Analicemos el problema por partes, primero consideremos
A exacta pero b con un error b. La solucin exacta a este problema modifi-
cado ser
1
Ax x b b o sea A x b y x A b
Aplicando Ax A x b A x
1
similarmente x A b
de aqu obtenemos
x 1 b
A A
x b
O sea, las variaciones relativas de la norma del vector solucin, son meno-
res que el nmero de condicion multiplicado por las variaciones relativas de
la norma del vector independiente.
Cuando A tiene un error A pero b es exacta, siguiendo un procedimiento
similar obtenemos
x 1 A
A A
x x A
19
Demostracion: A A es simtrica y no negativa. Sea x i i 1, 2, . .
. . , n un conjunto ortonormal de vectores caractersticos reales de A A,
o sea
A Ax i i
ix , 0 1 2 ......... n ,
con
xi xj 0, i j
y
xi xi 1, 1 i n
i
Cualquier otro vector x en el espacio cubierto por x i 1, 2, . . . . . , n
puede
exprezarse
n
x cxi
i 1 i
,
por lo tanto
2
Ax 2 Ax, Ax x A Ax
x 2 x, x xx
i i 2
i
cix i icix i i |c i |
cix i
cix i
j
|c j | 2
i i
si x x n , tendramos c 1 c 2 . . . . . . . . . c n 1 0 y cn 1, y el valor
del ltimo trmino sera n . Por lo tanto
2
2 Ax 2
A 2 n AA 47
x 2 max
A 2 A (48)
20
1
A 2 mx | |; un valor caracterstico de A A 2
1
1
A 2
min | |; un valor caracterstico de A A 2
y finalmente
1
max 2
Cond(A) min
, siendo solucin de A Ax x (49)
i) det A det A 1 1
ii) A 1 1 A
iii) AA 1 I
iv) A 1 A 1 1 I en grado mayor que en iii)
A a ij 1
i j 1
10 7 0
A 3 2 6 (1)
5 1 5
21
matriz de permutacin en este primer paso es
1 0 0 1 0 0
P1 0 1 0 , M1 0. 3 1 0
0 0 1 0. 5 0 1
M 1 es la matriz que realiza la eliminacin de los trminos por debajo del a 11. O sea
1 0 0 1 0 0 10 7 0 10 7 0
M1P1A 0. 3 1 0 0 1 0 3 2 6 0 0. 1 6
0. 5 0 1 0 0 1 5 1 5 0 2. 5 5
1 0 0 10 7 0 10 7 0
P2M1P1A 0 0 1 0 0. 1 6 0 2. 5 5
0 1 0 0 2. 5 5 0 0. 1 6
1 0 0 10 7 0 10 7 0
M2P2M1P1A 0 1 0 0 2. 5 5 0 2. 5 5
0 0. 04 1 0 0. 1 6 0 0 6. 2
y obtenemos
10 7 0
U 0 2. 5 5 Mn 1Pn 1. . . . . . . M2P2M1P1A
0 0 6. 2
Se puede demostrar que
L1L2. . . . Ln 1U Pn 1. . . . P2P1A
lo que equivale a
LU PA
En Matlab: [L, U, P] lu(A)
22
Por qu Pivoteo es necesario?
Los elementos diagonales de U se llaman pivotes. Como siempre hay que dividir por
el pivo-
te, el procedimiento ilustrado no funciona si alguno de los u ii es cero. Intuicin nos
dice que
sera mala idea completar el clculo si alguno de los u ii 0.
10 7 0 x 7
A 3 2. 099 6 y 3. 901
5 1 5 z 6
la solucin exacta es [0 ; -1 ; 1]
Ahora supongamos que tenemos un computador que trabaja solo con cinco dgitos
signfica-
tivos, siguiendo el procedimiento de eliminacin Gaussiana, despus de
premultiplicar por
M 1 P 1 obtenemos
0 7 0 x 7
1 er Paso: 0 0. 001 6 y 6. 001
0 2. 5 5 z 2. 5
z 1. 5004 10 4 0. 99993
1. 5005 10 4
como el resultado excto es 1, este no parece tan mal resultado en una mquina con
cinco
dgitos.
Veamos que pasa con y:
23
0. 001y 6 0. 99993 6. 001
y 1. 5 10 3 1. 5
1. 0 10 3
y finalmente x de la primera fila:
10x 7 1. 5 7
x 0. 35
Solucin exacta: x [0 ; -1 ; 1]
Nuestra solucin x [-0.35; -1.5; 0.99993]
Que pas aqu? La matriz no es singular, tampoco hay errores de redondeo por miles
de ope-
raciones aritmticas. La dificultad radica en haber elegido un elemento muy pequeo
en el se-
gundo paso de la elimnacin. Como resultado el multiplicador es 2.5 10 3 y la
ecuacin final
tiene coeficientes del orden de 10 3 ms grandes que el problema original.
Para entender este punto, se recomienda repetir el ejercicio, empleando pivoteo
parcial, usando
el mismo computador de 4 decimales.
En general: Si los multiplicadores son 1 entonces la solucin del
computador es aceptable.
Efectos de redondeo
24
0. 913 0. 659 x1 0. 254
0 0. 0001 x2 0. 001
0. 443
x
1. 000
Para medir la exactitud (sin saber cual es la solucin exacta) calculamos el residual:
0. 217 0. 780 0. 443 0. 563 1. 00
r b Ax
0. 254 0. 913 0. 443 0. 659 1. 00
0. 000460
r
0. 000541
1. 000
x
1. 000
o sea, nuestra solucin tiene los signos equivocados, el error es mayor que la
solucin!
Cmo pueden rsultar los residuales tan pequeos?
Si resolvemos el problema en un computador de 6 decimales obtenemos:
La solucin es la exacta! Esto demuestra que para los clculos con precisin, se debe
emplear
lo que en otros idiomas se llama doble precisin. Afortunadamente Matlab emplea
doble pre-
cisin en todos sus clculos (16 dgitos).
25
Ax
M max para todo x 0
x
Ax
m min para todo x 0
x
el nmero de condicin de una matriz se define
cond A M
m
Cond(A) depende de la norma que se emplee, pero lo importante es el orden de su
magnitud.
Consideremos
Ax b
y un segundo sistema, alterando un poco el lado derecho:
Ax x b b
Se puede pensar que b es un error en los datos, puede ser resultado de error
experimental o
falta de decimales en el vector b. x es el error resultante. Debido a que
A x b
las definiciones de M y de m, permiten escribir
b M x
y
b m x
si m 0,
x b
cond A
x b
b x
La cantidad b es elerror relativo del lado derecho y la cantidad x
es el error
relativo
causado por este cambio.
No es difcil ver que
A 1 1
m
y una definicin equivalente del nmero de condicin es
1
cond A A A
Algunas propiedades del nmero de condicin son:
cond A 1
Si P es una matriz de permutacin
cond P 1
26
en particular
cond I 1
Si A es multiplicado por un escalar, entonces M y m son multiplicados por el mismo
escalar
y
cond cA cond A
Si D es una matriz diagonal
max|d ii |
cond D
min|d ii |
Estas dos ltimas propiedades muetran el por que el nmero de condicin es una
mejor
medida de singularidad de una matriz, que el determinante. Como ejemplo,
supongamos
que una matriz diagonal de 100 100 con elementos igual a 0.1 en la diagonal.
100 100
det A 0. 1 10
lo que se considera un nmero muy pequeo. Sin embargo cond(A) 1.
4. 1 2. 8
A ,
9. 7 6. 6
4. 1 1
b , x .
9. 7 0
Claramente Ax b y b 13. 8, x 1.
Si el lado derecho se cambia a
4. 11
b ,
9. 7
la solucin es
0. 34
x .
0. 97
Sea b b b y x x x, entonces:
b 0. 01
x 1. 63
27
Hemos hecho una pequea perturbacin en b, que completamente cambia x. Los
cambios relativos son:
b
0. 0007246
b
x
1. 63
x
Debido a que cond(A) es el factor de magnificacin mximo,
cond A 1. 63 2249. 4
0. 0007246
Port otro lado,
4. 1 2. 8
13. 8
9. 7 6. 6
1
1
4. 1 2. 8
163
9. 7 6. 6
1
y se comprueba que
cond A 13. 8 163 2249. 4
Ejemplos tomados de: Numerical Computing with Matlab de Cleve B.Moler (Siam)
Programas
Los siguientes programas muestran las implementaciones usando el lenguaje
Matlab:
* Simple_Gauss.m
* Parpiv_Gauss.m
* Gauss_Jordan.m
* My_Crout.m
* My_Chol.m
* My_tridiag1.m
* Jacobi.m
* Gauss_Seidel.m
* pan_reif.m
Referencias
1. Anlisis Numrico y Visualizacin Grfica con Matlab de Shoichiro
Nakamura Ed. Pentice Hall.
2. Anlisis Numrico de Richard L. Burden y J. Douglas Faires, 6ta ed.
28
Thomson Ed.
3. Mtodos Numricos Aplicados a la Ingeniera de Antonio Nieves y
Federico C. Domnguez. Ed. Cecsa.
4. Mtodos Numricos para Ingenieros 3ra ed. de Steven C. Chapra
y Raymond P. Canale. Ed. Mc Graw Hill.
5. The Inversion of Large Matrices (The Pan and Reif algorithm provides a
solution) by Thomas E. Phipps Jr. Articulo publicado por BYTE
Magazine Abril 1986.
6. Computational Mathematics por B. P. Demidovich y I. A. Maron.
MIR Publishers.Moscow, 1981.
PROGRAMAS
Crout.m
clear
echo off
a [1 3 5;2 -2 8;-1 4 10];% un ejemplo
b [1 2 3];
n length(b);
y a\b
% Algoritmo de Crout
alfa eye(n,n);
beta zeros(n,n);
for j 1:n
for i 1:j
sum1 0;
for k 1:i-1
sum1 alfa(i,k).*beta(k,j) sum1;
end
beta(i,j) a(i,j)-sum1;
end
for i j 1:n
sum2 0;
for k 1:j-1
sum2 alfa(i,k).*beta(k,j) sum2;
end
alfa(i,j) (a(i,j)-sum2)./beta(j,j);
end
end
alfa,beta
c(1) b(1)./alfa(1,1);
for i 2:n
sum 0;
for r 1:i-1
sum sum alfa(i,r).*c(r);
end
c(i) (b(i)-sum)./alfa(j,j);
end
x(n) c(n)./beta(n,n);
for j n-1:-1:1
sum 0
29
for k j 1:n
sum sum beta(j,k).*x(k);
end
x(j) (c(j)-sum)./beta(j,j);
end
a,alfa,beta
disp(Y ES SOLUCION A\B)
for i 1:n
fprintf(y %12.8f x %12.8f\n,y(i),x(i))
end
My_Crout.m
%Algoritmo de Crout
function [x, l, t] my_Crout(a,b)
n length(b);
% Inicializamos l, t
l zeros(n,n);
t eye(n,n);
for j 1:n
t(1,j) a(1,j)/a(1,1);
end
for i 1:n
l(i,1) a(i,1);
end
for i 1:n
for j 1:i
sum1 0;
for k 1:j-1
sum1 l(i,k).*t(k,j) sum1;
end
l(i,j) a(i,j)-sum1;
end
for j i 1:n
sum2 0;
for k 1:i-1
sum2 l(i,k).*t(k,j) sum2;
end
t(i,j) (a(i,j)-sum2)./l(i,i);
end
end
c(1) b(1)./l(1,1);
for i 2:n
sum 0;
for k 1:i-1
sum sum l(i,k).*c(k);
end
c(i) (b(i)-sum)./l(i,i);
end
x(n) c(n);
% Sustititucion regresiva
30
for j n-1:-1:1
sum 0;
for k j 1:n
sum sum t(j,k).*x(k);
end
x(j) (c(j)-sum);
end
My_Doolittle.m
% Algoritmo de Doolittle
function [x, alfa, beta] my_Doolittle(a,b)
n length(b);
alfa eye(n,n);
beta zeros(n,n);
for j 1:n
for i 1:j
sum1 0;
for k 1:i-1
sum1 alfa(i,k).*beta(k,j) sum1;
end
beta(i,j) a(i,j)-sum1;
end
for i j 1:n
sum2 0;
for k 1:j-1
sum2 alfa(i,k).*beta(k,j) sum2;
end
alfa(i,j) (a(i,j)-sum2)./beta(j,j);
end
end
c(1) b(1)./alfa(1,1);
for i 2:n
sum 0;
for r 1:i-1
sum sum alfa(i,r).*c(r);
end
c(i) (b(i)-sum)./alfa(j,j);
end
x(n) c(n)./beta(n,n);
for j n-1:-1:1
sum 0;
for k j 1:n
sum sum beta(j,k).*x(k);
end
x(j) (c(j)-sum)./beta(j,j);
end
My_Chol.m
% Cholesky procedure
function[x,u] my_chol(a,b)
31
n length(b);
u(1,1) sqrt(a(1,1));
for j 2:n
u(1,j) a(1,j)./u(1,1);
end
c(1) b(1)./u(1,1);
for i 2:n
sum1 0;
for k 1:i-1
sum1 sum1 u(k,i).^2;
% k debe ser i ya que el termino diagonal no
% se ha calculado aun
end
if a(i,i) sum1
disp(Matriz nos es positiva definida)
end
u(i,i) sqrt(a(i,i)-sum1); % termino diagonal
for j i 1:n % solo la parte triangular superior
sum2 0;
for k 1:i-1
sum2 u(k,i).*u(k,j);
end
u(i,j) (a(i,j)-sum2)./u(i,i);
% termino arriba de la diagonal
end
end
Inv_Crout.m
32
%la matriz eye(3) ocupa el lugar de b en la
% matriz aumentada
% [a|eye(3)]
%luego se usa la decomposicion LUtres veces
% usando cada columna
% de eye(3) en lugar de b
B eye(3,3);
bb zeros(3,3)
for i 1:3
b B(:,i);
[x,L,U] my_crout(a,b);
for k 1:3
bb(k,i) x(k);
end
end
bb
bb*a
Elim_Gauss.m
33
x(i) x(i)-a(i,j)*x(j);
j j 1;
end
x(i) x(i)/a(i,i);
i i-1;
end
Gauss_Jordan.m
34
end
end
end
% Ahora ponemos el resultado c() en a()
a c;
for j 1:nrow
x(j) a(j,ncol);
end
end
%disp(*********** Matriz [a|x] aumentada *************)
%a,x
G_Seidel.m
clear
echo off
n 3;
L zeros(3,3);
U zeros(3,3);
c [10 3 1;2 8 3;4 1 9]
d [1 2 3];
% Normalizamos
for i 1:3
for j 1:3
a(i,j) c(i,j)./c(i,i);
end
b(i) d(i)./c(i,i);
end
for i 1:3
for j i 1:3
U(i,j) a(i,j);
end
end
for j 1:3
for i j 1:3
L(i,j) a(i,j);
end
end
a,L,U
w input(Entre el valor de w :);
disp(Los valores iniciales son: )
y 10.*[1 1 1 1 1 1]
x y;
% Empezamos la iteracion
fprintf( y(1) y(2) y(3) y(4) y(5) y(6) #iter\n)
fprintf(-\n)
for k 1:100
for i 1:3
sum1 0;
35
for j 1:i-1
sum1 L(i,j).*y(j) sum1;
end
sum2 0;
for j i 1:3
sum2 U(i,j).*x(j) sum2;
end
y(i) x(i) w.*(b(i)-sum1-x(i)-sum2);
end
error abs(y-x);
x y;
if error 10^-5
break
end
fprintf( %8.5f %8.5f %8.5f %3.0f\n,y(1),...
y(2),y(3),k)
end
Tri_diad.m
function f tri_diag(a,b,c,d,n)
for i 2:n
r a(i)/b(i-1);
b(i) b(i)-r*c(i-1);
d(i) d(i)-r*d(i-1);
end
d(n) d(n)/b(n);
for i n-1:-1:1
d(i) (d(i)-c(i)*d(i 1))/b(i);
end
f d;
Jacobi.m
% Iteracion de Jacobi
clear
echo off
n 6;
a zeros(6,6);
for i 1:6
a(i,i) 2;
end
for i 1:5
a(i,i 1) 1;
a(i 1,i) 1;
end
a
b [3.1 5.1 5.1 5.1 5.1 2.9];
% Normalizamos
for i 1:6
for j 1:6
a(i,j) a(i,j)./2;
36
end
b(i) b(i)./2;
end
w input(Entre el valor de w :);
disp(Los valores iniciales son: )
y 10.*[1 1 1 1 1 1]
x y;
% Empezamos la iteracion de Jacobi
fprintf( y(1) y(2) y(3) y(4) y(5) y(6) #iter\n)
fprintf(-\n)
for k 1:100
for i 1:6
sum1 0;
for j 1:n
sum1 a(i,j).*x(j) sum1;
end
y(i) x(i) w.*(b(i)-sum1);
end
error abs(y-x);
x y;
if error 10^-5
break
end
fprintf( %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f...
%3.0f\n,y(1),y(2),y(3),y(4),y(5),y(6),k)
end
37