Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Noviembre 2019
1 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
INTRODUCCIÓN
2 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Introducción
Matricialmente:
a11 a12 . . . a1n x1 b1
a21 a22 . . . a2n x2 b2
. =
.. .. .. .. .. ..
. . . . . .
an1 an2 . . . ann xn bn
3 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Introducción
Ax = b
4 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
¿Cómo resolvemos Ax = b?
MÉTODOS DIRECTOS
6 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Solución algorı́tmica:
aii xi = bi i = 1, ..., n
bi
xi = i = 1, ..., n
aii
suponiendo aii 6= 0
7 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Dado el SEL:
10x1 − 7x2 = 7
−3x1 + 2x2 + 6x3 = 4
5x1 − x2 + 5x3 = 6
Matricialmente:
10 −7 0 x1 7
−3 2 6 . x2 = 4
5 −1 5 x3 6
Matriz ampliada:
10 −7 0 7
[A|b] = −3 2 6 4
5 −1 5 6
9 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Operaciones equivalentes
rk ←→ rj
αrk 7−→ rk
rk + mrj 7−→ rk
10 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Operaciones equivalentes
Demo. No la hacemos.
Objetivo: Dado el SEL Ax = b, construir un sistema
equivalente Ux = c, donde U matriz triangular superior
En “Algebra Lineal” vimos cómo aplicar operaciones elementales
para lograr esto...
11 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
PASO 1
La 1era. fila se usa para eliminar los elementos de la 1era.
columna debajo de la diagonal principal
El elemento a11 = 10 se usa como pivote
Los valores mk1 con k = 2, 3 son los multiplicadores:
a11 = 10 (pivote) 10 −7 0 7
m21 = a21 /a11 = −0.3 −3 2 6 4
m31 = a31 /a11 = 0.5 5 −1 5 6
10 −7 0 7
r2 − m21 r1 7−→ 0 −0.1 6 6.1
r3 − m31 r1 −7 → 0 2.5 5 2.5
12 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
PASO 2
Usamos la 2da. fila para eliminar los elementos de la 2da.
columna debajo de la diagonal principal
El elemento a22 = −0.1 se usa como pivote
Los valores mk2 con k = 3 es el multiplicador:
10 −7 0 7
a22 = −0.1 (pivote) 0 −0.1 6 6.1
m32 = a32 /a22 = −25 0 2.5 5 2.5
10 −7 0 7
0 −0.1 6 6.1
r3 − m32 r2 7−→ 0 0 155 155
13 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
155x3 = 155 =⇒ x3 = 1
Sustituyendo en la 2da. ecuación:
10x1 + (−7)(−1) = 7 =⇒ x1 = 0
Pivotes y multiplicadores
arq r = q + 1, q + 2, . . . , n
Los números
arq
mrq = aqq r = q+1, q+2, . . . , n
15 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
16 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
function x = Gauss(A,b)
% Cálculo solución del SEL Ax=b mediante eliminación Gaussiana
% Datos: A matriz invertible nxn, b vector nx1
% Resultado: x solución nx1 del sistema Ax=b
% Inicialización
[n n] = size(A);
% Cálculo matriz ampliada
Aum = [A b];
for q=1:n-1
...
end
x=x’;
17 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
18 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
El pivoteo trivial
% Verificación
if (Aum(q,q) == 0)
disp(’A no es inversible. No hay solución o no es única’);
break
end
19 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
PASO 1
a11 = 10 (pivote) 10 −7 0 7
m21 = a21 /a11 = −0.3 −3 2.099 6 3.901
m31 = a31 /a11 = 0.5 5 −1 5 6
10 −7 0 7
r2 − m21 r1 7−→ 0 −0.001 6 6.001
r3 − m31 r1 7−→ 0 2.5 5 2.5
21 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
PASO 2
10 −7 0 7
a22 = −0.001 (pivote) 0 −0.001 6 6.001
m32 = a32 /a22 = −2500 0 2.5 5 2.5
10 −7 0 7
0 −0.001 6 6.001
r3 − m32 r2 7−→ 0 0 15005 15006
22 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
El pivoteo parcial
|aiq |
(multiplicadores) |miq | = ≤1 i = q, q + 1, ..., n
aq̃q
24 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
25 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
for q=1:n-1
% Pivoteo parcial con escalonamiento
S = max(abs(Aum(q:n,q:n))’);
[Y,j] = max(abs(Aum(q:n,q))./S’);
26 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
2 3 2 3
F lops 3n + o(n2 ) n2 + o(n) 3n + o(n2 )
Factorización LU
28 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Ax = (LU)x = L(Ux) = Ly = b
1o ) Ly = b (hallo y)
o
2 ) Ux = y (hallo x)
¿Cómo determinamos L y U?
Matricialmente hicimos:
10 −7 0 1 0 0 10 −7 0
0 −0.1 6 = 0.3 1 0 −3 2 6 = M1 A
0 2.5 5 −0.5 0 1 5 −1 5
10 −7 0 1 0 0 10 −7 0
0 −0.1 6 = 0 1 0 0 −0.1 6 = M2 M1 A
0 0 155 0 25 1 0 2.5 5
30 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
¿Cómo determinamos L y U?
Por ende
U = M2 M1 A
M−1 −1
1 M2 U = A
Llamando L1 = M−1 −1
1 y L2 = M2 las triangulares inferiores
L1 L2 U = A =⇒ LU = A
A = LU
32 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Factorización LU
function x = DescompLU(A,b)
% Calculo solucion sistema lineal Ax=b mediante descomposicion LU
% Datos: A matriz invertible nxn, b vector nx1
% Resultado: x solucion del sistema Ax=b
... (idem Gauss.m)
% Resolucion para determinar y con sustitucion progresiva (hacia adelante)
y(1) = b(1);
for k=2:n
y(k) = b(k) - A(k,1:k-1)*y(1:k-1)’;
end
% Resolucion para determinar x con sustitucion regresiva (hacia atras)
x(n) = y(n)/A(n,n);
for k=n-1:-1:1
x(k) = (y(k) - A(k,k+1:n)*x(k+1:n)’) / A(k,k);
end
x=x’;
Ejercicio: Modificar DescompLU.m para que b pueda ser una matriz.
33 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Factorización indirecta LU
max{|−0.001| , |2.5|}
Entonces
10 −7 0 7
a22 = 2.5 (pivote) 0 2.5 5 2.5
m32 = a32 /a22 = −0.0004 0 −0.001 6 6.001
34 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Factorización indirecta LU
Matricialmente
10 −7 0 1 0 0 10 −7 0
0 −0.001 6 = 0.3 1 0 −3 2.099 6 = M1 A
0 2.5 5 −0.5 0 1 5 −1 5
10 −7 0 1 0 0 10 −7 0
0 2.5 5 = 0 0
1 0 −0.001 6 = PM1 A
0 −0.001 6 0 1 0 0 2.5 5
La matriz P se conoce como matriz de permutación
1 0 0
P= 0 0 1
0 1 0
Cada vez que intercambio filas en la eliminación Gaussiana
matricialmente estoy multiplicando por una matriz de permutación
35 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Matrices de permutación
Factorización indirecta LU
Factorización indirecta LU
Llamando:
−1
L = M0n−1 . . . M02 M01 = L1 L2 . . . Ln−1
PA = LU
PA = LU
1o ) Ly = Pb
2o ) Ux = y
39 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
[L,U] = lu(A)
Devuelve una triangular superior U y una matriz L producto
de la matriz triangular inferior y la matriz de permutación
[L,U,P] = lu(A)
Devuelve la triangular inferior L con diagonal de unos, la
triangular superior U y la matriz de permutación P de modo
que puedo reconstruir P*A = L*U
Hacer la factorización LU del ejemplo 3x3 dado originalmente
40 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
MÉTODOS ITERATIVOS
41 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
kxk > 0 ∀x 6= 0
kxk = 0 sı́ y solo sı́ x = 0
kλxk = |λ|kxk λ∈R
kx + yk ≤ kxk + kyk (desigualdad triangular)
42 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Normas vectoriales en Rn
43 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
44 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
>> x=(1:4)/5
x = 0.2000 0.4000 0.6000 0.8000
>> norm1=norm(x,1)
norm1 = 2
>> norminf=norm(x,inf)
norminf = 0.8000
45 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
function np = normap(x,p)
% Cálculo de norma p-ésima de un vector
% Datos: - x vector nx1
% - p norma a calcular (1<=p<= inf)
% Resultado:
% - np norma p-ésima de x
if p == inf
np = max(abs(x));
else
np = (sum(abs(x).ˆp)) ˆ(1/p);
end
end
46 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Metódos iterativos
48 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Metódos iterativos
Consideremos el SEL:
4x1 − x2 + x3 = 7
4x1 − 8x2 + x3 = −21
−2x1 + x2 + 5x3 = 15
50 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
(0) T
h i
(0) (0)
x0 = x 1 , x 2 , x 3
Dado el SEL Ax = b
(k) Pn (k−1)
x 1 = b1 − a
j=1, j6=i 1j jx /a11
x(k) = b2 − n (k−1)
P
j=1, j6=i a2j xj /a22
2
..
.
(k)
Pn (k−1)
xn = bn − j=1, j6=i anj xj /ann
En general para i = 1, . . . , n
n
(k) (k−1)
X
xi = bi − aij xj /aii i =, . . . , n
j=1, j6=i
para k ≥ 1
54 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
La implementación Jacobi.m
function x = Jacobi(A,b,x0,tol,itmax)
% Método iterativo de Jacobi
% A : matriz invertible nxn
% b : lado derecho n x 1
% x0 : estimación inicial
% tol : tolerancia
% itmax : número máximo de iteraciones
% x : vector nx1 aproximacion solución SEL Ax=b
n = length(b);
x0=x0’;
if diagdom(A) == 0
disp(’No se garantiza convergencia’);
end
...
55 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
La implementación Jacobi.m
...
iter = 0;
while 1
iter=iter + 1;
for i =1:n
x(i) = b(i);
for j=1:n
if j = i
x(i) = x(i) - A(i,j)*x0(j);
end
end
x(i) = x(i) / A(i,i);
end
...
56 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
...
err = normap(x-x0,2);
if err < tol
x=x’, break,
end
if iter == itmax
disp(’Número máximo de iteraciones alcanzado’);
x=x’, break
end
x0 = x;
end
end
57 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
Dado el SEL Ax = b
(k) (k−1)
b1 − nj=2 a1j xj
P
x1 = /a11
x(k) (k)
b2 − a21 x1 − nj=3 a2j xj
(k−1)
P
= /a22
2
(k) (k) (k) (k−1)
b3 − a31 x1 − a32 x2 − nj=4 a3j xj
P
x3 = /a33
..
.
(k)
Pn−1 (k)
xn = bn − j=1 anj xj /ann
En general, para i = 1, . . . , n
(k) 1 (k) (k) (k−1)
xi = bi − ai1 x1 − ... − aii−1 xi−1 − aii+1 xi+1 − ... − ain x(k−1)
n
aii
con k ≥ 1
59 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
60 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
61 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
function z = diagdom(A)
% Determina si la matriz A es diagonalmente dominante
% Datos: A matriz invertible nxn
% Resultado: z variable logica: 0 false - 1 true
n = length(A);
i = 0;
z = 1;
while ( i < n && z == 1 )
i = i+1;
if sum(abs(A(i,:))) >= 2*abs(A(i,i))
z = 0;
end
end
end
62 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
63 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
x̃ = x + ∆x
r = b − Ax̃
e = x − x̃
64 / 68
INTRODUCCIÓN MÉTODOS DIRECTOS MÉTODOS ITERATIVOS
κ(A) = kAk.kA−1 k
kx − x̃k kb − Ax̃k
≤ κ(A)
kxk kbk
Bibliografı́a
68 / 68