Está en la página 1de 12

Mtodos Numricos (SC854) e e Solucin de sistemas de ecuaciones lineales o

c M. Valenzuela 2007
(21 de agosto de 2007)

1.

Matrices

Denicin. 1 Una matriz n m es un arreglo rectangular de elementos con n las (o renglones) y o m columnas en el cual no slo es importante el valor de los elementos sino tambin su posicin en o e o el arreglo. Ejemplo: A = (aij ) = a11 a21 . . . an1 a12 a22 . . . an2 .. . a1m a2m . . . (1)

anm

Las matrices se denotan con may sculas (con negritas) y sus elementos con min sculas. u u

2.

Vectores
B= b11 b12 b1n , (2)

Denicin. 2 Una matriz 1 n, o

se le llama un vector rengln de n dimensiones. o Denicin. 3 Una matriz n 1, o C= se le llama un vector columna de n dimensiones. Usualmente, los sub ndices innecesarios se omiten, de manera que y= y1 y2 ym , (5) , (4) c11 c12 . . . c1n , (3)

denota un vector rengln de m dimensiones, y o

x=

x1 x2 . . . xn

denota un vector columna de n dimensiones. Los vectores se denotan con minsculas y negritas. u La norma de un vector x se dene de la siguiente manera:
n 1/p

||x||p =
i=1

|xi |

(6)

Ntese que o
n

||x||2 =
i=1

|xi |2 = |x|,

(7)

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

10

10

20V

Figura 1: Circuito elcitrico que puede ser descrito mediante un sistema de ecuaciones simultneas. e a es decir, la magnitud del vector. Ntese tambin que o e
n 1/p

es decir, el mximo de los valores absolutos de las componentes xi del vector. a

3.

Por qu se requieren mtodos para resolver sistemas de e e ecuaciones lineales

Muchos problemas pueden ser descritos mediante un sistemas de ecuaciones lineales. Por ejemplo, considere el circuito elctrico mostrado en la gura 1. e Las ecuaciones de malla que describen a este circuito son las siguientes: 15ii 5i1 5i2 + 15i2 5i2 + 5i3 20i3 = 20 = 0 = 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 resistencia R es i1 i2 .

4.

Representacin de sistemas de ecuaciones o


Un sistema de ecuaciones lineales simulatneas de la forma a a11 x1 + a12 x2 + + a1n xn a21 x1 + a22 x2 + + a2n xn an1 x1 + an2 x2 + + ann xn = = . . . = b1 b2 bn

puede representarse mediante una matriz n (n + 1). A partir de la matriz A y el vector b a11 a12 a21 a22 A= . . .. . . . . . an1 an2 b1 b2 b= . . . bn
c M. Valenzuela, 2007 (21 de agosto de 2007)

R = 5

||x|| = lim

|xi |
i=1

= max (|xi |) ,
i

(8)

a1n a2n . . .

(10)

ann (11)

Pgina 2 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

se forma la matriz aumentada A= a11 a21 . . . an1 a12 a22 . . . an2 .. . a1n a2n . . . b1 b2 . . . bn (12)

ann

Esta matriz aumentada representa la ecuacin vectorial Ax = b. o

5.

Ejemplo de circuitos elctricos e


Deniendo R, i, y v: 15 5 0 R = 5 15 5 0 5 20 20 i1 i = i2 v = 0 i3 0 (13)

(14)

Podemos expresar el juego de ecuaciones como 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 R = 5 15 5 0 0 5 20 0

(15)

(16)

6.

Operaciones elementales de rengln o

Como la matriz aumentada A representa un sistema de ecuaciones simultneas, es posible rea alizar las siguientes operaciones elementales de rengln manteniendo las igualdades de las ecuaciones o representadas: Multiplicar un rengln por una constante o Multiplicar un rengln por una constante y sumarlo a otro rengln o o Los mtodos de soluciones de sistemas de ecuaciones aplican estas operaciones sobre la matriz e aumentada en forma ordenada y repetida. En las siguientes secciones se explican los siguientes mtodos: e Eliminacin gaussiana (Gauss) o Gauss-Jordan Montante

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 3 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

Function EGaussiana(A,b)
1 2 3 4 5

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

6 7 8 9 10

Figura 2: Pseudocdigo que implementa el mtodo de eliminacin gaussiana para solucin de sistemas o e o o de ecuaciones lineales.

7.

Eliminacin Gaussiana o

Eliminacin gaussiana aplica operaciones de rengln para resolver un sistema de ecuaciones o o simulatneas; su pseudocdigo se presenta en la gura 2, y en la gura 3 su implementacin en a o o MATLAB. o Para cada rengln, se dene el elemento ai,i de la matriz aumentada como el pivote. Eliminacin o gaussiana opera en dos fases. Primero, para cada rengln empezando por el primer rengln, hace o o ceros en los elementos debajo del pivote (l neas 3 y 4). Segundo, para cada rengln empezando por o el ultimo rengln, hace el pivote igual a 1, y hace ceros arriba del pivote (l o neas 5 a 8). La solucin o al sistema de ecuaciones queda en la ultima columna de la matriz aumentada (l nea 9). A continuacin se presenta la solucin del ejemplo del circuito elcitrico mediante eliminacin o o e o gaussiana. 15 5 0 20 15 5 0 20 R = 5 15 5 0 0 13.3333 5 6.6667 (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)

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 4 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

function x = 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.

for i=1:n % Hacer ceros en la columna i debajo de la la 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 la i for j=i1:1:1 A(j ,:) = A(j,:) A(i,:)A(j, i ); end end x = A(:,n+1);

% 22 enero 2007 % Manuel Valenzuela % Crear la matriz aumentada A = [A b]; n = size(A,1);

Figura 3: Implementacin en MATLAB del mtodo de eliminacin gaussiana para solucin de siso e o o temas de ecuaciones lineales.

8.

Mtodo de Gauss-Jordan e

En la guras 4 y 5 se presenta en la implementacin del mtodo Gauss-Jordan. El mtodo de o e e Gauss-Jordan es similar a eliminacin gaussiana, pero primero hace el pivote igual a 1, y luego hace o ceros en toda la columna del pivote. En el mtodo de Gauss-Jordan primero se hace el pivote igual e a 1 se hace el pivote igual a 1 (l nea 3), Despus se hacen cero los elementos arriba y abajo del e pivote l neas 4 a 6). La solucin al sistema de ecuaciones queda en la ultima columna de la matriz o aumentada (l nea 7). A contiuacin se muestra la solucin del ejemplo del circuito elctrico mediante Gauss-Jordan. o o e 15 5 0 20 1 0.3333 0 1.3333 15 5 0 R = 5 15 5 0 5 (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 mximo a

Los algoritmos presentados pueden encontrar el problema de que el pivote sea cero, causando una divisin entre cero. Para resolver este problema se pueden intercambiar renglones para colocar o una elemento diferente de cero en la diagonal principal. En la gura 6 se presenta la implementacin o de Gauss-Jordan donde se escoge el elemento de mximo valor abosluto como pivote. a
c M. Valenzuela, 2007 (21 de agosto de 2007) Pgina 5 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

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: Pseudocdigo que implementa de mtodo Gauss-Jordan para la solucin de sistemas de o e o ecuaciones lineales.

function x = GaussJ(A,b) % % % % % % % Implementacion del metodo GaussJordan para resolver sistemas de ecuaciones lineales. x = GaussJordan(A,b) Regresa x, la solucion del sistema Ax=b. 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);

% 22 enero 2007 % Manuel Valenzuela % Se crea la matriz aumentada A = [A b]; n = size(A,1);

Figura 5: Implementacin en MATLAB del mtodo Gauss-Jordan para solucin de sistemas de o e o ecuaciones lineales.

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 6 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

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 rengln de m en A ; o 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: Pseudocdigo que implementa el mtodo de Gauss-Jordan con pivote mximo para solucin o e a o de sistemas de ecuaciones lineales.

10.

Montante

El mtodo de Montante, que se presenta en las guras 7 y 8, resuelve un sistema de ecuaciones e simultneas haciendo operaciones que mantienen el n mero de decimales que tiene los datos originales a u hasta el ultimo paso, donde se realiza la divisin entre el determinante. o Ejemplo del mtodo Montante: e 15 5 0 20 15 5 0 20 A = 5 15 5 0 0 200 75 100 (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 mtodos de eliminacin gaussiana, Gauss-Jordan, y Montante pueden ser utilizados para e o encontrar la inversa de una matriz. En este caso, la matriz aumentada ser la matriz de original y a 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) Pgina 7 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

Function Montante(A,b)
1 2 3 4 5 6 7 8

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

9 10 11

Figura 7: Pseudocdigo que implementa el mtodo de Montante para la solucin de sistemas de o e o ecuaciones lineales.

function x = 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. 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); Figura 8: Implementacin en MATLAB del mtodo de Montante para la solucin de sistemas de o e o ecuaciones lineales.

% 22 enero 2007 % Manuel Valenzuela % Se crea la matriz aumentada A = [A b]; n = size(A,1);

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 8 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

1 0 0

0 0 1 0 0 1

0.0759 0.0276 0.0069 0.0276 0.0828 0.0207 0.0069 0.0207 0.0552

(30)

La inversa son las ultimas n columnas de la matriz aumentada: 0.0759 0.0276 0.0069 A1 = 0.0276 0.0828 0.0207 0.0069 0.0207 0.0552

(31)

12.

Mtodos Iterativos: Jacobi e


a11 x1 + a12 x2 + + a1n xn a21 x1 + a22 x2 + + a2n xn an1 x1 + an2 x2 + + ann xn = = . . . = b1 b2 bn (32) (33) (34) (35)

Dado un sistema de ecuaciones de la forma:

si se despeja la variable xi de cada ecuacin se obtiene lo siguiente: o x1 x2 = = . . . xn = an1 an2 an,n1 bn x1 x2 xn1 + ann ann ann ann a12 a13 a1n b1 x2 x3 xn + a11 a11 a11 a11 a21 a23 a2n b2 x1 x3 xn + a22 a22 a22 a22 (36) (37) (38) (39)

El sistema anterior, puede usarse como una frmula recursiva, es decir, o x1 (t + 1) = x2 (t + 1) = . . . xn (t + 1) = an1 an2 an,n1 bn x1 (t) x2 (t) xn1 (t) + ann ann ann ann a12 a13 a1n b1 x2 (t) x3 (t) xn (t) + a11 a11 a11 a11 a21 a23 a2n b2 x1 (t) x3 (t) xn (t) + a22 a22 a22 a22 (40) (41) (42) (43)

o puede usarse para obtener los valores de xi (t + 1) en funcin de los valores de xi (t). Si denimos la matriz T y el vector c de la siguiente manera, a13 a1n a12 b1 0 a a11 a11 a11 11 b a21 a23 a1n 2 0 a22 a22 a22 a22 a3n c = b3 T = a31 a32 0 a33 a33 a33 a33 . . . .. . . . . . . . an1 bn an2 an,n1 0 ann ann ann ann
c M. Valenzuela, 2007 (21 de agosto de 2007)

(44)

Pgina 9 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

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: Pseudocdigo que implementa el mtodo de Jacobi para resolver en forma iterativa sistemas o e de ecuaciones lineales. En la l nea 7 se ha tomado la norma innita, || || , para denir el criterio de terminacin, pero es posible tomar otra norma. o se pueden escribir las ecuaciones recursivas en forma matricial: x(t + 1) = Tx(t) + c Para evitar el uso de la variable t podemos escribir la ecuacin en forma de asignacin: o o x Tx + c En las guras 9 y 10 se presenta la implementacin del mtodo de Jacobi. o e (46) (45)

13.

Mtodos Iterativos: Gauss-Seidel e

En las ecuaciones recursivas, es posible utilizar inmediatamente los valores obtenidos para calcular los siguientes valores, es decir, x1 (t + 1) = x2 (t + 1) = x3 (t + 1) = . . . xn (t + 1) = an1 an2 an,n1 bn x1 (t + 1) x2 (t + 1) xn1 (t + 1) + ann ann ann ann a12 a13 a1n b1 x2 (t) x3 (t) xn (t) + a11 a11 a11 a11 a21 a23 a2n b2 x1 (t + 1) x3 (t) xn (t) + a22 a22 a22 a22 a31 a32 a3n b3 x1 (t + 1) x2 (t + 1) xn (t) + a33 a33 a33 a33 (47) (48) (49) (50) (51)

El uilizar los valores de xi que se acaban de calcular para calcular los siguientes valores permite que el mtodo converja ms rpidamente a una solucin. e a a o Las ecuaciones recursivas se pueden escribir en forma matricial de la siguiente manera: xi T(i, :)x + ci (52)

donde T(i, :) representa la la i de la matriz T, y la regla debe aplicarse en orden para i = 1, 2, . . . n. En las guras 11 y 12 se presenta la implementacin del mtodo de Gauss-Seidel. o e
c M. Valenzuela, 2007 (21 de agosto de 2007) Pgina 10 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

function x = 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(xxAnt,Inf)/norm(x,Inf)<eps.

% 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 = Teye(n); x = x0; xAnt = x; while 1 x = Tx + c; if (norm(xxAnt,Inf)/norm(x,Inf)<eps) break end xAnt = x; end

% 17 agosto 2007 % Manuel Valenzuela n = size(A,1); eps = 0.001;

Figura 10: Implementacin en MATLAB del mtodo de Jacobi para resolver en forma iterativa o e sistemas de ecuaciones lineales.

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

Figura 11: Pseudocdigo que implementa el mtodo de Gauss-Seidel para resolver en forma iterativa o e sistemas de ecuaciones lineales.

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 11 a

Solucin de sistemas de ecuaciones lineales o

Mtodos Numricos (SC854) e e

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: Implementacin en MATLAB del mtodo de Gauss-Seidel para resolver en forma iterativa o e sistemas de ecuaciones lineales.

function x = GaussS(A,b,x0)

14.

Ejemplo de Jacobi y Gauss-Seidel


1.3333 0 c= 0

Para el ejemplo del circuito elctrico se tiene que e 0 0.3333 0 0 0.3333 T = 0.3333 0 0.2500 0 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 6 1.5103 0.5477 0.1327

(53)

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 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

En general, Gauss-Seidel es ms rpido que Jacobi, es decir, converge en menos iteraciones a la a a solucin correcta. o

c M. Valenzuela, 2007 (21 de agosto de 2007)

Pgina 12 a

También podría gustarte