Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Rubén Agapito
Verano 2017
b
Índice general
i
ii
Prefacio
Los contenidos de estos apuntes de clase están bajo constante supervisión. Si existe alguna sugeren-
cia o error, por favor mandar un correo electrónico al autor: ruben.agapito@pucp.edu.pe
Rubén Agapito
San Miguel, febrero de 2017
Lima, Perú.
iii
iv Prefacio
Problemas de Algebra Lineal
1
Sección 1.1
Ejemplo 1
Genere una matriz de ceros A de tamaño 3 × 8, y una matriz identidad extendida B del mismo
tamaño de A.
Las funciones zeros() y ones() también pueden ser usados para definir arreglos multidimensio-
nales. Por ejemplo, zeros(3,4,5) nos da un arreglo de ceros de tamaño 3 × 4 × 5.
La función rand() también puede usarse para definir arreglos aleatorios multidimensionales. La
sentencia B = rand(size(A)) puede usarse para declarar una matriz aleatoria B del mismo tamaño
de A.
Si deseamos una distribución uniforme de números aleatorios en el intervalo ]a, b[, primero ge-
neramos una matriz aleatoria en ]0, 1[ y luego en el intervalo pedido:
1
2 Problemas de Algebra Lineal
V = rand (m ,n ) ;
V1 = a + (b - a ) * V % matriz seudoaleatoria pedida
La función randn() se usa para definir matrices aleatorias con distribución normal estándar (me-
dia cero y varianza uno). En caso deseemos una matriz aleatoria con media µ y varianza σ2 , esto es,
una distribución N(µ, σ2 ), hacemos algo similar al caso anterior
donde todos los elementos que no están en la diagonal principal son cero. En M ATLAB, la función
diag() es usada para tratar con problemas que estén relacionados a construir (o extraer) matrices
diagonales. La sintaxis es
Ejemplo 2
A = blkdiag( A 1 , A 2 ,..., A n )
Ejemplo 3
Una matriz de Hilbert es un caso particular de una matriz de Hankel cuadrada, en donde la entrada
(i, j) está definida por A(i, j) = 1/(i + j − 1). La sintaxis para generarla en M ATLAB es A = hilb(n).
Se sabe que matrices de Hilbert grandes son mal condicionadas. Por ende, problemas de redondeo
pueden ocurrir al invertir tal matriz. Felizmente, en M ATLAB existe la función invhilb() que nos
permite calcular exactamente la inversa de una matriz de Hilbert de tamaño n × n, H=invhilb(n).
Como las matrices de Hilbert están muy cercanas a matrices singulares, debemos ser muy cuida-
dosos al manipular estas matrices. Se sugiere que se use cálculo simbólico para tal fin. Si un método
numérico es utilizado, no debemos olvidarnos de validar los resultados.
Para un vector fila c = [c 1 , c 2 , . . . , c n ], una matriz de Vandermonde n × n es tal que su entrada (i, j)
n− j
satisface V (i, j) = c i , i, j = 1, 2, . . . , n
c 1n−1 c 1n−2
··· c1 1
c n−1 c 2n−2 ··· c2 1
2
. .. .. .. ..
..
V = . . . .
n−1
c nn−2
c n−1 −1 ··· c n−1 1
c nn−1 c nn−2 ··· cn 1
Ejemplo 4
Sección 1.2
El Método de Factorización LU
Sea A ∈ Rn×n . Asumamos que existen dos matrices L y U, triangular inferior y triangular superior,
respectivamente, tales que
A = LU.
Llamaremos a esta descomposición una factorización LU de A. Si A es no singular, entonces L y U
también lo deben ser. Más aún, sus elementos en la diagonal principal deben ser diferentes de cero.
Para resolver A~x = ~
b, si tenemos una descomposición LU de A, basta ahora resolver dos sistemas
triangulares
L~y = ~
b, U~x = ~y.
Ambos sistemas son fáciles de resolver. El primero necesita un algoritmo de sustitución hacia ade-
lante
1
y1 = b1 ,
l 11
à !
1 iX−1
yi = bi − l i j yj , i = 2, . . . , n.
l ii j =1
1
xn = yn ,
u nn
à !
1 Xn
xi = yi − ui j x j , i = n − 1, . . . , 1.
u ii j = i +1
11 for k = 1: n -1
12 for i = k +1: n
13 A (i , k ) = A (i , k ) / A (k , k ) ;
14 if A (k , k ) == 0
15 error ( ' elemento diagonal nulo ')
16 end
17 j = k +1: n ;
18 A (i , j ) = A (i , j ) - A (i , k ) * A (k , j ) ;
19 end
20 end
21 end
22 end
Después de ejecutado el programa, los dos factores pueden ser obtenidos, si fuese necesario, así
Ejemplo 5
clc
A = [ -0.37 0.05 0.05 0.07;
0.05 -0.116 0 0.05;
0.05 0 -0.116 0.05;
0.07 0.05 0.05 -0.202];
b = [ -2 0 0 0] ';
%z = A \ b
y = zeros ( size ( b ) ) ; x = y ; %inicializaciones
A = lugauss ( A ) ; % factorizacion LU sin pivoteo
% sustitucion hacia adelante
y (1) = b (1) ;
for i = 2:4
y ( i ) = b ( i ) -A (i ,1: i -1) * y (1: i -1) ;
end
% sustitucion hacia atras
x (4) = y (4) / A (4 ,4) ;
for i = 3: -1:1
x ( i ) = ( y ( i ) -A (i , i +1:4) * x ( i +1:4) ) / A (i , i ) ;
end
x
6 Problemas de Algebra Lineal
Obtenemos la solución x = [8.1172, 5.9893, 5.9893, 5.7779]T , la cual es la misma si usamos el ope-
rador backslash: A\b.
Ejemplo 6
Muestre en M ATLAB que la solución exacta es ~x = [1, 1, 1]T (independientemente del valor de ε).
Si ε = 1, obtenga la factorización LU de A. Si ε = 0, ¿es posible, a pesar del hecho que A sea no
singular, encontrar una factorización LU (sin pivoteo parcial) de A?
Solución. Digitamos
syms e
A = [1 1 - e 3; 2 2 2; 3 6 4];
b = [5 - e ; 6; 13];
% solucion exacta
x = A\b
C = lugauss ( A ) % factorizaci ó n LU
Se obtiene la factorización
[ 1, 0, 0]
[ 2, 1, 0]
[ 3, (3*e + 3)/(2*e), 1]
>> U = triu(C)
U =
[ 1, 1 - e, 3]
[ 0, 2*e, -4]
[ 0, 0, (2*(3*e + 3))/e - 5]
P ROPOSICIÓN 1.1. Para una matriz dada A ∈ Rn×n , su factorización LU existe y es única ⇔
las submatrices principales A i de A de orden i = 1, . . . , n − 1 (esto es, aquellas que se obtienen al
restringir A a sus primeras i filas y columnas) son nosingulares. Este resultado también es válido
para cualquier A ∈ C n×n .
Si reemplazamos en las desigualdades anteriores ≥ por >, decimos que la matriz A es estricta-
mente diagonalmente dominante (por filas o por columnas, respectivamente). Esta definición
también es válida para cualquier matriz A ∈ Cn×n .
[1] D Xue, Y Chen, Scientific Computing with MATLAB, CRC Press, Taylor & Francis Group, Flori-
da, 2da Ed, 2016. Disponible en biblioteca.