c
M. Valenzuela 2007
(21 de agosto de 2007)
1.
Matrices
Definici´on. 1 Una matrizn×mes un arreglo rectangular de elementos connfilas (o renglones) y m columnas en el cual no s´olo es importante el valor de los elementos sino tambi´en su posici´on en el arreglo.
Ejemplo:
A= (aij) = ⎡ ⎢ ⎢ ⎢ ⎣
a11 a12 · · · a1m a21 a22 · · · a2m
..
. ... . .. ... an1 an2 · · · anm
⎤ ⎥ ⎥ ⎥
⎦ (1)
Las matrices se denotan con may´usculas (con negritas) y sus elementos con min´usculas.
2.
Vectores
Definici´on. 2 Una matriz 1×n,
B= b11 b12 · · · b1n , (2)
se le llama un vector rengl´on den dimensiones.
Definici´on. 3 Una matriz n×1,
C= ⎡ ⎢ ⎢ ⎢ ⎣
c11 c12 .. . c1n
⎤ ⎥ ⎥ ⎥
⎦, (3)
se le llama un vector columna de ndimensiones.
Usualmente, los sub´ındices innecesarios se omiten, de manera que
y= y1 y2 · · · ym , (4)
denota un vector rengl´on dem dimensiones, y
x= ⎡ ⎢ ⎢ ⎢ ⎣
x1 x2 .. . xn
⎤ ⎥ ⎥ ⎥
⎦, (5)
denota un vector columna dendimensiones. Los vectores se denotan con min´usculas y negritas. La norma de un vectorxse define de la siguiente manera:
||x||p= n
i=1
|xi|p 1/p
(6)
N´otese que
||x||2= n
i=1
− +
20V
10Ω 5Ω 10Ω
[image:2.612.178.419.70.159.2]R= 5Ω 5Ω 5Ω
Figura 1: Circuito el´ecitrico que puede ser descrito mediante un sistema de ecuaciones simult´aneas.
es decir, la magnitud del vector. N´otese tambi´en que
||x||∞= lim p→∞
n
i=1
|xi|p 1/p
= max
i (|xi|), (8)
es decir, el m´aximo de los valores absolutos de las componentesxi 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 el´ectrico mostrado en la figura 1.
Las ecuaciones de malla que describen a este circuito son las siguientes:
15ii − 5i2 = 20
−5i1 + 15i2 − 5i3 = 0
− 5i2 + 20i3 = 0
(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 resistenciaR esi1−i2.
4.
Representaci´
on de sistemas de ecuaciones
Un sistema de ecuaciones lineales simulat´aneas de la forma a11x1+a12x2+· · ·+a1nxn = b1 a21x1+a22x2+· · ·+a2nxn = b2
.. . an1x1+an2x2+· · ·+annxn = bn puede representarse mediante una matrizn×(n+ 1).
A partir de la matrizAy el vectorb
A= ⎡ ⎢ ⎢ ⎢ ⎣
a11 a12 · · · a1n a21 a22 · · · a2n
..
. ... . .. ... an1 an2 · · · ann
⎤ ⎥ ⎥ ⎥
⎦ (10)
b= ⎡ ⎢ ⎢ ⎢ ⎣
b1 b2 .. .
⎤ ⎥ ⎥ ⎥
se forma la matriz aumentada
˜ A=
⎡ ⎢ ⎢ ⎢ ⎣
a11 a12 · · · a1n b1 a21 a22 · · · a2n b2
..
. ... . .. ... ... an1 an2 · · · ann bn
⎤ ⎥ ⎥ ⎥
⎦ (12)
Esta matriz aumentada representa la ecuaci´on vectorialAx=b.
5.
Ejemplo de circuitos el´
ectricos
DefiniendoR,i, yv:R= ⎡
⎣ −155 −155 −05 0 −5 20
⎤
⎦ (13)
i= ⎡ ⎣ i1i2
i3 ⎤ ⎦ v=
⎡ ⎣ 200
0 ⎤
⎦ (14)
Podemos expresar el juego de ecuaciones como
Ri=v= ⎡
⎣ −155 −155 −05 0 −5 20
⎤ ⎦ ⎡ ⎣ i1i2
i3 ⎤ ⎦=
⎡ ⎣ 200
0 ⎤
⎦ (15)
Que puede representarse mediante la matriz aumentada:
˜ R=
⎡
⎣ −155 −155 −05 200
0 −5 20 0
⎤
⎦ (16)
6.
Operaciones elementales de rengl´
on
Como la matriz aumentada ˜A representa un sistema de ecuaciones simult´aneas, es posible re-alizar las siguientes operaciones elementales de rengl´on manteniendo las igualdades de las ecuaciones representadas:
Multiplicar un rengl´on por una constante
Multiplicar un rengl´on por una constante y sumarlo a otro rengl´on
Los m´etodos de soluciones de sistemas de ecuaciones aplican estas operaciones sobre la matriz aumentada en forma ordenada y repetida. En las siguientes secciones se explican los siguientes m´etodos:
Eliminaci´on gaussiana (Gauss)
Gauss-Jordan
FunctionEGaussiana(A,b)
A←[Ab] ; 1
fori←1 to ndo 2
// Hacer ceros abajo de pivote forj←i+ 1 to ndo
3
A(j,:)←A(j,:)−A(i,:)A(j, i) A(i, i) ; 4
fori←ndownto 1 do 5
// Hacer pivote 1
A(i,:)← A(i,:) A(i, i) ; 6
// Hacer ceros arriba de pivote forj←i−1 downto 1do
7
A(j,:)←A(j,:)−A(i,:)A(j, i) ; 8
x←A(:, n+ 1) ; 9
[image:4.612.110.502.73.307.2]return x 10
Figura 2: Pseudoc´odigo que implementa el m´etodo 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.
Para cada rengl´on, se define el elementoai,ide la matriz aumentada como elpivote. Eliminaci´on gaussiana opera en dos fases. Primero, para cada rengl´on empezando por el primer rengl´on, hace ceros en los elementos debajo del pivote (l´ıneas 3 y 4). Segundo, para cada rengl´on empezando por el ´ultimo rengl´on, hace el pivote igual a 1, y hace ceros arriba del pivote (l´ıneas 5 a 8). La soluci´on al sistema de ecuaciones queda en la ´ultima columna de la matriz aumentada (l´ınea 9).
A continuaci´on se presenta la soluci´on del ejemplo del circuito el´ecitrico mediante eliminaci´on gaussiana.
˜ R=
⎡
⎣ −155 −155 −05 200
0 −5 20 0
⎤ ⎦∼
⎡
⎣ 150 13−.33335 −05 6.666720
0 −5 20 0
⎤
⎦∼ (17)
⎡
⎣ 150 13−.33335 −05 6.666720 0 0 18.1250 2.5
⎤ ⎦∼
⎡
⎣ 150 13−.33335 −05 6.666720
0 0 1 0.1379
⎤
⎦∼ (18)
⎡
⎣ 150 13−.33335 00 7.356320
0 0 1 0.1379
⎤ ⎦∼
⎡
⎣ 150 01 00 220..55177586 0 0 1 0.1379
⎤ ⎦∼
⎡
⎣ 10 01 00 10..51725517 0 0 1 0.1379
⎤
⎦ (19)
de donde se tiene que las corrientes de malla son:
i= ⎡ ⎣ 10..51725517
0.1379 ⎤
functionx = EGauss(A,b)
% Implementacion del metodo de eliminacion % gaussiana para resolver sistemas
% de ecuaciones lineales. %
% 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=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
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=i−1:−1:1
A(j ,:) = A(j,:) −A(i,:)∗A(j, i );
end end
[image:5.612.91.550.70.291.2]x = A(:,n+1);
Figura 3: Implementaci´on en MATLAB del m´etodo de eliminaci´on gaussiana para soluci´on de sis-temas de ecuaciones lineales.
8.
M´
etodo de Gauss-Jordan
En la figuras 4 y 5 se presenta en la implementaci´on del m´etodo Gauss-Jordan. El m´etodo de Gauss-Jordan es similar a eliminaci´on gaussiana, pero primero hace el pivote igual a 1, y luego hace ceros en toda la columna del pivote. En el m´etodo de Gauss-Jordan primero se hace el pivote igual a 1 se hace el pivote igual a 1 (l´ınea 3), Despu´es se hacen cero los elementos arriba y abajo del pivote l´ıneas 4 a 6). La soluci´on al sistema de ecuaciones queda en la ´ultima columna de la matriz aumentada (l´ınea 7).
A contiuaci´on se muestra la soluci´on del ejemplo del circuito el´ectrico mediante Gauss-Jordan.
˜ R=
⎡
⎣ −155 −155 −05 200
0 −5 20 0
⎤ ⎦∼
⎡
⎣ −15 −0.153333 −05 1.33330
0 −5 20 0
⎤
⎦∼ (21)
⎡
⎣ 10 −130..33333333 −05 61..33336667
0 −5 20 0
⎤ ⎦∼
⎡
⎣ 10 −0.33331 −0.03750 01..33335000
0 −5 20 0
⎤
⎦∼ (22)
⎡
⎣ 10 01 −−00..37501250 01..50005000 0 0 18.1250 2.5000
⎤ ⎦∼
⎡
⎣ 10 01 −−00..12503750 01..50005000
0 0 1 0.1379
⎤
⎦∼ (23)
⎡
⎣ 10 01 00 10..51725517 0 0 1 0.1379
⎤
⎦ (24)
9.
Pivote m´
aximo
FunctionGaussJordan(A,b)
A←[Ab] ; 1
fori←1 to ndo 2
// Hacer pivote 1
A(i,:)← A(i,:) A(i, i) ; 3
forj←1 tondo 4
if j=i then 5
// Hacer ceros arriba y abajo del pivote A(j,:)←A(j,:)−A(j, i)A(i,:) ;
6
x←A(:, n+ 1) ; 7
[image:6.612.111.499.120.300.2]return x 8
Figura 4: Pseudoc´odigo que implementa de m´etodo Gauss-Jordan para la soluci´on de sistemas de ecuaciones lineales.
functionx = GaussJ(A,b)
% Implementacion del metodo Gauss−Jordan % para resolver sistemas de ecuaciones % lineales.
%
% x = GaussJordan(A,b)
%
% Regresa x, la solucion del sistema Ax=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);
[image:6.612.91.498.427.631.2]FunctionGaussJordan(A,b)
A←[Ab] ; 1
fori←1 to ndo 2
m←max(|A(i:n, i)|) ; 3
k←rengl´on dem enA; 4
Intercambiar renglonesiykdeA; 5
// Hacer pivote 1
A(i,:)← A(i,:) A(i, i) ; 6
forj←1 tondo 7
// Hacer ceros arriba y abajo del pivote if j=i then
8
A(j,:)←A(j,:)−A(j, i)A(i,:) ; 9
x←A(:, n+ 1) ; 10
[image:7.612.111.503.72.291.2]return x 11
Figura 6: Pseudoc´odigo que implementa el m´etodo de Gauss-Jordan con pivote m´aximo para soluci´on de sistemas de ecuaciones lineales.
10.
Montante
El m´etodo de Montante, que se presenta en las figuras 7 y 8, resuelve un sistema de ecuaciones simult´aneas haciendo operaciones que mantienen el n´umero de decimales que tiene los datos originales hasta el ´ultimo paso, donde se realiza la divisi´on entre el determinante.
Ejemplo del m´etodo Montante:
˜ A=
⎡
⎣ −155 −155 −05 200
0 −5 20 0
⎤ ⎦∼
⎡
⎣ 150 200−5 −075 10020
0 −75 300 0
⎤
⎦∼ (25)
⎡
⎣ 2000 2000 −−2575 300100
0 0 3625 500
⎤ ⎦∼
⎡
⎣ 36250 36250 00 55002000
0 0 3625 500
⎤
⎦∼ (26)
⎡
⎣ 10 01 00 10..51725517 0 0 1 0.1379
⎤
⎦ (27)
11.
Matriz inversa
Los m´etodos de eliminaci´on 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.
⎡
⎣ −155 −155 −05 10 01 00 0 −5 20 0 0 1
⎤ ⎦∼
⎡
⎣ 150 200−5 −075 15 150 00
0 −75 300 0 0 15
⎤
⎦∼ (28)
⎡
⎣ 2000 2000 −−2575 155 155 00
0 0 3625 25 75 200
⎤ ⎦∼
⎡
⎣ 36250 36250 00 275100 100300 2575
0 0 3625 25 75 200
⎤
FunctionMontante(A,b)
A←[Ab] ; 1
pivAnt←1 ; 2
fori←1 to ndo 3
piv←A(k, k) ; 4
forj←1 tondo 5
// Hacer ceros arriba y abajo del pivote if j=i then
6
A(j,:)←A(j,:)piv−A(i,:)A(j, i)
pivAnt ;
7
pivAnt←piv ; 8
x← A(:, n+ 1)
piv ;
9
det←A(n, n) ; 10
[image:8.612.108.502.99.318.2]return x, det 11
Figura 7: Pseudoc´odigo que implementa el m´etodo de Montante para la soluci´on de sistemas de ecuaciones lineales.
functionx = Mont(A,b)
% Implementacion del metodo Montante % para resolver sistemas de
% ecuaciones lineales. %
% x = Montante(A,b)
%
% Regresa x, la solucion del sistema Ax=b.
% 22 enero 2007 % Manuel Valenzuela
% Se crea la matriz aumentada
A = [A b]; n =size(A,1);
pivAnt = 1; % pivote inicial for i=1:n
% pivote actual
piv = A(i,i );
% Hacer ceros en la columna i for j=1:n
if j˜=i
A(j ,:) = (A(j,:)∗piv −A(i,:)∗A(j, i ))/pivAnt;
end end
% Guardar el pivote anterior
pivAnt = piv;
end
% Dividir entre el ultimo pivote (determinante)
A = A/piv;
x = A(:,n+1);
[image:8.612.93.546.437.653.2]∼
⎡
⎣ 10 01 00 00..02760759 00..08280276 00..00690207 0 0 1 0.0069 0.0207 0.0552
⎤
⎦ (30)
La inversa son las ´ultimasncolumnas de la matriz aumentada:
A−1= ⎡
⎣ 00..07590276 00..02760828 00..00690207 0.0069 0.0207 0.0552
⎤
⎦ (31)
12.
M´
etodos Iterativos: Jacobi
Dado un sistema de ecuaciones de la forma:
a11x1+a12x2+· · ·+a1nxn = b1 (32)
a21x1+a22x2+· · ·+a2nxn = b2 (33)
..
. (34)
an1x1+an2x2+· · ·+annxn = bn (35) si se despeja la variablexi de cada ecuaci´on se obtiene lo siguiente:
x1 = −a12a11x2−a13a11x3− · · · − a1na11xn+a11b1 (36)
x2 = −a21 a22x1−
a23
a22x3− · · · − a2n a22xn+
b2
a22 (37)
..
. (38)
xn = −aan1 nnx1−
an2
annx2− · · · − an,n−1
ann xn−1+ bn
ann (39)
El sistema anterior, puede usarse como una f´ormula recursiva, es decir,
x1(t+ 1) = −a12 a11x2(t)−
a13
a11x3(t)− · · · − a1n
a11xn(t) + b1
a11 (40)
x2(t+ 1) = −a21a 22x1(t)−
a23
a22x3(t)− · · · − a2n
a22xn(t) + b2
a22 (41)
..
. (42)
xn(t+ 1) = −aan1 nnx1(t)−
an2
annx2(t)− · · · − an,n−1
ann xn−1(t) + bn
ann (43)
puede usarse para obtener los valores dexi(t+ 1) en funci´on de los valores dexi(t). Si definimos la matrizTy el vectorcde la siguiente manera,
T= ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣
0 −a12 a11 −
a13
a11 · · ·
a1n a11
−a21a22 0 −a23
a22 · · · −
a1n a22
−a31a
33 − a32
a33 0 · · · −
a3n a33 ..
. . .. ...
FunctionJacobi(A,b,x0)
Obtener matrizT; 1
Obtener vectorc; 2
x←x0 ; 3
repeat 4
xant←x; 5
x←Tx+c; 6
until ||x−xant||∞
||x||∞ < ε; 7
[image:10.612.131.523.475.615.2]return x 8
Figura 9: Pseudoc´odigo que implementa el m´etodo de Jacobi para resolver en forma iterativa sistemas de ecuaciones lineales. En la l´ınea 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)
Para evitar el uso de la variabletpodemos escribir la ecuaci´on en forma de asignaci´on:
x←Tx+c (46)
En las figuras 9 y 10 se presenta la implementaci´on del m´etodo de Jacobi.
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) = −aa12 11x2(t)−
a13
a11x3(t)− · · · − a1n
a11xn(t) + b1
a11 (47)
x2(t+ 1) = −a21
a22x1(t+ 1)− a23
a22x3(t)− · · · − a2n
a22xn(t) + b2
a22 (48)
x3(t+ 1) = −a31
a33x1(t+ 1)− a32
a33x2(t+ 1)− · · · − a3n
a33xn(t) + b3
a33 (49)
..
. (50)
xn(t+ 1) = −an1
annx1(t+ 1)− an2
annx2(t+ 1)− · · · − an,n−1
ann xn−1(t+ 1) + bn
ann (51)
El uilizar los valores dexi que se acaban de calcular para calcular los siguientes valores permite que el m´etodo 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)
functionx = Jaco(A,b,x0)
% Implementacion del metodo Jacobi para la % solucion de sistemas de ecuaciones, tomando % como aproximacion inicial x0.
%
% x = Jaco(A,b,x0)
%
% Regresa x, la solucion del sistema Ax=b. % El criterio de terminacion es que
% norm(x−xAnt,Inf)/norm(x,Inf)<eps.
% 17 agosto 2007 % Manuel Valenzuela
n =size(A,1);
eps= 0.001;
% Se obtienen el vector c y la matriz T
c = b./diag(A); T =zeros(n);
for i=1:n
T(i ,:) = A(i,:)/A(i, i );
end
T =−T−eye(n);
x = x0; xAnt = x;
while1
x = T∗x + c;
if (norm(x−xAnt,Inf)/norm(x,Inf)<eps)
break end
xAnt = x;
[image:11.612.86.514.82.330.2]end
Figura 10: Implementaci´on en MATLAB del m´etodo de Jacobi para resolver en forma iterativa sistemas de ecuaciones lineales.
FunctionGaussSeidel(A,b,x0)
Obtener matrizT; 1
Obtener vectorc; 2
xant←x0; 3
repeat 4
fori←ndo 5
xi←T(i,:)x+ci ; 6
xant←x; 7
until ||x−xant||
||x||∞ < ε; 8
return x 9
[image:11.612.110.502.469.624.2]functionx = GaussS(A,b,x0)
% Implementacion del metodo Gauss−Seidel para % la solucion de sistemas de ecuaciones,
% tomando como aproximacion inicial x0. %
% x = GaussSeidel(A,b,x0) %
% Regresa x, la solucion del sistema Ax=b. % El criterio de terminacion es que
% norm(x−xAnt,Inf)/norm(x,Inf)<eps.
% 17 agosto 2007 % Manuel Valenzuela
n =size(A,1);
eps= 0.001;
% Se obtienen el vector c y la matriz T
c = b./diag(A);
T =zeros(n);
for i=1:n
T(i ,:) = A(i,:)/A(i, i );
end
T =−T.−eye(n);
x = x0; xAnt = x; j = 0;
while1 j = j+1;
for i=1:n
x(i ) = T(i,:)∗x + c(i );
end
if (norm(x−xAnt,Inf)/norm(x,Inf)<eps)
break end
xAnt = x;
[image:12.612.89.512.405.587.2]end
Figura 12: Implementaci´on en MATLAB del m´etodo de Gauss-Seidel para resolver en forma iterativa sistemas de ecuaciones lineales.
14.
Ejemplo de Jacobi y Gauss-Seidel
Para el ejemplo del circuito el´ectrico se tiene que
T= ⎡
⎣ 0.33330 0.33330 0.33330 0 0.2500 0
⎤ ⎦ c=
⎡ ⎣ 1.33330
0 ⎤
⎦ (53)
Jacobi:
1 2 3 4 5 6 7 8 9 10
i1 1.3333 1.3333 1.4815 1.4815 1.5103 1.5103 1.5159 1.5159 1.5170 1.5170 i2 0 0.4444 0.4444 0.5309 0.5309 0.5477 0.5477 0.5509 0.5509 0.5509 i3 0 0 0.1111 0.1111 0.1327 0.1327 0.1369 0.1369 0.1377 0.1377 Gauss-Seidel
1 2 3 4 5
i1 1.3333 1.4815 1.5103 1.5159 1.5170 i2 0.4444 0.5309 0.5477 0.5509 0.5516 i3 0.1111 0.1327 0.1369 0.1377 0.1379