x - Universidad EAFIT

Anuncio
Métodos Numéricos
Ecuaciones algebraicas lineales
Oscar Alvarado Nava
Universidad Autónoma Metropolitana, Azcapotzalco
División de Ciencias Básicas e Ingeniería
Departamento de Electrónica
Área de Sistemas Digitales y Computadoras
G314-3
[email protected]
http://legion.uam.mx/valhalla
03O
MN, Oscar Alvarado Nava
1
Introducción
ƒ
A los valores que hace que una ecuación sea cero, se
les llama raíces de la ecuación o ceros de la ecuación
f (x ) = 0
ƒ
Ahora determinaremos simultáneamente
f 1 ( x 1 , x 2 , x 3 ,..., x n
f 2 ( x 1 , x 2 , x 3 ,...,
f 3 ( x 1 , x 2 , x 3 ,...,
...
)=
xn )=
xn )=
f n ( x 1 , x 2 , x 3 ,..., x n
)=
MN, Oscar Alvarado Nava
0
0
0
0
2
Introducción
ƒ
Tales sistemas de ecuaciones pueden ser lineales o no
lineales
a11 x1 + a12 x2 +,... + a1n xn = b1
a21 x1 + a22 x2 +,... + a2 n xn = b2
...
an1 x1 + an 2 x2 +,... + ann xn = bn
MN, Oscar Alvarado Nava
3
Introducción
ƒ
Métodos para sistemas de n<4 son sencillos y fáciles
de manipular
ƒ
Actualmente con la ayuda de computadoras los
sistemas mayores pueden ser resueltos fácilmente
ƒ
Así, se pueden enfrentar ejemplos y problemas más
reales y complejos
MN, Oscar Alvarado Nava
4
Resolución Gráfica
ƒ
Estos métodos están restringidos a n<=3
3 x + 2 y = 18
− x + 2y = 2
ƒ
Si despejamos una de las variables
18 − 3 x
3
y=
= − x+9
2
2
2+ x 1
y=
= x +1
2
2
ƒ
Después graficamos
MN, Oscar Alvarado Nava
5
Resolución Gráfica
y
8
Solución x = 4, y = 3
6
y =
1
x +1
2
4
2
3
y = − x+9
2
2
4
6
8
MN, Oscar Alvarado Nava
x
6
Resolución Gráfica
ƒ
ƒ
Para una función de dos dimensiones
z = f ( x, y )
Revisar en MATLAB las comandos
ƒ meshgrid
ƒ mesh
ƒ title, xlabel, ylabel, zlabel
MN, Oscar Alvarado Nava
7
Resolución Gráfica
ƒ
Los métodos gráficos pueden ayudar a visualizar
propiedades de las soluciones
x2
x2
1
−
x1 + x 2 = 1
2
−
x1
Infinidad de soluciones
Sistemas Singulares
2 .3
x1 + x 2 = 1 .1
5
−
− x1 + 2 x 2 = 2
1
1
− x1 + x 2 =
2
2
No hay solución
x2
1
−
x1 + x 2 = 1
2
x1
1
x1 + x 2 = 1
2
Visualmente difícil de
localizar
x1
Sistemas mal condicionados
MN, Oscar Alvarado Nava
8
Regla de Cramer
ƒ
Funciona bien para un grupo pequeño de ecuaciones
ƒ
El determinante muestra cuando una matriz está mal
condicionada
[A ]{X } = {B }
 a11
[A ] =  a 21
 a 31
D = a11
a12
a 22
a 32
a 22
a 23
a 32
a 33
a13 
a 23 
a 33 
− a12
a11
D = a 21
a12
a 22
a13
a 23
a 31
a 32
a 33
a 21
a 23
a 31
a 33
− a13
a 21
a 22
a 31
a 32
MN, Oscar Alvarado Nava
9
Regla de Cramer
ƒ
Calcule los determinantes de
3 x + 2 y = 18
− x + 2y = 2
−1 2 x + y = 1
−1 2 x + y = 1 2
−1 2 x + y = 1
− x + 2y = 2
− 2 .3 5 x + y = 1 .1
−1 2 x + y = 1
3
D =
−1
2
= 3 ( 2 ) − 2 ( − 1) = 8
2
−1
1
2
D=
= − 1 (1) − 1( − 1 ) = 0
2
2
−1
1
2
−1
2
D=
−1
D =
− 1
2
− 2 .3 5
1 −1
( 2 ) − 1( − 1) = 0
=
2
2
1
1
= −1
2
MN, Oscar Alvarado Nava
(1 ) − 1 ( − 2 . 3 5 ) = − 0 . 04
10
Regla de Cramer
x1 =
b1
b2
a12
a 22
a13
a 23
b3
a32
D
a33
a11 b1
a21 b2
a13
a23
a31 b3 a33
x2 =
D
x3 =
a11
a12
b1
a21
a31
a22
a32
D
b2
b3
MN, Oscar Alvarado Nava
11
Eliminación de incógnitas
a 11 x 1 + a 12 x 2 = b 1
(1)
a 21 x 1 + a 22 x 2 = b 2
(2)
ƒ
ƒ
Si multiplicamos (1) por a21 y (2) por a11
a 11 a 21 x 1 + a 12 a 21 x 2 = b 1 a 21
(3)
a 21 a 11 x 1 + a 22 a 11 x 2 = b 2 a 11
(4)
Si restamos (3) a (4)
a21a11x1 − a11a21(5)x1 + a22a11x2 − a12a21x2 = b2a11 − b1a21
MN, Oscar Alvarado Nava
12
Eliminación de incógnitas
ƒ
Despejando x2 de (5)
x2 =
ƒ
b2 a11 − b1a21
a22 a11 − a12 a21
(6)
Sustituyendo x2 de (1) y despejando x1
b2 a11 − b1a21
a11 x1 + a12
= b1
a22 a11 − a12 a21
MN, Oscar Alvarado Nava
13
Eliminación de Gauss simple
ƒ
Extensión de eliminación de incógnitas
ƒ
ƒ
Se deberá de hacer una eliminación hacia adelante y
sustitución hacia atrás
Cuando no se toma en cuenta las divisiones entre cero, se le
llama eliminación gaussiana simple al método
a11 x1 + a12 x2 +,... + a1n xn = b1
(1)
a21 x1 + a22 x2 +,... + a2 n xn = b2
(2)
...
an1 x1 + an 2 x2 +,... + ann xn = bn
MN, Oscar Alvarado Nava
(3)
14
Eliminación de Gauss simple
ƒ
Eliminación hacia adelante
ƒ
Se deberá de llevar la matriz de coeficientes a una matriz
triangular superior
 a 11

 a 21
 a 31
a 12
a 22
a 32
a 13 c 1 

a 23 c 2 
a 33 c 3 
 a 11

 0
 0

a 12
a 13 c 1 
'
' 
a 23 c 2 
a '33 c '3 
a '22
0
MN, Oscar Alvarado Nava
15
Eliminación de Gauss simple
ƒ
Se deberá de eliminar x1 desde la segunda ecuación
hasta la n-ésima ecuación
ƒ
Se deberá de multiplicar la ecuación (1) por a21/a11
 a 21 
 a 21 
 a 21 
 a 21 
b1
 a1n x n = 
 a12 x 2 + ,... + 
 a11 x1 + 

 a11 
 a11 
 a11 
 a11 
ƒ
Restamos la ecuación anterior a la (2)

 


   a21  
 a21 
 a21 
 a21 






a21x1 −  a11x1  + a22x2 −  a12x2 +,...+ a2n xn −  a1n xn  = b2 −  b1 
 a11 
 a11 
 a11 

 


   a11  
[a
'
22
]
[
] [ ]
x 2 + ,... + a 2 n x n = b 2
'
MN, Oscar Alvarado Nava
'
16
Eliminación de Gauss simple
ƒ
El método se repite para las demás ecuaciones, por
ejemplo para la tercera ecuación
 a 31 
 a 31 
 a 31 
 a 31 
b1
 a1n x n = 
 a12 x 2 + ,... + 
 a11 x1 + 

 a11 
 a11 
 a11 
 a11 
ƒ
Al final obtendremos
a 11 x 1 + a 12 x 2 + ,... + a 1 n x n = b 1
a
'
a
'
a
'
22
32
x 2 + ,... + a
'
x 2 + ,... + a
'
2 n
3n
x n = b 2'
x n = b 3'
...
n 2
x 2 + ,... + a
'
nn
x n = b n'
MN, Oscar Alvarado Nava
17
Eliminación de Gauss simple
ƒ
Para los pasos anteriores a la ecuación (1) se le llama
ecuación pivote y al coeficiente a11 elemento pivote
ƒ
Ahora para eliminar el coeficiente a22 se toma de la
misma forma la ecuación (2) como ecuación pivote y al
elemento a22 como pivote
MN, Oscar Alvarado Nava
18
Eliminación de Gauss simple
a 11 x 1 + a 12 x 2 + a 13 x 3 + ,... + a 1 n x n = b1
a '22 x 2 + a '23 x 3 + ,... + a '2 n x n = b 2'
a '32 x 2 + a '33 x 3 + ,... + a '3 n x n = b 3'
...
a 'n 2 x 2 + a 'n 3 x 3 + ,... + a 'nn x n = b n'
a 11 x1 + a 12 x 2 + a 13 x 3 + ,... + a 1 n x n = b1
a '22 x 2 + a '23 x 3 + ,... + a '2 n x n = b 2'
a '33' x 3 + ,... + a '3' n x n = b 3''
...
a 'n' 3 x 3 + ,... + a 'nn' x n = b n''
MN, Oscar Alvarado Nava
19
Eliminación de Gauss simple
ƒ
En general
a11 x1 + a12 x2 + a13 x3 +,... + a1n xn = b1
a '22 x2 + a '23 x3 +,... + a '2 n xn = b2'
a '33' x3 +,... + a '3' n xn = b3''
...
a (nnn −1) xn = b n(n −1)
MN, Oscar Alvarado Nava
20
Eliminación de Gauss simple: pseudocódigo
DO k = 1, n-1
DO i = k+1, n
factor = ai,k/ak,k
DO j = k+1 to n
ai,j = ai,j – factor*ak,j
END DO
bi = bi –factor*bk
END DO
END DO
MN, Oscar Alvarado Nava
21
Eliminación de Gauss simple: pseudocódigo
ƒ
Se debe de tomar en cuenta que los arreglos en C son
referenciados desde 0 a n-1
a00 x0 + a01 x1 +,... + a0 n−1 xn−1 = b0
a10 x0 + a11 x1 +,... + a1n−1 xn−1 = b1
...
an−10 x0 + an−11 x1 +,... + an−1n−1 xn−1 = bn−1
MN, Oscar Alvarado Nava
22
Eliminación de Gauss simple: pseudocódigo
ƒ
Para lenguaje C
DO k = 0, < n-1
DO i = k+1, < n
factor = ai,k/ak,k
DO j = k to < n
ai,j = ai,j – factor*ak,j
END DO
bi = bi –factor*bk
END DO
END DO
MN, Oscar Alvarado Nava
23
Eliminación de Gauss simple: pseudocódigo
DO k = 0, <n-1
DO i = k+1, <n
factor = ai,k/ak,k
DO j = k to <n
ai,j = ai,j – factor*ak,j
END DO
bi = bi –factor*bk
END DO
END DO
3
00
-0.1
01
-0.2
02
0.1
10
7.0
11
-0.3
12
0.3
20
-0.2
21
10
22
k = 0, i = 1
a 10
a 00
− factor * a 00
factor
=
j= 0
j=1
a 10 = a 10
j= 2
a 12 = a 12 − factor * a 02
a 11 = a 11 − factor * a 01
k = 0, i = 2
j= 0
j=1
a 20 = a 20 − factor * a 10
j= 2
a 22 = a 22 − factor * a 12
a 21 = a 21 − factor * a 11
k = 1, i = 2
a 21
a 11
− factor * a 20
factor
=
j= 0
j=1
a 20 = a 20
j= 2
a 22 = a 22 − factor * a 22
a 21 = a 21 − factor * a 21
MN, Oscar Alvarado Nava
24
Sustitución hacia adelante
a11 x1 + a12 x 2 + a13 x3 + ,... + a1n x n = b1
a '22 x 2 + a '23 x3 + ,... + a '2 n x n = b 2'
a '33' x3 + ,... + a '3' n x n = b3''
...
a (nnn −1 ) x n = b n(n −1 )
ƒ
(4)
Resolviendo (4)
xn =
b n(n −1)
a (nnn −1)
MN, Oscar Alvarado Nava
25
Sustitución hacia adelante
ƒ
En general
xi =
b i(i −1) −
n
(i −1)
a
∑ ij x j
j = i +1
(i −1 )
a ii
para i = n − 1, n − 2,... 1
MN, Oscar Alvarado Nava
26
Sustitución hacia adelante: pseudocódigo
xn = bn/ann
DO i = n - 1, 1, -1
sum = 0
DO j = i+1 , n
sum = sum + ai,j * xj
END DO
xi = ( bi – sum)/aii
END DO
MN, Oscar Alvarado Nava
27
Ejercicio
3 x1 + −0.1x2 − 0.2 x3 = 7.85
0.1x1 + 7 x2 − 0.3 x3 = −19.3
0.3 x1 − 0.2 x2 + 10 x3 = 71.4
x1 = 3.0
x2 = −2.5
x3 = 7.0
MN, Oscar Alvarado Nava
28
Desventaja de la eliminación
ƒ
Se puede tener una división por cero si tenemos por
ejemplo
2.0 x2 + 3.0 x3 = 8.0
(1)
4.0 x1 + 6.0 x2 + 7.0 x3 = −3.0
(2)
2.0 x1 +
(3)
x2 + 6.0 x3 = 5
ƒ
En la ecuación pivote (1) el elemento a11 es cero
ƒ
También podrían presentarse problemas si a11 fuera
muy cercano a cero
MN, Oscar Alvarado Nava
29
Pivoteo parcial
0.0003 x1 + 3.00000 x3 = 2.0001
(1)
1.0000 x1 + 1.00000 x3 = 1.0000
(2)
ƒ
Antes de la eliminación, se deberá de determinar el
coeficiente más grande (en magnitud) disponible en la
columna del pivote
ƒ
Una vez localizado, se intercambiarán los renglones de
tal manera que el elemento más grande sea el pivote
1.0000 x1 + 1.00000 x3 = 1.0000
(2)
0.0003 x1 + 3.00000 x3 = 2.0001
(1)
MN, Oscar Alvarado Nava
30
Pseudocódigo para el pivoteo parcial
p=k
big = | ak,k |
DO ii = k + 1, n
dummy = | aii,k |
IF ( dummy > big )
big = dummy
p = ii
END IF
END DO
IF ( p != k )
DO jj = k, n
dummy = ap,jj
ap,jj = ak,jj
ak,jj = dummy
END DO
dummy = bp
bp = bk
bk = dummy
END IF
MN, Oscar Alvarado Nava
31
Matrices especiales
ƒ
ƒ
Matrices con estructuras especiales
ƒ
Matrices banda
ƒ
Matrices simétricas
Para la solución de estos sistemas se plantean otros
métodos más eficientes, los cuales son iterativos
ƒ
Método de Gauss-Seidel, el cual emplea valores iniciales y
después itera para obtener estimaciones más cercanas a la
solución
ƒ
A diferencia de método de Gauss el Método de Gauss-Seidel,
controla el error por medio del número de iteraciones
MN, Oscar Alvarado Nava
32
Matrices banda
ƒ
ƒ
Comunes en la solución de sistemas de ecuaciones
diferenciales y en métodos de interpolación
ƒ
La matriz es cuadrada
ƒ
Todos sus elementos son cero, con excepción de una banda
centrada sobre la diagonal principal
Las dimensiones de una matriz banda son
ƒ
Ancho de Banda: BW
ƒ
Ancho medio de media banda: HBW
MN, Oscar Alvarado Nava
33
Matrices banda
0
0
 6.1 4.4 0
6.2 3.5 7.8 0

0


 0 7.9 4.4 3.1 0 


0 5.0 2.6 4.0
0
 0
0
0 2.2 8.1
ƒ
Este sistema se podría resolver con los métodos de
eliminación, Gauss, sin embargo no son tan eficientes
para este tipo de matrices
MN, Oscar Alvarado Nava
34
Gauss-Seidel
ƒ
Método iterativo
ƒ
Se propone un valor inicial
ƒ
Utilizando un método sistemático, se obtiene una estimación
de la solución
[A ]{X } = {B }
 a11
a
 21
a31
a12
a22
a32
a13 

a23 
a33 
 x1 
 
 x2 
x 
 3
b1 
 
= b2 
b 
 3
MN, Oscar Alvarado Nava
35
Gauss-Seidel
ƒ
Suponiendo
ƒ
Los elementos de la diagonal principal NO son cero
ƒ
Despejamos x1, x2 y x3
b1 − a 12 x 2 − a 13 x 3
a 11
b − a 21 x 1 − a 23 x 3
x2 = 2
a 22
b − a 31 x 1 − a 32 x 2
x3 = 3
a 33
x1 =
ƒ
(1)
(2)
(3)
Podríamos suponer que los valores iniciales x1=0, x2=0 y x3=0
MN, Oscar Alvarado Nava
36
Gauss-Seidel
ƒ
Sustituyendo los valores de estos valores de x1=0 y x2=0
en (1)
b1 − a12 (0) − a13 (0)
x1 =
a11
ƒ
b1
=
a11
Sustituyendo (4) y valor de x3=0 en (2)
 b1 
 − a 23 (0 )
b 2 − a 21 
a 11 

x2 =
a 22
ƒ
(4)
(5)
Finalmente podríamos sustituir (4) y (5) en (3)
MN, Oscar Alvarado Nava
37
Gauss-Seidel
ƒ
Después, los nuevos valores de x, se sustituyen de
nuevo en (1) y así sucesivamente
ƒ
El calculo pondría detenerse hasta que la solución
converja lo suficientemente cerca de los valores reales
ε a ,i
ƒ
xi − xi
=
j
xi
j
j −1
100 % < ε s
j y j-1 son las iteraciones actuales y previas
respectivamente
MN, Oscar Alvarado Nava
38
Gauss-Seidel
3 x1 + −0.1x2 − 0.2 x3 = 7.85
x1 = 3.0
0.1x1 + 7 x2 − 0.3 x3 = −19.3
x 2 = − 2 .5
0.3 x1 − 0.2 x2 + 10 x3 = 71.4
x3 = 7 .0
x1 = 0, x 2 = 0, x3 = 0
7.85+ 0.1x2 + 0.2x3
x1 =
3
−19.3 − 0.1x1 + 0.3x3
x2 =
7
71.4 − 0.3x1 + 0.2x2
x3 =
10
x1 =
7.85+ 0 + 0
= 2.616
3
−19.3 − 0.1(2.616667) + 0
= −2.794
7
71.4 − 0.3(2.616) + 0.2(−2.794)
x3 =
= 7.005
10
x2 =
MN, Oscar Alvarado Nava
39
Gauss-Seidel
ƒ
Segunda iteración
x1 = 2.616 , x 2 = −2.794 , x3 = 7.005
7.85+ 0.1x2 + 0.2x3
3
7.85+ 0.1(−2.794) + 0.2(7.005)
x1 =
= 2.990
3
−19.3 − 0.1x1 + 0.3x3
x2 =
7
−19.3 − 0.1(2.990) + 0.3(7.005)
x2 =
= −2.499
7
x1 =
x3 =
71.4 − 0.3x1 + 0.2x2
10
71.4 − 0.3(2.990) + 0.2(−2.499)
x3 =
= 7.000
10
MN, Oscar Alvarado Nava
40
Gauss-Seidel, criterio de convergencia
ƒ
El método es similar al de punto fijo
ƒ
El método en algunas ocasiones no es convergente
ƒ
Cuando converge algunas veces lo hace muy lento
y
y
x
MN, Oscar Alvarado Nava
x
41
Relajación para Gauss-Seidel
ƒ
Mejora la convergencia
ƒ
Se utiliza un promedio ponderado de los resultados de las
iteraciones
nuevo
xi
Donde
ƒ
si
ƒ
(
+ 1 − λx
anterior
i
)
0≤λ ≤2
λ = 1 el resultado no se modifica
ƒ
ƒ
= λx
nuevo
i
si 0 ≤ λ ≤ 1 el resultado es un promedio ponderado de los
resultados actuales y previos: subrelajación obliga a los
sistemas no convergentes a apresurar la convergencia al
amortiguar sus oscilaciones
si 1 ≤ λ ≤ 2 se le agrega una ponderación extra sobre el
valor actual, el resultado es una solución más real, pero más
lenta: sobrerelajación
MN, Oscar Alvarado Nava
42
Pseudocódigo para Gauss-Seidel
SUBROUTINE Gauss_Seidel( a,b,n,x,imax,es,lamda)
DO i = 1, n
dummy = ai,i
DO j = 1, n
ai,j = ai,j/dummy
END DO
bi = bi/dummy
END DO
DO i = 1, n
sum = bi
DO j = 1, n
IF i != j THEN sum = sum – ai,j * xj
END DO
xi = sum
END DO
iter = 1
DO
sentinel = 1
DO i = 1 , n
old =xi
sum =bi
DO j=1, n
IF i != j THEN sum = sum –ai,j * xj
END DO
xi = lamda * sum +(1-lamda)*old
IF sentinel =1 AND x1 != 0 THEN
ea =ABS( (xi –old)/xi )*100
IF ea > es THEN sentinel = 0
END IF
END DO
iter = iter +1
IF sentinel =1 OR ( iter >= imax) EXIT
END DO
END Gauss_Seidel
MN, Oscar Alvarado Nava
43
Resolución con MATLAB
ƒ
ƒ
Análisis matricial
cond
Número de condición de la matriz
norm
Matriz o norma del vector
det
Determinante
trace
Suma de los elementos de la
diagonal
orth
Ortogonalización
Ecuaciones lineales
inv
Matriz inversa
\
Solución de ecuaciones lineales
pinv
Pseudoinversa
nnls
Mínimos cuadrados no negativos
lu
Factores para la eliminación de
gauss
MN, Oscar Alvarado Nava
44
Resolución con MATLAB
3 x1 + −0.1x2 − 0.2 x3 = 7.85
x1 = 3.0
0.1x1 + 7 x2 − 0.3 x3 = −19.3
x 2 = − 2 .5
0.3 x1 − 0.2 x2 + 10 x3 = 71.4
x3 = 7 .0
solucion1.m
%Matriz de coeficientes A
A=[3 -0.1 -0.2
0.1 7 -0.3
0.3 -0.2 10];
%Vector B
B=[
7.85
-19.3
71.4 ];
MN, Oscar Alvarado Nava
45
Resolución con MATLAB
>> pwd
ans =
C:\MATLAB6p5\work
>> ls
.
solucion_1.m
..
una_matriz.m
>> solucion_1
>> A
A =
3.0000
-0.1000
-0.2000
0.1000
7.0000
-0.3000
0.3000
-0.2000
10.0000
>> B
B =
7.8500
-19.3000
71.4000
MN, Oscar Alvarado Nava
46
Resolución con MATLAB
>> X=A\B
X =
3.0000
-2.5000
7.0000
ƒ
Para este caso MATLAB utiliza la eliminación de Gauss
MN, Oscar Alvarado Nava
47
Resolución con MATLAB
[A ]{X } = {B }
−1
−1
[A ] [A ]{X } = {B }[A ]
−1
{X } = {B }[A ]
>> X=inv(A)*B
X =
3.0000
-2.5000
7.0000
MN, Oscar Alvarado Nava
48
Descargar