Documentos de Académico
Documentos de Profesional
Documentos de Cultura
etodos Num
ericos (SC854)
Soluci
on de sistemas de ecuaciones lineales
c M. Valenzuela 2007
(21 de agosto de 2007)
1.
Matrices
Definici
on. 1 Una matriz n m es un arreglo rectangular de elementos con n filas (o renglones) y
m columnas en el cual no s
olo es importante el valor de los elementos sino tambien su posici
on en
el arreglo.
Ejemplo:
A = (aij ) =
a11
a21
..
.
a12
a22
..
.
..
.
an1
an2
anm
a1m
a2m
..
.
(1)
2.
Vectores
Definici
on. 2 Una matriz 1 n,
B=
b11
b12
b1n
(2)
C=
c11
c12
..
.
(3)
c1n
se le llama un vector columna de n dimensiones.
Usualmente, los subndices innecesarios se omiten, de manera que
y = y1 y2 ym ,
denota un vector renglon de m dimensiones, y
x=
x1
x2
..
.
(4)
(5)
xn
denota un vector columna de n dimensiones. Los vectores se denotan con min
usculas y negritas.
La norma de un vector x se define de la siguiente manera:
n
1/p
p
||x||p =
|xi |
(6)
i=1
Notese que
n
||x||2 =
|xi |2 = |x|,
i=1
(7)
Soluci
on de sistemas de ecuaciones lineales
10
20V
R = 5
10
Figura 1: Circuito elecitrico que puede ser descrito mediante un sistema de ecuaciones simultaneas.
es decir, la magnitud del vector. N
otese tambien que
n
1/p
p
|xi |
= max (|xi |) ,
||x|| = lim
p
i=1
(8)
es decir, el m
aximo de los valores absolutos de las componentes xi del vector.
3.
Por qu
e se requieren m
etodos para resolver sistemas de
ecuaciones lineales
Muchos problemas pueden ser descritos mediante un sistemas de ecuaciones lineales. Por ejemplo,
considere el circuito electrico mostrado en la figura 1.
Las ecuaciones de malla que describen a este circuito son las siguientes:
15ii
5i1
5i2
+ 15i2
5i2
= 20
= 0
= 0
5i3
20i3
(9)
A partir de las ecuaciones de malla se pueden obtener todas las corrientes, voltajes, y pontencial de
los elementos del circuito. Por ejemplo, la corriente de la resistencia R es i1 i2 .
4.
Representaci
on de sistemas de ecuaciones
Un sistema de ecuaciones lineales simulataneas de la forma
a11 x1 + a12 x2 + + a1n xn
a21 x1 + a22 x2 + + a2n xn
=
=
..
.
b1
b2
bn
a11 a12
a21 a22
A= .
..
..
..
.
.
an2
b1
b2
b= .
..
an1
a1n
a2n
..
.
(10)
ann
(11)
bn
c M. Valenzuela, 2007 (21 de agosto de 2007)
P
agina 2
Soluci
on de sistemas de ecuaciones lineales
=
A
a11
a21
..
.
a12
a22
..
.
..
.
a1n
a2n
..
.
b1
b2
..
.
an1
an2
ann
bn
(12)
5.
Ejemplo de circuitos el
ectricos
Definiendo R, i, y v:
15 5
0
R = 5 15 5
0 5 20
20
i1
i = i2 v = 0
i3
0
20
15 5
0
i1
Ri = v = 5 15 5 i2 = 0
i3
0
0 5 20
Que puede representarse mediante la matriz aumentada:
15 5
0 20
= 5 15 5 0
R
0 5 20 0
6.
(13)
(14)
(15)
(16)
P
agina 3
Soluci
on de sistemas de ecuaciones lineales
Function EGaussiana(A,b)
1
2
3
4
5
6
7
8
9
10
A [Ab] ;
for i 1 to n do
// Hacer ceros abajo de pivote
for j i + 1 to n do
A(i, :)A(j, i)
A(j, :) A(j, :)
;
A(i, i)
for i n downto 1 do
// Hacer pivote 1
A(i, :)
A(i, :)
;
A(i, i)
// Hacer ceros arriba de pivote
for j i 1 downto 1 do
A(j, :) A(j, :) A(i, :)A(j, i) ;
x A(:, n + 1) ;
return x
Figura 2: Pseudoc
odigo que implementa el metodo de eliminaci
on gaussiana para soluci
on de sistemas
de ecuaciones lineales.
7.
Eliminaci
on Gaussiana
Eliminaci
on gaussiana aplica operaciones de rengl
on para resolver un sistema de ecuaciones
simulat
aneas; su pseudoc
odigo se presenta en la figura 2, y en la figura 3 su implementaci
on en
MATLAB.
on
Para cada rengl
on, se define el elemento ai,i de la matriz aumentada como el pivote. Eliminaci
gaussiana opera en dos fases. Primero, para cada rengl
on empezando por el primer rengl
on, hace
ceros en los elementos debajo del pivote (lneas 3 y 4). Segundo, para cada rengl
on empezando por
el u
ltimo rengl
on, hace el pivote igual a 1, y hace ceros arriba del pivote (lneas 5 a 8). La soluci
on
al sistema de ecuaciones queda en la u
ltima columna de la matriz aumentada (lnea 9).
A continuaci
on se presenta la solucion del ejemplo del circuito elecitrico mediante eliminacion
gaussiana.
15 5
0 20
15
5
0
20
= 5 15 5 0 0 13.3333 5 6.6667
R
(17)
0 5 20 0
0
5
20
0
15
5
0
20
15
5
0
20
0 13.3333
5
6.6667 0 13.3333 5 6.6667
(18)
0
0
18.1250
2.5
0
0
1 0.1379
15
5
0
20
15 0 0 22.7586
1 0 0 1.5172
0 13.3333 0 7.3563 0 1 0 0.5517 0 1 0 0.5517
(19)
0
0
1 0.1379
0 0 1 0.1379
0 0 1 0.1379
de donde se tiene que las corrientes de malla son:
1.5172
i = 0.5517
0.1379
(20)
P
agina 4
Soluci
on de sistemas de ecuaciones lineales
function x = EGauss(A,b)
%
%
%
%
%
%
%
for i=1:n
% Hacer ceros en la columna i debajo de la fila i
for j=i+1:n
A(j ,:) = A(j,:) A(i,:)A(j, i)/A(i, i );
end
end
x = EGauss(A,b)
Regresa x, la solucion del sistema Ax=b.
% 22 enero 2007
% Manuel Valenzuela
% Crear la matriz aumentada
A = [A b];
n = size(A,1);
for i=n:1:1
% Hacer uno el elemento i,i
A(i ,:) = A(i,:)/A(i, i );
% Hacer ceros en la columna i arriba de la fila i
for j=i1:1:1
A(j ,:) = A(j,:) A(i,:)A(j, i );
end
end
x = A(:,n+1);
Figura 3: Implementaci
on en MATLAB del metodo de eliminaci
on gaussiana para soluci
on de sistemas de ecuaciones lineales.
8.
M
etodo de Gauss-Jordan
15 5
0 20
1 0.3333 0 1.3333
= 5 15 5 0 5
15
5
0
R
(21)
0 5 20 0
0
5
20
0
1 0.3333 0 1.3333
1 0.3333
0
1.3333
0 13.3333 5 6.6667 0
1
0.3750 0.5000
(22)
0
5
20
0
0
5
20
0
1 0 0.1250 1.5000
1 0 0.1250 1.5000
0 1 0.3750 0.5000 0 1 0.3750 0.5000
(23)
0 0 18.1250 2.5000
0 0
1
0.1379
1 0 0 1.5172
0 1 0 0.5517
(24)
0 0 1 0.1379
9.
Pivote m
aximo
Los algoritmos presentados pueden encontrar el problema de que el pivote sea cero, causando
una divisi
on entre cero. Para resolver este problema se pueden intercambiar renglones para colocar
una elemento diferente de cero en la diagonal principal. En la figura 6 se presenta la implementaci
on
de Gauss-Jordan donde se escoge el elemento de maximo valor abosluto como pivote.
c M. Valenzuela, 2007 (21 de agosto de 2007)
P
agina 5
Soluci
on de sistemas de ecuaciones lineales
Function GaussJordan(A,b)
1
2
3
4
5
6
7
8
A [Ab] ;
for i 1 to n do
// Hacer pivote 1
A(i, :)
A(i, :)
;
A(i, i)
for j 1 to n do
if j = i then
// Hacer ceros arriba y abajo del pivote
A(j, :) A(j, :) A(j, i)A(i, :) ;
x A(:, n + 1) ;
return x
Figura 4: Pseudoc
odigo que implementa de metodo Gauss-Jordan para la soluci
on de sistemas de
ecuaciones lineales.
function x = GaussJ(A,b)
%
%
%
%
%
%
%
% 22 enero 2007
% Manuel Valenzuela
% Se crea la matriz aumentada
A = [A b];
n = size(A,1);
for i=1:n
% Dividir renglon entre el pivote
A(i ,:) = A(i,:)/A(i, i );
% Hacer ceros en la columna i
for j=1:n
if i=j
A(j ,:) = A(j,:) A(i,:)A(j, i );
end
end
end
x = A(:,n+1);
Figura 5: Implementaci
on en MATLAB del metodo Gauss-Jordan para soluci
on de sistemas de
ecuaciones lineales.
P
agina 6
Soluci
on de sistemas de ecuaciones lineales
Function GaussJordan(A,b)
1
2
3
4
5
6
7
8
9
10
11
A [Ab] ;
for i 1 to n do
m max(|A(i : n, i)|) ;
k rengl
on de m en A ;
Intercambiar renglones i y k de A ;
// Hacer pivote 1
A(i, :)
A(i, :)
;
A(i, i)
for j 1 to n do
// Hacer ceros arriba y abajo del pivote
if j = i then
A(j, :) A(j, :) A(j, i)A(i, :) ;
x A(:, n + 1) ;
return x
Figura 6: Pseudoc
odigo que implementa el metodo de Gauss-Jordan con pivote m
aximo para soluci
on
de sistemas de ecuaciones lineales.
10.
Montante
15 5
0 20
15 5
0
20
= 5 15 5 0 0 200 75 100
A
(25)
0 5 20 0
0 75 300
0
200 0
25 300
3625
0
0
5500
0 200 75 100 0
3625
0
2000
(26)
0
0 3625 500
0
0
3625 500
1 0 0 1.5172
0 1 0 0.5517
(27)
0 0 1 0.1379
11.
Matriz inversa
Los metodos de eliminacion gaussiana, Gauss-Jordan, y Montante pueden ser utilizados para
encontrar la inversa de una matriz. En este caso, la matriz aumentada ser
a la matriz de original y
la matriz identidad.
15 5
0 1 0 0
15 5
0
1 0
0
5 15 5 0 1 0 0 200 75 5 15 0
(28)
0 5 20 0 0 1
0 75 300 0 0 15
200 0
25 15 5
0
3625
0
0
275 100 25
0
200 75 5 15 0 0
3625
0
100 300 75
(29)
0
0 3625 25 75 200
0
0
3625 25 75 200
c M. Valenzuela, 2007 (21 de agosto de 2007)
P
agina 7
Soluci
on de sistemas de ecuaciones lineales
Function Montante(A,b)
1
2
3
4
5
6
7
8
9
10
11
A [Ab] ;
pivAnt 1 ;
for i 1 to n do
piv A(k, k) ;
for j 1 to n do
// Hacer ceros arriba y abajo del pivote
if j = i then
A(j, :)piv A(i, :)A(j, i)
A(j, :)
;
pivAnt
pivAnt piv ;
A(:, n + 1)
;
piv
det A(n, n) ;
return x, det
x
Figura 7: Pseudoc
odigo que implementa el metodo de Montante para la soluci
on de sistemas de
ecuaciones lineales.
function x = Mont(A,b)
%
%
%
%
%
%
%
% 22 enero 2007
% Manuel Valenzuela
% Se crea la matriz aumentada
A = [A b];
n = size(A,1);
Figura 8: Implementaci
on en MATLAB del metodo de Montante para la soluci
on de sistemas de
ecuaciones lineales.
P
agina 8
Soluci
on de sistemas de ecuaciones lineales
1
0
0
0 0
1 0
0 1
12.
(30)
(31)
M
etodos Iterativos: Jacobi
b1
(32)
=
..
.
=
b2
(33)
bn
(34)
(35)
a12
a13
a1n
b1
x2
x3
xn +
a11
a11
a11
a11
(36)
x2
a21
a23
a2n
b2
x1
x3
xn +
a22
a22
a22
a22
(37)
..
.
xn
(38)
an1
an2
an,n1
bn
x1
x2
xn1 +
ann
ann
ann
ann
(39)
a12
a13
a1n
b1
x2 (t)
x3 (t)
xn (t) +
a11
a11
a11
a11
(40)
x2 (t + 1) =
a21
a23
a2n
b2
x1 (t)
x3 (t)
xn (t) +
a22
a22
a22
a22
(41)
..
.
xn (t + 1) =
(42)
an1
an2
an,n1
bn
x1 (t)
x2 (t)
xn1 (t) +
ann
ann
ann
ann
a13
a1n
a12
b1
a
a11
a11
a11
11
b
a
a
a
23
1n
21
2
0
a22
a22
a22
a22
a31
a32
a3n c = b3
T=
a33
a33
a33
a33
..
..
..
..
.
.
.
.
an1
bn
an2
an,n1
ann
ann
ann
ann
c M. Valenzuela, 2007 (21 de agosto de 2007)
(43)
(44)
P
agina 9
Soluci
on de sistemas de ecuaciones lineales
Function Jacobi(A,b,x0 )
1
2
3
4
5
6
7
8
Obtener matriz T ;
Obtener vector c ;
x x0 ;
repeat
xant x ;
x Tx + c ;
||x xant ||
until
<;
||x||
return x
Figura 9: Pseudoc
odigo que implementa el metodo de Jacobi para resolver en forma iterativa sistemas
de ecuaciones lineales. En la lnea 7 se ha tomado la norma infinita, || || , para definir el criterio
de terminaci
on, pero es posible tomar otra norma.
se pueden escribir las ecuaciones recursivas en forma matricial:
x(t + 1) = Tx(t) + c
(45)
(46)
13.
M
etodos Iterativos: Gauss-Seidel
En las ecuaciones recursivas, es posible utilizar inmediatamente los valores obtenidos para calcular
los siguientes valores, es decir,
x1 (t + 1) =
a12
a13
a1n
b1
x2 (t)
x3 (t)
xn (t) +
a11
a11
a11
a11
(47)
x2 (t + 1) =
a21
a23
a2n
b2
x1 (t + 1)
x3 (t)
xn (t) +
a22
a22
a22
a22
(48)
x3 (t + 1) =
a31
a32
a3n
b3
x1 (t + 1)
x2 (t + 1)
xn (t) +
a33
a33
a33
a33
(49)
..
.
xn (t + 1) =
(50)
an1
an2
an,n1
bn
x1 (t + 1)
x2 (t + 1)
xn1 (t + 1) +
ann
ann
ann
ann
(51)
El uilizar los valores de xi que se acaban de calcular para calcular los siguientes valores permite
que el metodo converja m
as r
apidamente a una soluci
on.
Las ecuaciones recursivas se pueden escribir en forma matricial de la siguiente manera:
xi T(i, :)x + ci
(52)
donde T(i, :) representa la fila i de la matriz T, y la regla debe aplicarse en orden para i = 1, 2, . . . n.
En las figuras 11 y 12 se presenta la implementaci
on del metodo de Gauss-Seidel.
c M. Valenzuela, 2007 (21 de agosto de 2007)
P
agina 10
Soluci
on de sistemas de ecuaciones lineales
function x = Jaco(A,b,x0)
%
%
%
%
%
%
%
%
%
% 17 agosto 2007
% Manuel Valenzuela
n = size(A,1);
eps = 0.001;
Function GaussSeidel(A,b,x0 )
1
2
3
4
5
6
7
8
9
Obtener matriz T ;
Obtener vector c ;
xant x0 ;
repeat
for i n do
xi T(i, :)x + ci ;
xant x ;
||x xant ||
until
<;
||x||
return x
P
agina 11
Soluci
on de sistemas de ecuaciones lineales
function x = GaussS(A,b,x0)
T = zeros(n);
for i=1:n
% Implementacion del metodo GaussSeidel para
T(i ,:) = A(i,:)/A(i, i );
% la solucion de sistemas de ecuaciones,
end
% tomando como aproximacion inicial x0.
T = T.eye(n);
%
% x = GaussSeidel(A,b,x0)
x = x0;
%
xAnt = x;
% Regresa x, la solucion del sistema Ax=b.
j = 0;
% El criterio de terminacion es que
while 1
% norm(xxAnt,Inf)/norm(x,Inf)<eps.
j = j+1;
for i=1:n
% 17 agosto 2007
x(i ) = T(i,:)x + c(i );
% Manuel Valenzuela
end
if (norm(xxAnt,Inf)/norm(x,Inf)<eps)
n = size(A,1);
break
eps = 0.001;
end
xAnt = x;
% Se obtienen el vector c y la matriz T
end
c = b./diag(A);
Figura 12: Implementaci
on en MATLAB del metodo de Gauss-Seidel para resolver en forma iterativa
sistemas de ecuaciones lineales.
14.
0
0.3333
0
0
0.3333
T = 0.3333
0
0.2500
0
1.3333
0
c=
0
(53)
Jacobi:
i1
i2
i3
1
1.3333
0
0
2
1.3333
0.4444
0
3
1.4815
0.4444
0.1111
4
1.4815
0.5309
0.1111
5
1.5103
0.5309
0.1327
2
1.4815
0.5309
0.1327
3
1.5103
0.5477
0.1369
4
1.5159
0.5509
0.1377
5
1.5170
0.5516
0.1379
6
1.5103
0.5477
0.1327
7
1.5159
0.5477
0.1369
8
1.5159
0.5509
0.1369
9
1.5170
0.5509
0.1377
10
1.5170
0.5509
0.1377
Gauss-Seidel
i1
i2
i3
1
1.3333
0.4444
0.1111
En general, Gauss-Seidel es m
as rapido que Jacobi, es decir, converge en menos iteraciones a la
soluci
on correcta.
P
agina 12