Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a 22 −
a21
a11
a12 x 2... a2n −
a 21
a11
a1n x n= b2 −
a21
a11
b1
o
a' 22 x 2... a ' 2n x n= b' 2
Eliminación hacia adelante
a21
● Es decir, F '2= F2− F1
a11
● Se procede igual con las restantes filas,
a31 a n1
F ' 3= F 3− F 1 ; ... ; F ' n = F n− F1
a11 a11
Para obtener a11 x1 a12 x 2... a1n x n= b1
a ' 22 x2 ... a ' 2n x n = b ' 2
a' 32 x 2... a ' 3n x n = b' 3
........... ..........
a ' n2 x 2... a' nn x n= b' n
Eliminación hacia adelante
● Se toma como fila pivote la 2, y se efectúan las
operaciones
a32 a n2
F ' ' 3= F ' 3− F ' 2 ; ... ; F ' ' n= F ' n− F '2
a22 a22
[ ]{ } { }
a11 a 12 a 13 ... a 1n x 1 b1
0 a ' 22 a ' 23 ... a ' 2n x 2 b'2
0 0 a ' ' 33 ... a ' ' 3n ⋅ x 3 = b ' '3
... ... ... ... ... ... ...
n−1
0 0 0 ... a nn xn n−1
bn
Sustitución hacia atrás
n−1
bn
● De la última ecuación, xn= n−1
ann
n− 2 n− 2
b n−1 −a n−1, n xn
● De la ecuación n-1, x n−1= n− 2
a n−1, n−1
● En general,
n
i−1 i−1
b
i − ∑ a
ij xj
j= i1
xi= i−1
Con i = n-1, n-2, ..., 2, 1
aii
Costo computacional (9.2.1)
● Se demuestra que el número de operaciones
requeridas es del orden de
[ ]
3 2 3
2n 2 n 2n 2
lim +O( n ) + + O( n) = +O( n )
n→ ∞ ⏟3 2
⏟ 3
eliminación hacia adelante sustitución hacia atrás
Pseudocódigo
leer A, b; iniciar n # n: número de filas de A
iniciar x en cero # x: vector de longitud n
Jjjjjjjjjjjjjjjjjjjjjjj
# eliminación hacia adelante
repetir para i desde 1 hasta n1:
repetir para j desde i+1 hasta n:
factor = A(j,i) / A(i,i)
repetir para k desde i hasta n:
A(j,k) = A(j,k) factor * A(i,k)
b(j) = b(j) – factor * b(i)
# sustitución hacia atrás
x(n) = b(n) / A(n,n)
repetir para i desde n1 hasta 1 cada 1:
x(i) = b(i)
repetir para j desde i+1 hasta n:
x(i) = x(i) – A(i,j) * x(j)
x(i) = x(i) / A(i,i)
mostrar x
Ejemplo 9.5 pág. 258
● Resolver por Eliminación de Gauss
● Código en Python: gauss.py.
Dificultades en los métodos de
eliminación
● División por cero:
2 x 2 + 3 x 3= 8
4 x1 + 6 x 2 + 7 x 3 =−3
2 x1 + x 2 + 6 x 3= 5
● Errores de redondeo
● Sistemas mal condicionados
Sistemas mal condicionados
● Pequeños cambios en los coeficientes
provocan grandes cambios en las soluciones
2 x1100000 x 2 =100000
x1 x 2= 2
Problemas 9.1 a 9.18 pag. 279
Descomposición LU
● Es más eficiente que la eliminación de Gauss
cuando deben resolverse numerosos sistemas
con los mismos coeficientes [A], pero distintos
términos {B}
● La propia eliminación de Gauss se puede
expresar como una descomposición LU
Descomposición LU
● Sea un sistema de ecuaciones
[ A] {X }={B} ⇒ [ A] {X }−{B}=0
Que pueda expresarse de la forma
[ ]{ } { }
u 11 u 12 u 13 x 1 d 1
0 u 22 u 23 x 2 = d 2 ⇒ [U ]{X }−{D}=0
0 0 u 33 x 3 d 3
Luego de la eliminación hacia adelante de Gauss.
Descomposición LU
Y que existe una matriz [L] de la forma
[ ]
1 0 0
L= l 21 1 0
l 31 l 32 1
Tal que
[ L] { [ U ] {X }−{D} } =[ A] {X }−{B}
Por lo tanto
[ L][ U ]=[ A] , [ L] {D}={B}
Pasos en la descomposición LU
Descomposición LU con eliminación
de Gauss
● Se puede demostrar que
[ ] [ ]
a 11 a12 a13 1 0 0
U = 0 a ' 22 a ' 23 , L= f 21 1 0
0 0 a ' ' 33 f 31 f 32 1
donde
a ' 22 =a22 − f 21 a12 ; a ' 23=a23 − f 21 a13
a ' ' 33=a 33 − f 31 a 13 − f 32 a ' 23
a 21 a 31 a ' 32
y f = , f 31 = , f 32 =
21
a 11 a 11 a ' 22
Ejemplo 10.1
● Obtenga una descomposición LU para la matriz
del ejemplo 9.5
[ ]{ } { }
3 −0.1 −0.2 x 1 7.85
0.1 7 −0.3 x 2 = −19.3
0.3 −0.2 10 x 3 71.4
Solución del sistema
● Sustitución hacia adelante para resolver
[ L] {D}={B}
d 1= b1
i−1 i−1
d i = bi − ∑ l ij d j = bi − ∑ f ij d j , i=2,3 , ... , n
j=1 j=1
Solución del sistema
● Sustitución hacia atrás para resolver
[U ] {X }={ D}
dn
xn=
u nn
n
d i− ∑ u ij x j
j= i1
xi= , i= n−1, n−2,... ,1
u ii
Ejemplo 10.2
● Encontrar la solución del problema 10.1
[ ]{ } { }
3 −0.1 −0.2 x 1 7.85
0.1 7 −0.3 x 2 = −19.3
0.3 −0.2 10 x 3 71.4
● Código en Octave
para descomposición LU: descLU.m
● Código en Python
para descomposición LU: descLU.py
Costo computacional
● El trabajo total es igual a la Eliminación de
Gauss,
3
2n 2
O n
3
● Sólo que se distribuye en partes iguales entre
la descomposición y la sustitución
Eliminación de Gauss con Descomposición LU:
Pseudocódigo
leer A, b; iniciar n # n: número de filas de A
crear L # matriz identidad con n filas
iniciar x en cero # x: vector de longitud n
copiar A en U, x en d
# descomposición de A
repetir para i desde 1 hasta n1:
repetir para j desde i+1 hasta n:
L(j,i) = U(j,i) / U(i,i)
repetir para k desde i hasta n:
U(j,k) = U(j,k) – L(j,i) * U(i,k)
# sustitución hacia adelante
d(1) = b(1)
repetir para i desde 2 hasta n:
d(i) = b(i)
repetir para j desde 1 hasta i1:
d(i) = d(i) – L(i,j) * d(j)
Eliminación de Gauss con Descomposición LU:
Pseudocódigo
(continuación)
# sustitución hacia atrás
x(n) = d(n) / U(n,n)
repetir para i desde n1 hasta 1 cada 1:
x(i) = d(i)
repetir para j desde i+1 hasta n:
x(i) = x(i) – U(i,j) * x(j)
x(i) = x(i) / U(i,i)
mostrar x
Matriz Inversa
● Es aquella que satisface
−1 −1
[ A][ A] =[ A] [ A]= I
● Supongamos un sistema de 3 x 3. Para
calcular la primera columna de inv A, se
resuelve el sistema
[ ]{ } { }
−1
a11 a 12 a 13 a 11 1
−1
a 21 a 22 a 23 a 21
=0
a 31 a 32 a 33 a −1 0
31
Matriz Inversa
● para calcular la segunda columna de inv A,
[ ]{ }{}
−1
a11 a 12 a 13 a 12 0
−1
a 21 a 22 a 23 a 22
=1
a 31 a 32 a 33 a −1 0
32
[ ]{ }{}
−1
a11 a 12 a 13 a 13 0
−1
a 21 a 22 a 23 a 23
=0
a 31 a 32 a 33 a −1 1
33
Matriz inversa
● Es decir, resolver n sistemas para una matriz de n x n
● Como A no cambia, conviene usar el algoritmo de
descomposición LU visto
# se calcula la matriz inversa invA
# z es el número de columna de invA a calcular
repetir para z desde 1 hasta n:
iniciar b en cero # b: vector columna de longitud n
b(z) = 1 # b es la columna z de la matriz identidad
# sustitución hacia adelante
d(1) = b(1)
repetir para i desde 2 hasta n:
d(i) = b(i)
repetir para j desde 1 hasta i1:
d(i) = d(i) – L(i,j) * d(j)
Cálculo de la Matriz Inversa: Pseudocódigo
(continuación)
# sustitución hacia atrás
# se calcula x: columna z de la matriz inversa
x(n) = d(n) / U(n,n)
repetir para i desde n1 hasta 1 cada 1:
x(i) = d(i)
repetir para j desde i+1 hasta n:
x(i) = x(i) – U(i,j) * x(j)
x(i) = x(i) / U(i,i)
# se copian los elementos x(i) en la columna z de invA
repetir para i desde 1 hasta n:
invA(i,z) = x(i)
mostrar invA
[ ]
1 1
1
2 3
1 1 1
[ A]=
2 3 4
1 1 1
3 4 5
Problemas 10.9 a 10.21
Matrices bandeadas
● Aparecen en la solución numérica de EDs
| |
j j−1
x −x i i
|εa , i|= j
100 %<ε s , i=1,2,. .. , n
x i
Métodos iterativos
● Método de Gauss-Seidel
i−1 n
b i −∑ aij x kj − ∑ a ij x k−1
j
k j=1 j=i1
x =
i , i=1,2 , ... , n
a ii
● Método de Jacobi
i−1 n
b i −∑ aij x k −1
j − ∑ a ij x k −1
j
k j=1 j=i1
x =
i , i=1,2 , ... , n
a ii
Métodos iterativos
[ ]{ } { }
3 −0.1 −0.2 x 1 7.85
0.1 7 −0.3 x 2 = −19.3
0.3 −0.2 10 x 3 71.4
Ejemplo 11.3 pag. 311
● Solución con planilla de cálculo: seidel.ods
jacobi.ods
● Solución en Octave: seidel.m , jacobi.m
● Solución en Python: gaussSeidel.py
exSeidel.py
jacobi.py
exJacobi.py
Método de Gauss-Seidel: Pseudocódigo
leer A, b; iniciar n # n: número de filas de A
iniciar x, xAnt en cero # x, xAnt: vectores de longitud n
iniciar iter=0, iterMax, ea(valor grande), tol
repetir mientras (ea>tol and iter<iterMax):
xAnt = x
mayor = 0
repetir para i desde 1 hasta n:
x(i) = b(i)
repetir para j desde 1 hasta n:
si i es distinto de j:
x(i) = x(i) – A(i,j) * x(j)
x(i) = x(i) / A(i,i)
# ea para la incógnita x(i)
eaXi = abs((x(i)xAnt(i))/x(i))*100
si eaXi > mayor:
mayor = eaXi
ea = mayor # ea: mayor eaXi en una iteración
iter = iter + 1
mostrar x
Método de Jacobi: Pseudocódigo
leer A, b; iniciar n # n: número de filas de A
iniciar x, xAnt en cero # x, xAnt: vectores de longitud n
iniciar iter=0, iterMax, ea(valor grande), tol
repetir mientras (ea>tol and iter<iterMax):
xAnt = x
mayor = 0
repetir para i desde 1 hasta n:
x(i) = b(i)
repetir para j desde 1 hasta n:
si i es distinto de j:
x(i) = x(i) – A(i,j) * xAnt(j)
x(i) = x(i) / A(i,i)
# ea para la incógnita x(i)
eaXi = abs((x(i)xAnt(i))/x(i))*100
si eaXi > mayor:
mayor = eaXi
ea = mayor # ea: mayor eaXi en una iteración
iter = iter + 1
mostrar x
Criterio de convergencia
● Se demuestra (11.2.1) que el método es
convergente si [A] es diagonalmente
dominante:
n
∣a ii∣ ∑ ∣aij∣ , ∀ i
j=1
j≠i
c3⋅3.5=2⋅251.5⋅10
Sistema de reactores
Sistema de reactores
6 c1−c 3=50
−3 c13 c2 =0
−c 29 c3=160
−c 2−8 c311 c 4−2 c 5=0
−3 c1−c2 4 c 5=0
[ ]{ } { }
6 0 −1 0 0 c1 50
−3 3 0 0 0 c2 0
0 −1 9 0 0 c 3 = 160
0 −1 −8 11 −2 c 4 0
−3 −1 0 0 4 c 0
5
Análisis de un reticulado
● Equilibrio de fuerzas
∑ F H =0
∑ F V =0
Análisis de un reticulado
Análisis de un reticulado
● Nodo 1
∑ F H =−F 1 cos 30 °F 3 cos 60 °F 1h =0
∑ F V =−F 1 sin 30 °−F 3 sin 60 °F 1v =0
● Nodo 2
∑ F H =F 2 F 1 cos 30 °F 2h H 2=0
∑ F V =F 1 sin 30 °F 2v V 2 =0
● Nodo 3
∑ F H =−F 2 −F 3 cos 60 °F 3h =0
∑ F V =F 3 sin 60 °F 3v V 3=0
Análisis de un reticulado
[ ]{ } { }
0.866 0 −0.5 0 0 0 F1 0
0.5 0 0.866 0 0 0 F 2 −1000
−0.866 −1 0 −1 0 0 F3 0
=
−0.5 0 0 0 −1 0 H 2 0
0 1 0.5 0 0 0 V2 0
0 0 −0.866 0 0 −1 V 0
3
Análisis de un circuito
● Ley de Kirchhoff
∑ i=0
● Ley de Ohm
∑ iR= V
Análisis de un circuito
Análisis de un circuito
● Ley de Kirchhoff
i12 i 52 i 32 =0
i 65 −i 52 −i 54 =0
i 43 −i 32 =0
i 54 −i 43=0
● Ley de Ohm
−i 54 R54 −i 43 R 43 −i 32 R 32 i 52 R 52 =0
−i 65 R 65−i 52 R 52 i 12 R12 −200=0
Análisis de un circuito
[ ]{ } { }
1 1 1 0 0 0 i 12 0
0 −1 0 1 −1 0 i 52 0
0 0 −1 0 0 1 i 32 0
=
0 0 0 0 1 −1 i 65 0
0 10 −10 0 −15 −5 i 54 0
5 −10 0 −20 0 0 i 200
43
Sistemas masa-resorte
● Segunda ley de Newton
∑ F=m a
2
d x
m 2 =F D −F U
dt
● En el reposo, a = 0
∑ F=0
● Ley de Hooke
F=k x
Sistemas masa-resorte
Sistemas masa-resorte
● Masa 1
2 k x 2 −x 1 m1 g−k x 1=0
● Masa 2
k x 3−x 2 m 2 g−2 k x 2− x 1 =0
● Masa 3
m 3 g−k x 3− x 2 =0
[ ]{ } { }
3 k −2 k 0 x 1 W 1
−2 k 3 k −k x 2 = W 2
0 −k k x3 W 3
[ K ]{X }={W }
Sistemas masa-resorte
● Con m1 = 2 kg, m2 = 3 kg, m3 = 2.5 kg, k = 10
kg/s2,
[ ]{ } { }
30 −20 0 x 1 19.6
−20 30 −10 x 2 = 29.4
0 −10 10 x 3 24.5