Académique Documents
Professionnel Documents
Culture Documents
Imprimir
Índice
2/48
1. Introducción
2. Operaciones con matrices
• Producto de una matriz por un vector
• Producto de dos matrices
– Fórmula de Strassen
3. Normas
• Vectoriales
• Matriciales
4. Condicionamiento de sistemas de ecuaciones
Full Scrn
Imprimir
Introducción
3/48
Las manipulaciones numéricas de vectores y matrices son
operaciones fundamentales en los métodos que estamos analizando
en este curso.
Imprimir
Operaciones con matrices
4/48
[m × n] · [n × 1] = [m × 1].
5/48
∗
∗ P RODUCTO y = Ax
∗
Hacer y = 0
for i = 1 to m
for j = 1 to n
y(i) = y(i) + A(i, j)x(j)
end
end
Full Scrn
Imprimir
6/48
[m,n]=size(A);
y=zeros(m,1);
for i=1:m
for j=1:n
y(i)=y(i)+A(i,j)*x(j);
end
end
Aunque no es necesario pues todo funciona bien, podemos darnos
cuenta que el bucle en j materializa el producto interior de la fila i de
A por el vector x.
Full Scrn
Imprimir
Se podrı́a entonces hacer algo un poquito más sofisticado como lo
que sigue.
7/48
function y = MatVecF(A,x)
%
[m,n] = size(A);
y = zeros(m,1);
for i=1:m
y(i) = A(i,:)*x;
end;
Imprimir
Un algoritmo que plasma la recurrencia general de esto es el que
sigue.
8/48
function y = MatVecC(A,x)
%
[m,n] = size(A);
y = zeros(m,1);
for j=1:n
y = y + A(:,j)*x(j);
end;
Imprimir
Si, como es lo habitual, guarda la matriz por columnas, esta
operación requerirá menos tiempo que la versión por filas pues los
elementos que aquı́ se van accediendo están contiguos en la 9/48
memoria.
Imprimir
Producto de dos matrices
Si A ∈ <m×r y B ∈ <r×n , el producto C ∈ <m×n de estas dos 10/48
∗
∗ P RODUCTO C = AB
∗
Hacer C = 0
for j = 1 to n
for i = 1 to m
for k = 1 to r
C(i, j) = C(i, j) + A(i, k) ∗ B(k, j)
end
end
end
Full Scrn
Imprimir
AB = C ⇐⇒ cij = a(i)b(j)
Cada coeficiente cij de la matriz resultante se puede contemplar
a(i) iselaresultado
como de bun
row vector, is a column
(j)producto vector.
interior tal como se indica.
11/48
i i
j = j
cij
end Imprimir
Ahora bien, cada = C j de⇐⇒
ABcolumna c(j)
la matriz C es=el Ab (j)
resultado de
multiplicar la matriz A por el vector columna j -ésimo de B como
c(j) and
indica b(j) are column vectors.
la figura. 12/48
i j j
=
r
A b( j ) c( j )
Para implementar un algoritmo eficazmente hay que tener en cuenta
lo hecho
The al estudiar
column view ofelthe
producto de matrices
matrix–matrix por vectores.
product AB = C El is
resultado es el que se lista a continuación.
helpful because it shows the relationship between the columns of
A and the columns of C .
Full Scrn
Imprimir
function C = MatMatVec(A,B)
%
13/48
[m,r] = size(A);
[r,n] = size(B);
C = zeros(m,n);
for j=1:n
C(:,j) = C(:,j) + A*B(:,j);
end;
Imprimir
Según esto,
r
X
C = AB = A(:, k)B(k, :).
14/48
k=1
function C = MatMatExte(A,B)
%
[m,r] = size(A);
[r,n] = size(B);
C = zeros(m,n);
for k=1:r
C = C + A(:,k)*B(k,:);
end;
El número de operaciones que realizan todos estos métodos es
O(mnp) multiplicaciones e igual número de sumas/restas.
Full Scrn
Fórmula de Strassen
La fórmula o esquema de Strassen para multiplicar dos matrices A y
B cuadradas y de dimensión 2p se basa en reordenar los cálculos
de una forma muy ingeniosa.
Si A y B son 2 × 2, el producto es
C11 C12 A11 A12 B11 B12 A11 B11 + A12 B21 A12 B12 + A12 B22
= = .
C21 C22 A21 A22 B21 B22 A21 B11 + A22 B21 A21 B12 + A22 B22
Esta operación necesita 8 multiplicaciones y 4 sumas.
El esquema se Strassen reagrupa las operaciones de tal manera que
Full Scrn
Imprimir
se necesiten 7 multiplicaciones y 18 sumas de esta forma.
P1 = (A11 + A22)(B11 + B22)
16/48
P2 = (A21 + A22)B11
P3 = A11(B12 − B22)
P4 = A22(B21 − B11)
P5 = (A11 + A12)B22
P6 = (A21 − A11)(B11 + B12)
P7 = (A12 − A22)(B21 + B22)
C11 = P1 + P4 − P5 + P7
C12 = P3 + P5
C21 = P2 + P4
C22 = P1 + P3 − P2 + P6
Generalizando, las 7 multiplicaciones son de matrices m × m por lo
que se requieren
7 3 7 2 9
m multiplicaciones + m (m − 2) + m2 sumas.
8 8 2 Full Scrn
Imprimir
La operación natural requerirı́a m3 multiplicaciones y m2 (m − 1)
sumas.
17/48
Para un m suficientemente grande el procedimiento de Strassen
reduce las operación por un factor de alrededor de 7/8.
Imprimir
function C = strass(A,B)
%
18/48
% A,B matrices n x n, n potencia de 2.
%
[n,n] = size(A);
if n <= 16
C = A*B;
else
m = n/2; u = 1:m; v = m+1:n;
P1 = strass(A(u,u)+A(v,v),B(u,u)+B(v,v));
P2 = strass(A(v,u)+A(v,v),B(u,u));
P3 = strass(A(u,u),B(u,v)-B(v,v));
P4 = strass(A(v,v),B(v,u)-B(u,u));
P5 = strass(A(u,u)+A(u,v),B(v,v));
P6 = strass(A(v,u)-A(u,u),B(u,u) + B(u,v));
P7 = strass(A(u,v)-A(v,v),B(v,u)+B(v,v));
C = [ P1+P4-P5+P7 P3+P5; P2+P4 P1+P3-P2+P6];
end
Full Scrn
Imprimir
Normas
19/48
Vectoriales
Si en un espacio vectorial E sobre K (< o C) se define una norma
vectorial como una aplicación k · k : E → < que verifica
Imprimir
Es una generalización del hecho de que un lado de un triángulo no
puede ser mayor que la suma de los otros dos: ver figura.
20/48
u+v v
ku − vk ≥ kuk − kvk.
En el espacio vectorial Kn , para 1 ≤ p < ∞, se tiene la familia de
normas
1/p
p p
kxkp = |x1| + · · · + |xn| ,
denominadas normas p de Hölder.
Full Scrn
Imprimir
Casos particulares lo constituyen las correspondientes a p = 1 y
p = 2:
n 21/48
X
kxk1 = |xi|
i=1
p
kxk2 = |x1|2 + · · · + |xn|2 .
Imprimir
Si la bola cerrada unidad en <2 es el conjunto {x ∈ <2 : kxk ≤ 1},
sus formas para las normas vectoriales 1, 2, ∞, y p son las que
representa la tabla. 22/48
2
x1 = |xi |
i=1
√
x2 = |x1 |2 + |x2 |2 = xT x
x∞ = max |xi |
1≤i≤2
1/p
xp = |x1 | + |x2 |
p p
, (1 ≤ p < ∞)
Full Scrn
Imprimir
En el espacio C[0, 1], de funciones continuas del intervalo [0, 1] en C,
son normas las dadas por
"Z #1/p 23/48
1
kf kp = |f (t)|p dt
0
y por
kf k∞ = máx.t∈[0,1]|f (t)| .
Imprimir
Matriciales
24/48
Una norma matricial es una norma vectorial compatible con el
producto.
[0, 1]T
A1 = 4
[1, 0]T
norma 1
[1, 0]T
A2 ≈ 2,9208
norma 2
A∞ = 3
norma ∞
Full Scrn
Imprimir
La aplicación transforma el vector e1 = [1, 0]T en sı́ mismo y
e2 = [0, 1]T en [2, 2]T .
29/48
Tomando la norma 1, el vector unitario que más se amplifica al
aplicarle la transformación es [0, 1]T (o [0, −1]T ), que pasa a ser
[2, 2]T . Su factor de amplificación, en términos de la norma 1, es 4.
Imprimir
Alcanzado el umbral que define la zona denominada de fluencia,
incrementos muy pequeños de la carga suponen,
proporcionalmente, grandes estiramientos del cable. Antes de este 31/48
umbral, el problema estiramiento/carga se puede decir que está bien
condicionado; en la zona de fluencia, por el contrario, el problema
está mal condicionado.
Imprimir
El cambio relativo en la norma euclı́dea del vector b es
p
k∆bk2 0,042 + 0,062
= √ ≈ 0,0050. 33/48
kbk2 32 + 142
Imprimir
Es decir, un cambio relativo en la norma euclı́dea de b̂ igual a
p
0,042 + 0,062 34/48
√ = 0,0057,
42 + 122
produce un cambio en el vector solución igual a:
√
52 + 12
√ = 3,6055.
12 + 12
Evidentemente, el segundo sistema es mucho más sensible a
cambios en el término independiente que el primero.
x2 x2
x1 x1 Full Scrn
(a) (b)
Imprimir
En la figura se representan geométricamente estos dos sistemas de
ecuaciones: en (a) el primero; en (b) el segundo.
35/48
Como se puede apreciar, las dos rectas que representan las
ecuaciones del primer sistema se cortan nı́tidamente en el punto
[1, 1]T .
Imprimir
con la de
Ax = b.
Designemos por k · k cualquier norma vectorial y su correspondiente 36/48
norma matricial consistente. De las igualdades
A(x + ∆x) = b + ∆b y Ax = b,
se obtiene, restando y despejando ∆x, que
∆x = A−1∆b.
De la definición de norma matricial consistente con una norma
vectorial (ver apéndice ??) se tiene que
k∆xk ≤ kA−1k k∆bk (1)
y que kbk ≤ kAk kxk o, lo que es lo mismo, que
1 kAk
≤ . (2)
kxk kbk
Combinando (1) y (2) se deduce que el error relativo, k∆xk/kxk, de Full Scrn
Imprimir
39/48
σ2 σ1
{x} {Ax}
Imprimir
∆A · ∆x, que
k∆xk ≤ kA−1k k∆Ak kxk.
Expresión que también se puede escribir como 40/48
k∆xk k∆Ak
≤ kA−1k kAk .
kxk kAk
Imprimir
Teorema 1 Para toda matriz A de rango completo:
1. Su número de condición κ(A) ≥ 1. 41/48
2. κ(A) = κ(A† ).
3. κ(αA) = κ(A) para todo escalar α 6= 0.
σn(A)
4. κ2 (A) = , donde σn y σ1 son, respectivamente, los valores
σ1(A)
singulares mayor y menor de la matriz A.
máx.i |λi (A)|
5. κ2 (A) = , si A es simétrica.
mı́n.i |λi (A)|
6. κ2 (AT A) = κ22 (A).
7. Su número κ2 (A) = 1 si la matriz es la identidad o se trata de una
matriz ortogonal.
8. Su número de condición κ2 (A) es invariante frente a transformacio-
nes ortogonales.
Full Scrn
y
−1 1 1 1
kA†k22 = máx.1≤i≤nλi T
A A = máx.i = = .
σi2 mı́n.iσi2 σ12
Por lo tanto
σn(A)
κ2(A) = .
σ1(A)
5. Cuando A
pes simétrica
p
σi(A) =
λi(AT A) =
λ2i (A)
= |λi(A)|. En consecuencia,
máx.i |λi (A)| Full Scrn
κ2(A) = .
mı́n.i |λi (A)| Imprimir
6. De la definición de valor singular, de acuerdo con el punto 4 de
este teorema, s
máx.i λi (AT A) 43/48
κ2(A) = .
mı́n.i λi (AT A)
Como AT A es definida positiva, si B = AT A, B T B = B 2 y
λ(B 2) = λ2(B).
Se tiene entonces que
r 2
r
T máx.i λi (B ) máx.i λ2i (B)
κ2(A A) = =
mı́n.i λi (B 2 ) mı́n.i λ2i (B)
máx.i λi (B)
= = κ22(A).
mı́n.i λi (B)
7. Si la matriz es ortogonal ola identidad,
kAk22 = máx.1≤i≤nλi AT A = 1, lo que implica que su número de
condición κ2 es 1.
8. Esta última propiedad se deduce inmediatamente recordando
que QQT = I y que, por tanto, kQAk2 = kAQk2 = kAk2 . Full Scrn
Imprimir
El número de condición de una matriz indica también lo cerca que
esa matriz está de la singularidad.
44/48
Volvamos al ejemplo que utilizábamos para introducir estos
conceptos. La matriz
8 −5
A= ,
4 10
cuya inversa es
0,10 0,05
A−1 = ,
−0,04 0,08
tiene un número de condición
κ1(A) = kAk1 kA−1k1 = 15 · 0,14 = 2,1.
El de
0,66 3,34
 = ,
1,99 10,01
cuya inversa es
250,25 83,5
Â−1 =
Full Scrn
,
49,75 −16,5 Imprimir
es κ1 (Â) = kÂk1 kÂ−1 k1 = 13,35 · 300 = 4005: tres órdenes de
magnitud superior.
45/48
Ejemplo
Imprimir
Ejemplo
1 2
1 2
1 2
.
. .
.. ..
1 2
1
Su inversa es
1 −2 4 · · · (−2)n−1
n−2
1 −2 (−2)
..
1 . .
... ...
1
Full Scrn
Imprimir
Se tiene que
Imprimir