Post on 26-Apr-2020
transcript
Resolucion de sistema de ecuaciones lineales.Metodos directos
Juan Manuel Rabasedas
23/09/2019
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 1 / 21
Sistemas lineales
Los sistemas de ecuaciones lineales aparecen en un gran numero de areas,tanto directamente modelizando situaciones fısicas o indirectamente en lasolucion numerica de otros modelos matematicos.
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 2 / 21
Sistemas lineales
Pretendemos resolver un sistema de forma Ax = ba11x1 + a12x2 + · · ·+ a1nxn = b1a21x1 + a22x2 + · · ·+ a2nxn = b2
......
......
an1x1 + an2x2 + · · ·+ annxn = bn
(1)
con
A =
a11 a12 · · · a1na21 a22 · · · a2n
......
...an1 an2 · · · ann
∈ Mn(R), b =
b1b2...bn
∈ Rn.
(2)Nos interesa resolver sistemas de n ecuaciones con n incognitas, cuandoexista solucion y sea unica. Estas condiciones se verifican si
det(A) 6= 0 .
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 3 / 21
Sistemas Diagonales
El sistema mas sencillo que podemos resolver esta dado pora11x1 + 0 + · · · + 0 = b1
0 + a22x2 + · · · + 0 = b2... 0
. . . 0...
0 + 0 + · · · + annxn = bn
donde la solucion se calcula trivialmente haciendo
xi = bi/aii , i = 1, ..., n
Ejercicio: ¿Como podemos resolverlo en Scilab?Esto se puede escribir en Scilab
x = b./diag(A)
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 4 / 21
Sistemas Triangulares
En un sistema triangular dado pora11x1 + a12x2 + · · · + a1nxn = b1
0 + a22x2 + · · · + a2nxn = b2... 0
. . ....
...0 + 0 + · · · + annxn = bn
la ultima ecuacion es de resolucion inmediata xn = bn/ann y luego serealiza una sustitucion regresiva o remonte obteniendose lascomponentes de la solucion como
xi =1
aii
bi −n∑
j=i+1
aijxj
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 5 / 21
Sistemas Triangulares
El esquema del algoritmo es el siguiente:xn = bn/annpara i = n − 1, . . . , 1xi = (bi − A(i , i + 1 : n)x(i + 1 : n))/aii
finparaEsto se puede escribir en Scilab
x(n) = b(n)/A(n,n)
for i=n-1:-1:1
x(i) = ( b(i) - A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 6 / 21
Sistemas Triangulares
Ejercicio
Implementar en Scilab una funcion remonte que tome como parametrosuna matriz A triangular superior y un vector b y resuelva el sistema Ax = b
function s1 = remonte(A, b)
n = size(A,1)
for i = n:-1:1
x(i) = (b(i) - A(i,i+1:n)*x(i+1:n)) / A(i,i)
end
s1 = x
endfunction
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 7 / 21
Metodo de Gauss
La idea es transformar un sistema(e1) a11x1 + a12x2 + · · ·+ a1nxn = b1(e2) a21x1 + a22x2 + · · ·+ a2nxn = b2...
......
......
(en) an1x1 + an2x2 + · · ·+ annxn = bn
(3)
en uno triangular mas sencillo de resolver aplicando remonte. Si a11 6= 0,podemos sustituir e2 por e2 − a21
a11e1, eliminando el primer termino como
sigue
(e2) 0 + (a22 −a21a11
a12)x2 + · · ·+ (a2n −a21a11
a1n)xn = b2 −a21a11
b1
Continuando con las sustituciones:
e3 = e3 − a31a11
e1...
...en = en − an1
a11e1
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 8 / 21
Metodo de Gauss
Se obtiene ceros en la primer columna:(e1) a11x1 + a12x2 + · · ·+ a1nxn = b1(e2) 0x1 + a′22x2 + · · ·+ a′2nxn = b′2...
......
......
(en) 0x1 + a′n2x2 + · · ·+ a′nnxn = b′n
(4)
Continuando con las sustituciones de la siguiente manera:
e3 = e3 − a32a22
e2...
...en = en − an2
a22e2
Obtenemos ceros en la segunda columna columnaPodemos continuar hasta hacer cero todos los elementos por debajo de ladiagonal.
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos 23/09/2019 9 / 21
Metodo de Gauss
En general, cuando ya hay ceros por debajo de la diagonal, en lascolumnas 1, 2, . . . , k − 1 para obtener cero en la posicion (j, k) se hace laoperacion: ej = ej − ajk/akk ∗ ekEsto lo podemos escribir es Scilab:
mjk = a(j,k)/a(k,k)
A(j, :) = A(j, :) - mjk * A(k, :)
b(j) = b(j) - mjk * b(k)
Si evitamos operar con los elementos que ya se han puesto en cero el esquema de latriangulacion nos queda:para k = 1, . . . , n − 1
para j = k + 1, . . . , nmjk = ajk/akkajk = 0A(j , k + 1 : n) = A(j , k + 1 : n) −mjk ∗ A(k, k + 1 : n)bj = bj −mjk ∗ bk
finpara jfin-para k
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 10 / 21
Metodo de Gauss
Luego en Scilab la triangulacion nos queda:
function [s1, s2] = gauss(A, b)
a = size(A)
n = a(1)
for i = 1:(n-1)
for j = (i+1):a(1)
mjk = A(j,i)/A(i,i)
A(j,i)=0
A(j,i+1:n) = A(j,i+1:n) - mjk*A(i,i+1:n)
b(j) = b(j) - mjk*b(i)
end
end
s1 = A
s2 = b
endfunction
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 11 / 21
Factorizacion LU
Si resolvemos Ax = b con eliminacion Gaussiana (sin pivoteo) el sistemase transforma en Ux = g donde
U =
u11 u12 · · · u1n0 u12 · · · u1n
. . .
0 0 · · · unn
, con uij = a(i)ij
Podemos tener una matriz auxiliar triangular inferior, basada en loscoeficientes mjk = ajk/akk definidos anteriormente.
L =
1 0 · · · 0
m21 1 · · · 0. . .
mn1 mn2 · · · 1
Teorema
Sea A una matriz no singular y sean L y U las matrices recien definidas.Entonces si U es producida sin pivoteo se tiene que LU = A, esto es lo quese llama la factorizacion LU
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 12 / 21
2 sistemas mas sencillos
Esta factorizacion LU permite resolver el sistema a traves de 2 sistemasmas sencillos
LU = A←→{
Ly = b,Ux = y .
Ambos sistemas son triangulares, por ende faciles de resolver.Este analisis es valido siempre que existan matrices L y U, triangularinferior la primera y triangular superior la segunda tales que LU = A.Existen varios metodos para encontrar estas matrices:• lii = 1, Doolite,• uii = 1, Crout,• Si U = Lt i.e. uii = lii , ∀i , Cholesky.
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 13 / 21
Factorizacion de Cholesky
Sea (1 22 5
)Entonces (
u11 0u12 u22
)(u11 u120 u22
)=
(1 22 5
)u211 = 1
u11u12 = 2u212 + u222 = 5
Se deduce queu11 = 1u12 = 2u22 = 1
U =
(1 20 1
)Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 14 / 21
Factorizacion de Cholesky
Sea (1 22 4
)Entonces (
u11 0u12 u22
)(u11 u120 u22
)=
(1 22 4
)u211 = 1
u11u12 = 2u212 + u222 = 4
Se deduce queu11 = 1u12 = 2u22 = 0
U =
(1 20 0
)Existe U pero no la factorizacion de Cholesky, U no es inversible.
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 15 / 21
Factorizacion de Cholesky
Sea (1 22 3
)Entonces (
u11 0u12 u22
)(u11 u120 u22
)=
(1 22 3
)u211 = 1
u11u12 = 2u212 + u222 = 3
Se deduce queu11 = 1u12 = 2u22 =
√−1
Entonces no existe la factorizacion de Cholesky de A
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 16 / 21
Factorizacion de Cholesky
Caso general:
El producto de la fila 1 de Ut por la columna 1 de U da: u211 = a11 luego:
u11 =√a11
El producto de la fila 1 de Ut por la columna j de U da u11u1j = a1j luego:
u1j =a1ju11
, j = 2, . . . , n
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 17 / 21
Factorizacion de Cholesky
Al hacer el producto de la fila 2 de Ut por la columna 2 de U, se puedecalcular u22. Al hacer el producto de la fila 2 de Ut por la columna j de Use puede calcular u2j . El calculo de U se hace por fila.Supongamos ahora que se conocen los elementos de las filas1, 2, . . . , k − 1 de U y se desea calcular los elementos de la fila k de U.El producto de la fila k de Ut por la columna k de U da:
k∑i=1
u2ik = akk ,k−1∑i=1
u2ik + u2kk = akk
Luego
ukk =
√√√√akk −k−1∑i=1
u2ik , k = 2, . . . , n
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 18 / 21
Factorizacion de Cholesky
El producto de la fila k de Ut por la columna j de U da:
k∑i=1
uikuij = akj
Luego
ukj =akj −
∑k−1i=1 uikuijukk
, k = 2, . . . , n j = k + 1, . . . , n
Utilizando el producto de matrices las formulas anteriores se puedenescribir ası:t = akk − U(1 : k − 1, k)tU(1 : k − 1, k)ukk =
√t
ukj =akj−U(1:k−1,k)tU(1:k−1,j)
ukk
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 19 / 21
Factorizacion de Cholesky
Podemos almacenar los valores ukk y ukj sobre los antiguos valores de akky akj , de esta forma nos queda: t = akk − U(1 : k − 1, k)tU(1 : k − 1, k)akk =
√t
akj =akj−U(1:k−1,k)tU(1:k−1,j)
akkEl esquema del algoritmo para la factorizacion de Cholesky nos queda ası:
datos: A, e
para k = 1, ..., n
calculo de t
si t < e entonces salir
akk = sqrt(t)
para j = k + 1, ..., n
calculo de akj
finpara j
finpara k
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 20 / 21
Factorizacion de Cholesky
function [U, ind] = Cholesky(A)
eps = 1.0e-8
n = size(A,1)
U = zeros(n,n)
for k = 1:n
t = A(k,k) - U(1:k-1,k)’*U(1:k-1,k)
if t <= eps
printf("Matriz no definida positiva.\n")
ind = 0
return
end
U(k,k)= sqrt(t)
for j = k+1:n
U(k,j) = ( A(k,j) - U(1:k-1,k)’*U(1:k-1,j) )/U(k,k)
end
end
ind = 1
endfunction
Juan Manuel Rabasedas Resolucion de sistema de ecuaciones lineales.Metodos directos23/09/2019 21 / 21