Está en la página 1de 48

ndice de contenido

OBJETIVO.................................................................................................................................................3 INTRODUCCIN......................................................................................................................................3 DESARROLLO..........................................................................................................................................5 Cdigo en Matlab..................................................................................................................................5 Cdigo en C...........................................................................................................................................6 DIAGRAMA DE FLUJO DE CDIGO EN MATLAB............................................................................7 DIAGRAMA DE FLUJO DE CDIGO EN C.......................................................................................10 CASOS DE ESTUDIO.............................................................................................................................10 CONCLUSIN.........................................................................................................................................11 PRCTICA 2. MTODO DE ELIMINACIN DE GAUSS NORMALIZADO.......................................12 OBJETIVO...............................................................................................................................................12 INTRODUCCIN....................................................................................................................................12 DESARROLLO........................................................................................................................................14 Cdigo en Matlab.....................................................................................................................................14 Cdigo en C.........................................................................................................................................15 DIAGRAMA DE FLUJO DE CDIGO EN MATLAB....................................................................18 DIAGRAMA DE FLUJO DE CDIGO EN C...................................................................................19 CASOS DE ESTUDIO.............................................................................................................................20 CONCLUSIN........................................................................................................................................20 PRCTICA 3. MTODO DE GAUSS JORDAN....................................................................................21 INTRODUCCIN....................................................................................................................................21 DESARROLLO........................................................................................................................................23 Cdigo en matlab.................................................................................................................................23 Cdigo en C.........................................................................................................................................23 DIAGRAMA DE FLUJO DE CDIGO EN MATLAB.....................................................................25 DIAGRAMA DE FLUJO DE CDIGO EN C...................................................................................26 PRCTICA 4. INVERSIN DE MATRICES...................................................................................28 INTRODUCCIN....................................................................................................................................28 DESARROLLO........................................................................................................................................30 Cdigo en C.........................................................................................................................................30 Cdigo en Matlab................................................................................................................................31 CASO DE ESTUDIO...................................................................................................................................35 CONCLUSIN........................................................................................................................................36 PRCTICA 5. FACTORIZACIN LU........................................................................................................37 INTRODUCCIN....................................................................................................................................37 DESARROLLO........................................................................................................................................40 Cdigo en C.........................................................................................................................................40 CASOS DE ESTUDIO..................................................................................................................................43 CONCLUSIN........................................................................................................................................43

PRCTICA 1. MTODO DE ELIMINACIN DE GAUSS SIN NORMALIZAR. OBJETIVO. Se realizar a travs de Matlab un programa para la resolucin de un sistema de ecuaciones lineales a travs por el mtodo de eliminacin de Gauss sin normalizar. INTRODUCCIN. En el mtodo para la solucin de ecuaciones el lineales simultneas que

denominado como eliminacin de Gauss se eliminan las incgnitas mediante la combinacin de las ecuaciones mediante proceso de eliminacin esquematiz Gauss. Utilizando el mtodo de Gauss, un conjunto de n ecuaciones con n incgnitas se reduce a un sistema triangular equivalente, que a su vez se resuelve de fcilmente por "sustitucin inversa"; un procedimiento simple que se ilustrar con la presentacin siguiente. Sabiendo:

a11 X 1 + a 12 X2 + a13 X 3 +... + a 1n X n


=C1

a 21 X 1 + a 22 X 2 + a 23 X 3 +... + a 2n X
n

=C ...

( a ) ( b ) ( c )

( 2 )

a n1 X 1 + a n2 X 2 + a n3 X 3 + ... + a nn X
n

=C

El esquema de Gauss empieza reduciendo un conjunto de ecuaciones simultneas a un sistema triangular equivalente como:

( 6 )

en el cual los superndices indican los nuevos coeficientes que se forman en el proceso de reduccin. La reduccin real se logra de la siguiente manera: 1. Para obtener las modificaciones se multiplica los coeficientes de la ecuacin. (7) por el coeficiente de X1 de la segunda ecuacin (2), al producto de ellas se divide entre el coeficiente pivote(a11) y la ecuacin que resulta se resta de la misma, eliminando as X1.. Entonces se repite el mismo proceso para las dems ecuaciones hasta adoptar la forma:

( 8 )

La ecuacin usada para eliminar las incgnitas en las ecuaciones que la siguen se denomina Ecuacin Pivote. En la ecuacin pivote, el coeficiente de la incgnita que se va a eliminar de las ecuaciones que la siguen se denomina el Coeficiente Pivote (a11 en los pasos previos). 2. Siguiendo los pasos anteriores, la segunda ecuacin (8) se convierte en la ecuacin pivote, y los pasos de la parte 1 se repiten para eliminar X2 de todas las ecuaciones que siguen a esta ecuacin pivote. Esta reduccin nos conduce a:

( 9 )

3. A continuacin se utiliza la tercer ecuacin (9) como ecuacin pivote, y se usa el procedimiento descrito para eliminar X3 de todas las ecuaciones que siguen a la tercer ecuacin (9). Este procedimiento, utilizando diferentes ecuaciones pivote, se contina hasta que el conjunto original de ecuaciones ha sido reducido a un conjunto triangular tal como se muestra en la ecuacin (6). 4. Una vez obtenido el conjunto triangular de ecuaciones, la ltima ecuacin de este conjunto equivalente suministra directamente el valor de Xn dividido entre su coeficiente. Este valor se sustituye entonces en la antepenltima ecuacin del conjunto triangular para obtener un valor de Xn-1, que a su vez se utiliza junto con el valor de Xn en la penltima ecuacin del conjunto triangular para obtener un valor Xn-2 y as sucesivamente. Este es el procedimiento de sustitucin inversa al que nos referimos previamente. DESARROLLO. Cdigo en Matlab para Eliminacin de Gauss sin normalizar. %Mtodo de eliminacion gauss clc clear all A=[40 -10 -30 10;-10 30 -5 0;-30 -5 65 0] %Midiendo dimensiones de matriz A [r,c]=size(A) %Eliminacin hacia adelante %para mover el pivote for k=1:c 4 A end end %moverse en los renglones for i=k+1:r %moverse en las columnas for j=c:-1:k A(i,j)=A(i,j)-((A(i,k)/A(k,k))*A(k,j)); end

%sustitucin hacia atrs %asignando el valor de Xn x(r)=A(r,c)/A(r,r); %moverse en renglones for i=r-1:-1:1 %inicializando sum en cero sum=0; for j=i+1:r %haciendo la sutitucin para An-1nXn-1

sum=sum+A(i,j)*x(j); end %obteniendo Xn x(i)=(A(i,c)-sum)/A(i,i); end %mostrando Xn x

Cdigo en C para Eliminacin de Gauss sin normalizar . for(j=m-1;j>=0;j--){ #include <stdio.h> #include <stdlib.h> int main(){ //declarando variables para contadores int k,i,j,m,n; //inicializando dimensiones n=3; m=4; //inicializando matriz float 5,0},{-30,-5,65,0}}; //mover el pivote for(k=0;k<=n-1;k++){ //moverse en el renglon for(i=k+1;i<=n-1;i++){ //moverse en la columna 5 //haciendo las modificaciones para gauss sin normalizar A[i][j]=A[i][j]-((A[i][k]/A[k][k])*A[k][j]); }}} //para imprimir la matriz resultante printf("Metodo: normalizar\n\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ } printf("\n"); } return 0; } A[3][4]={{40,-10,-30,10},{-10,30,-printf("%f\t",A[i][j]); Gauss sin

DIAGRAMA

DE

FLUJO

DE

CDIGO

EN

MATLAB

PARA

GAUSS

SIN

NORMALIZAR

DIAGRAMA

DE

FLUJO

DE

CDIGO

EN

PARA GAUSS SIN NORMALIZAR

CASOS DE ESTUDIO. Del circuito:

Se obtiene:

donde

el

resultado

es

Dado otro circuito

10

se obtiene:

La solucin es:

CONCLUSIN. Este mtodo es de gran importancia ya que es la base para los dems mtodos que se vern a lo largo del curso, por lo que el aprendrselo es vital para el entendimiento de los dems mtodos.

PRCTICA 2. MTODO DE ELIMINACIN DE GAUSS NORMALIZADO. 11

OBJETIVO. Se realizar a travs de Matlab un programa para la resolucin de un sistema de ecuaciones lineales a travs por el mtodo de eliminacin de Gauss sin normalizar. INTRODUCCIN. En el mtodo para la solucin de ecuaciones el lineales simultneas que

denominado como eliminacin de Gauss se eliminan las incgnitas mediante la combinacin de las ecuaciones mediante proceso de eliminacin esquematiz Gauss. Utilizando el mtodo de Gauss, un conjunto de n ecuaciones con n incgnitas se reduce a un sistema triangular equivalente, que a su vez se resuelve de fcilmente por "sustitucin inversa"; un procedimiento simple que se ilustrar con la presentacin siguiente. Sabiendo:

a11 X 1 + a 12 X2 + a13 X 3 +... + a 1n X n


=C1

a 21 X 1 + a 22 X 2 + a 23 X 3 +... + a 2n X
n

=C ...

( a ) ( b ) ( c )

( 2 )

a n1 X 1 + a n2 X 2 + a n3 X 3 + ... + a nn X
n

=C

El esquema de Gauss empieza reduciendo un conjunto de ecuaciones simultneas a un sistema triangular equivalente como:

12

( 6 )

en el cual los superndices indican los nuevos coeficientes que se forman en el proceso de reduccin. La reduccin real se logra de la siguiente manera: 5. La primera ecuacin se divide entre el coeficiente de X1 en esa ecuacin para obtener(a este paso se le denomina normalizacin): ( 7 ) Entonces para obtener las modificaciones se multiplica los coeficientes de la ecuacin. (7) por el coeficiente de X1 de la segunda ecuacin (2) y la ecuacin que resulta se resta de la misma, eliminando as X1. La ec. (7) se multiplica entonces por el coeficiente de X1 de la tercera ecuacin (2), y la ecuacin resultante se resta de la misma para eliminar X1 de esa ecuacin. En forma similar, X se elimina de todas las ecuaciones del conjunto excepto la primera, de forma que el conjunto adopta la forma:

( 8 )

La ecuacin usada para eliminar las incgnitas en las ecuaciones que la siguen se denomina Ecuacin Pivote. En la ecuacin pivote, el coeficiente de la incgnita que se va a eliminar de las ecuaciones que la siguen se denomina 13

el Coeficiente Pivote (a11 en los pasos previos). 6. Siguiendo los pasos anteriores, la segunda ecuacin (8) se convierte en la ecuacin pivote, y los pasos de la parte 1 se repiten para eliminar X2 de todas las ecuaciones que siguen a esta ecuacin pivote. Esta reduccin nos conduce a:

( 9 )

7. A continuacin se utiliza la tercer ecuacin (9) como ecuacin pivote, y se usa el procedimiento descrito para eliminar X3 de todas las ecuaciones que siguen a la tercer ecuacin (9). Este procedimiento, utilizando diferentes ecuaciones pivote, se contina hasta que el conjunto original de ecuaciones ha sido reducido a un conjunto triangular tal como se muestra en la ecuacin (6). 8. Una vez obtenido el conjunto triangular de ecuaciones, la ltima ecuacin de este conjunto equivalente suministra directamente el valor de Xn. Este valor se sustituye entonces en la antepenltima ecuacin del conjunto triangular para obtener un valor de Xn-1, que a su vez se utiliza junto con el valor de Xn en la penltima ecuacin del conjunto triangular para obtener un valor Xn-2 y as sucesivamente. Este es el procedimiento de sustitucin inversa al que nos referimos previamente. DESARROLLO.

Cdigo en Matlab para Eliminacin de Gauss normalizado. %Mtodo de eliminacion gauss clc 14 clear all A=[40 -10 -30 10;-10 30 -5 0;-30 -5 65 0]

[r,c]=size(A) %tomar dimensiones de la matriz %Eliminacin hacia adelante for k=1:c for i=k+1:r for j=c:-1:k %normalizando ecuacion pivote A(k,j)=A(k,j)/A(k,k); %haciendo la modificaciones A(i,j)=A(i,j)-(A(i,k)*A(k,j)); end end end %sacando una copia copia=A(r,r); for k=r:1:c %para terminar la normalizacin A(r,k)=A(r,k)/copia;

end A %sustitucin hacia atrs %asignar valor en Xn x(r)=A(r,c); for i=r-1:-1:1 sum=0; for j=i+1:r %hace sustitucin sum=sum+A(i,j)*x(j); end asigna el valor en Xi x(i)=(A(i,c)-sum)/A(i,i); end muestra matriz de incgnitas x

Cdigo en C para Eliminacin de Gauss normalizado. #include <stdio.h> for(i=0;i<n;i++){ #include <stdlib.h> for(j=0;j<m;j++){ int main(){ printf("%f\t",A[i][j]); //lo mismo que en cdigo anterior } int k,i,j,m,n; printf("\n"); n=3; } m=4; //declarando variables para sustitucin float A[3][4]={{40,-10,-30,10},{-10,30,-float sum; 5,0},{-30,-5,65,0}}; float x[n]; for(k=0;k<=n-1;k++){ for(i=n-2;i>0;i--){ for(i=k+1;i<=n-1;i++){ sum=0; for(j=m-1;j>=0;j--){ for(j=i+1;j<n;j++){ //solo que aqui se hace la normalizacin sum=sum+A[i][j]*x[j]; A[k][j]=A[k][j]/A[k][k]; } A[i][j]=A[i][j]-(A[i][k]*A[k][j]); x[i]=(A[i][m-1]-sum)/A[i][i]; }}} } k=m-1; //mostrando matriz de resultados while(k>=n-1){ for(i=0;i<=n-1;i++){ //terminando normalizacin printf("%f\t",x[i]); A[n-1][k]=A[n-1][k]/A[n-1][n-1]; } k--; return 0; } }

15

16

17

DIAGRAMA DE FLUJO DE CDIGO EN MATLAB PARA GAUSS NORMALIZADO DIAGRAMA DE FLUJO DE CDIGO EN C PARA GAUSS NORMALIZADO

18

CASOS DE ESTUDIO. Dado el siguiente circuito

Obtener:

Solucin.

19

CONCLUSIN. El mtodo que ms se me facilita es el de Gauss normalizado ya que es en donde menos operaciones haces, adems de que para hacer el programa que realiza el mtodo no se necesitan tantas instrucciones como en las otras formas de resolver ecuaciones. PRCTICA 3. MTODO DE GAUSS JORDAN OBJETIVO. Por medio de la programacin en Matlab, desarrollar un programa capaz de resolver un sistema de ecuaciones lineales por medio del mtodo de Gauss-Jordan. INTRODUCCIN Este mtodo, que constituye una variacin del mtodo de eliminacin de Gauss, permite resolver hasta 15 o 20 ecuaciones simultneas, con 8 o 10 dgitos significativos en las operaciones aritmticas de la computadora. Este procedimiento se distingue del mtodo Gaussiano en que cuando se elimina una incgnita, se elimina de todas las ecuaciones restantes, es decir, las que preceden a la ecuacin pivote as como de las que la siguen. 20

Para una mejor comprensin, la explicacin del mtodo se realizar por medio de un sistema de ecuaciones. 3.0 X1-0.1X2-0.2X3 = 7.8500 0.1 X1+7.0X2-0.3 X3 = - 19.3 0.3 X1-0.2X2+10X3 = 71.4000 Primero expresemos los coeficientes y el vector de trminos independientes como una matriz aumentada.

Se normaliza el primer rengln dividiendo entre el coeficiente pivote(a11=3) para obtener:

El trmino X1 se puede eliminar del segundo rengln restando 0.1 veces el primero del segundo rengln. De una manera similar, restando 0.3 veces el primero del tercer rengln se elimina el trmino con X1 del tercer rengln.

En seguida, se normaliza el segundo rengln dividiendo entre el segundo pivote (7.00333):

21

Reduciendo los trminos en X2 de la primera y la tercera ecuacin se obtiene:

El tercer rengln se normaliza dividindolo entre el 10.010:

Finalmente, los trminos con X3 se pueden reducir de la primera y segunda ecuacin para obtener:

Ntese que no se necesita sustitucin hacia atrs para obtener la solucin. Aunque los mtodos de Gauss-Jordan y de eliminacin de Gauss pueden parecer casi idnticos, el primero requiere aproximadamente 50% menos operaciones. Por lo tanto, la eliminacin gaussiana es el mtodo simple por excelencia en la obtencin de soluciones exactas a las ecuaciones lineales simultneas. Una de las principales razones para incluir el mtodo de Gauss-Jordan, es la de proporcionar un mtodo directo para obtener la matriz inversa. 22

DESARROLLO. Cdigo en matlab para el mtodo end Gauss Jordan. %Mtodo Gauss-Jordan clc clear all %inicializando matriz A=[40 -10 -30 10;-10 30 -5 0;-30 -5 65 0] %midiendo matriz [r,c]=size(A) clc A %Haciendo Gauss %para el pivote for k=1:r %para los renglones for i=k+1:r %para las columnas for j=c:-1:k %normalizando la ecuacin pivote A(k,j)=A(k,j)/A(k,k); Cdigo en C para el mtodo Gauss Jordan. #include <stdio.h> #include <stdlib.h> int main(){ //declarando contadores %Haciendo Jordan %haciendo ceros del otro lado de la matriz for k=1:c for i=k+1:r for j=c:-1:k A(k,j)=(A(k,j)-(A(k,i)*A(i,j))); end end end A

int k,i,j,m,n; %haciendo modificaciones dejando ceros //inicializando dimensiones abajo n=3; A(i,j)=A(i,j)-(A(i,k)*A(k,j)); m=4; end //inicializando matriz end float A[3][4]={{40,-10,-30,10},{-10,30,end 5,0},{-30,-5,65,0}}; acabando de normalizar for(k=0;k<=n-1;k++){ for k=c:-1:r for(i=k+1;i<=n-1;i++){ A(r,k)=A(r,k)/A(r,r); 23

for(j=m-1;j>=0;j--){ //normalizando A[k][j]=A[k][j]/A[k][k]; //modificando matriz y haciendo ceros A[i][j]=A[i][j]-(A[i][k]*A[k][j]); }}} //acabando de normalizar k=m-1; while(k>=n-1){ A[n-1][k]=A[n-1][k]/A[n-1][n-1]; k--; } //imprimiendo la parte de Gauss printf("Haciendo Gauss\n\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("%f\t",A[i][j]); }

printf("\n"); } for(k=0;k<m;k++){ for(i=k+1;i<n;i++){ for(j=m-1;j>=k;j--){ //haciendo ceros del otro lado de la matriz A[k][j]=A[k][j]-(A[k][i]*A[i][j]); }}} printf("\n"); //mostrando la matriz Gauss-Jordan printf("Haciendo Jordan\n\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("%f\t",A[i][j]); } printf("\n"); } return 0; }

DIAGRAMA DE FLUJO DE CDIGO EN MATLAB PARA GAUSS-JORDAN

24

25

DIAGRAMA DE FLUJO DE CDIGO EN C PARA GAUSS-JORDAN

26

CASOS DE ESTUDIO. Dado el siguiente circuito.

27

Su representacin de forma de un sistema de ecuaciones lineales

Se resuelve a travs de Gauss-Jordan

28

CONCLUSIN El sistema expuesto anteriormente presenta el mismo principio que el de eliminacin de Gauss, sin embargo al hacer el doble de las operaciones es ms trabajoso resolver los sistemas de ecuaciones, as que prefiero hacerlo por el mtodo de eliminacin gaussiana.

PRCTICA 4. INVERSIN DE MATRICES. OBJETIVO. Por medio de la programacin en Matlab, desarrollar un programa capaz de resolver un sistema de ecuaciones lineales obteniendo la inversa de una matriz por medio de Gauss-Jordan y multiplicando la inversa por la matriz de resultados. INTRODUCCIN Sea A una matriz cuadrada no singular, es decir, que su determinante sea diferente de cero, . Por definicin de matriz inversa, se tiene que

es la inversa de A si: (1 Haciendo 3) y sustituyendo en la ecuacin anterior, se obtiene

29

(1

=I 4) Puede considerarse que esta ecuacin matricial representa un sistema de ecuaciones simultneas, en donde no hay un solo vector de trminos independientes sino n, los n vectores bsicos que forman la matriz unitaria I. Adems, no existe un solo vector de incgnitas, sino n, los que corresponden a cada columna de la matriz unitaria. Por lo anterior, es posible determinar la inversa de una matriz con el mtodo de Gauss-Jordan de eliminacin completa. Para lograrlo, bastar con aplicar las operaciones elementales sobre los renglones de la matriz ampliada (A, I) de manera de transformar A en I. Cuando se haya hecho, se obtendr la matriz ampliada , con lo que se tendr la inversa buscada.

EJEMPLO Invertir la matriz

Aumntese la matriz de coeficientes con una matriz identidad

Usando a11 como pivote, el rengln 1 se normaliza y se usa para eliminar a X1 de los otros renglones.

30

En seguida, se usa

22

como pivote y X2 se elimina de los otros renglones.

Finalmente, se usa

33

como pivote y X3 se elimina de los renglones restantes:

Por lo tanto, la inversa es:

Se puede resolver un sistema de ecuaciones con la inversa de la matriz de coeficientes, de la siguiente manera:

donde C es el vector de trminos independientes. DESARROLLO. 31

Cdigo en C para la inversin de B[k][j]=B[k][j]/B[k][k]; matrices. B[i][j]=B[i][j]-(B[i][k]*B[k][j]); #include <stdio.h> }}} int main(){ //declarando variables int k,i,j,m,n; //inicializando dimensiones n=3; m=4; //inicializando matriz k=m-1; while(k>=n-1){ B[n-1][k]=B[n-1][k]/B[n-1][n-1]; k--; } //Haciendo Jordan

for(k=0;k<m;k++){ float A[3][4]={{40,-10,-30,10},{-10,30,-for(i=k+1;i<n;i++){ 5,0},{-30,-5,65,0}}; for(j=m-1;j>=k;j--){ //declarar matriz B=(A, I) B[k][j]=B[k][j]-(B[k][i]*B[i][j]); float B[3][6]; //modificar m para manipular B m=6; for(i=0;i<n;i++){ for(j=0;j<m;j++){ //construyendo (A, I) if(j-i==n) B[i][j]=1; else if(j>n) B[i][j]=0; else B[i][j]=A[i][j]; } } //Haciendo Gauss for(k=0;k<=n-1;k++){ for(i=k+1;i<=n-1;i++){ for(j=m-1;j>=0;j--){ 32 }}} //declara matriz de resultados float x[n]; for(i=0;i<n;i++){ //inicializando en cero x[i]=0; //haciendo multiplicacin x=(A 1)*(b) for(j=n;j<2*n;j++) x[i]=x[i]+B[i][j]*A[j-n][n]; } printf("Obteniendo la inversa\n\n"); //imprimiendo inversa for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("%f ",B[i][j]); } printf("\n"); }

//mostrando matriz de resultados for(i=0;i<n;i++) printf("%f\t",x[i]); return 0; }

for j=c:-1:k A(k,j)=A(k,j)/A(k,k); A(i,j)=A(i,j)-(A(i,k)*A(k,j)); end end

Cdigo en Matlab para la inversin end de matrices. for k=c:-1:r %Mtodo Gauss-Jordan A(r,k)=A(r,k)/A(r,r); clc clear all end %Haciendo Jordan

A=[40 -10 -30 10;-10 30 -5 0;-30 -5 65 0] for k=1:c [r,c]=size(A) for i=k+1:r for i=1:r for j=r+1:2*r if (j-i==r) A(i,j)=1; else A(i,j)=0; end end end [r,c]=size(A) clc A %Haciendo Gauss for k=1:r for i=k+1:r for j=c:-1:k A(k,j)=(A(k,j)-(A(k,i)*A(i,j))); end end end for i=1:r for j=1:r B(i,j)=A(i,j+r); end end B

33

34

35

CASO DE ESTUDIO.

36

Para nodo 1.

Para nodo 2.

Para nodo 3.

en forma matricial tenemos:

poniendo el comando V=inv(Y)*I entonces la matriz de incgnitas se resuelve como: V=404.2857 350.0000 412.8571

37

CONCLUSIN. Para obtener la inversa de una matriz no tiene una gran dificultad, solamente es el mtodo Gauss-Jordan anexndole la matriz identidad, solamente la cantidad de clculos aumenta considerablemente.

38

PRCTICA 5. FACTORIZACIN LU. OBJETIVO. Por medio de la programacin en Matlab, desarrollar un programa capaz de resolver un sistema de ecuaciones lineales por medio del mtodo de factorizacin LU. INTRODUCCIN La factorizacin LU de una matriz es una factorizacin que resume el proceso de eliminacin gaussiana aplicado a la matriz y que es conveniente en trminos del nmero total de operaciones de punto flotante cuando se desea calcular la inversa de una matriz o cuando se resolver una serie de sistemas de ecuaciones con una misma matriz de coeficientes. Suponga que la matriz A es una matriz m n se puede escribir como el producto de dos matrices: A = LU donde L es una matriz triangular inferior m m y U es una matriz escalonada m n. Entonces para resolver el sistema: A x = b, escribimos A x = (L U) x = L (U x) . Una posible estrategia de solucin consiste en tomar y = U x y resolver para y: o L y = b. Como la matriz L es triangular superior este sistema puede resolverse mediante sustitucin hacia abajo. Una vez con los valores encontrados de y, las incgnitas al sistema inicial se resuelve despejando x de U x = y. Nuevamente, como U es escalonada, este sistema puede resolverse en caso de tener solucin mediante sustitucin, lo cual es sencillo. Estas observaciones nos dan la pauta para ver la conveniencia de una factorizacin como la anterior, es decir factorizar A como el producto de una matriz L triangular superior, por otra U la 39

cual es escalonada. Esta factorizacin se llama usualmente descomposicin LU. Obtencin de la factorizacin LU Ejemplo: determine la factorizacin LU de

La idea del mtodo es ir acumulando las inversas de las operaciones hechas sobre los renglones la matriz para irla transformando en una matriz escalonada. Y ms que propiamente las inversas de las operaciones sobre los renglones, las matrices elementales involucradas. As por ejemplo el primer clculo que se realiza es hacer un cero debajo de el elemento (1, 1) que es el elemento 2, para ello debemos realizar la operacin R2 R2 + 3R1, esta operacin tiene como matriz elemental la matriz:

As la situacin est:

40

En el siguiente paso del proceso de eliminacin es R3 R3 2R1 , esta operacin tiene como matriz elemental la matriz:

As la situacin est:

En el siguiente paso del proceso de eliminacin es R4 R4 + R1 , esta operacin tiene como matriz elemental la matriz:

As la situacin est:

41

Observamos que el hipottico caso de que en E3 E2 E1 A = B3 La matriz B3 ya fuera escalonada, es decir la U buscada, entonces: A = E1
1

E2

E3

Lo cual indica que lo que debemos acumular son las inversas de las matrices elementales utilizadas. La forma sistemtica de ir acumulando las inversas de las Eis es ir construyendo la matriz L:

As en el avance de la conversin a escalonada de A:

En este caso la matriz U est en la forma escalonada y por consiguiente el proceso se detiene haciendo cero aquellos valores desconocidos. Por consiguiente una factorizacin de A ser:

42

DESARROLLO. A[i][j]=A[i][j]-((A[i][k]/A[k][k])*A[k][j]); Cdigo en C para LU. }}} #include <stdio.h> for(i=0;i<n;i++){ int main(){ for(j=0;j<n;j++) int k,i,j,m,n,w; printf("%f\t",A[i][j]); printf("Da el orden de la matriz\n"); printf("\n"); scanf("%d",&n); } m=n+1; for(w=0;w<n;w++){ float A[n][m]; if(w==n-1) float Res[n]; L[w][n-1]=1; float L[n][m]; else printf("Da valores en la matriz en laL[w][n-1]=0; posicion\n"); } for(i=0;i<n;i++){ printf("L= \n"); for(j=0;j<m;j++){ for(i=0;i<n;i++){ printf("[%i][%i]= ",i+1,j+1); for(j=0;j<n;j++) if(j<n) printf("%f\t",L[i][j]); scanf("%f",&A[i][j]); printf("\n"); else } scanf("%f",&Res[i]); for(i=0;i<n;i++) } L[i][n]=Res[i]; } printf("L*y=b \n"); printf("U=\n"); for(i=0;i<n;i++){ for(k=0;k<=n-1;k++){ for(j=0;j<m;j++) //para moverse por los renglones printf("%f\t",L[i][j]); for(i=k+1;i<=n-1;i++){ printf("\n"); for(j=n-1;j>=0;j--){ } if((j==n-1)&&(i==k+1)){ float y[n]; for(w=0;w<n;w++){ float sum; if(w>=k) y[0]=L[0][n]; L[w][k]=A[w][k]/A[k][k]; for(i=1;i<n;i++){ else sum=0; L[w][k]=0; for(j=0;j<i;j++) } sum=sum+L[i][j]*y[j]; } y[i]=L[i][n]-sum; //Hace las modificaciones de A[i][j] } 43

printf("y= \n"); for(i=0;i<n;i++) printf("%f\t",y[i]); //para los valores de las X float x[n]; printf("\nU*x=y\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(j==n) A[i][j]=y[i]; printf("%f\t",A[i][j]); } printf("\n"); } x[n-1]=A[n-1][m-1]/A[n-1][n-1]; for(i=n-2;i>=0;i--){ sum=0; for(j=i+1;j<=n-1;j++)

//para obtener los valores de la sustitucin sum=sum+A[i][j]*x[j]; //se introduce el valor de Xn en la matriz de resultados x[i]=(A[i][m-1]-sum)/A[i][i]; } printf("\nLos valores de X's son\n\n"); //se imprime la matriz de resultados for(i=0;i<=n-1;i++){ printf("%f\t",x[i]); } return 0; }

44

45

46

CASOS DE ESTUDIO.

47

CONCLUSIN. Pues como lo dije en anteriores prcticas, para m sigue siendo mejor el mtodo de Gauss normalizado para la solucin de ecuaciones lineales, aunque tambin se debe a que no investigu ms para saber que informacin se obtiene con este mtodo.

48

También podría gustarte