Page 347 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 347

11.3  ECUACIONES ALGEBRAICAS LINEALES CON BIBLIOTECAS Y PAQUETES   323

                                         Solución.  Un ejemplo de un programa principal en Fortran 90 que usa LFCRG y
                                         LFIRG para resolver este problema se escribe así:

                                            PROGRAM Lineqs
                                            USE msimsl
                                            IMPLICIT NONE
                                            INTEGER::ipath,lda,n,ldfac
                                            PARAMETER(ipath=1,lda=3,ldfac=3,n=3)
                                            INTEGER::ipvt(n),i,j,itmax=50
                                            REAL::A(lda,lda),Ainv(lda,lda), factor(ldfac,ldfac),Rcond,Res(n)
                                            REAL::Rj(n),B(n),x(n)

                                            DATA A/1.0,0.5,0.3333333,0.5,0.3333333,0.25,0.3333333,0.25,0.2/
                                            DATA B/1.833333,1.083333,0.783333/

                                            !Realiza la descomposición lu; determina y muestra el número de
                                             condición

                                            CALL LFCRG(n,A,lda,factor,ldfac,ipvt,Rcond)
                                            PRINT *, “número de condición = “, 1.0E0/Rcond
                                            PRINT *
                                            !Inicializa al vector Rj a cero
                                            DO i = 1,n
                                               Rj(i) = 0.
                                            END DO
                                            !Llena las columnas de la matriz identidad a través de
                                            LFIRG   para generar la
                                            !inversa y almacena resultados en Ainv. Despliega Ainv

                                            DO j = 1, n
                                               Rj(j) = 1.0
                                               CALL LFIRG(n,A,lda,factor,ldfac,ipvt,Rj,ipath,ainv 1,j),Res)
                                               Rj(j) = 0.0
                                            END DO
                                            PRINT *, “Matriz inversa:”
                                            DO i = 1,n
                                               PRINT *, (Ainv(i,j),j=1,n)
                                            END DO
                                            PRINT *

                                            !Usa LFIRG para obtener la solución para B. Despliega resultados

                                            PRINT *, “Solución:”
                                            DO I = 1,n
                                               PRINT *, x(i)
                                            END DO

                                            END PROGRAM




                                                                                                         6/12/06   13:54:15
          Chapra-11.indd   323                                                                           6/12/06   13:54:15
          Chapra-11.indd   323
   342   343   344   345   346   347   348   349   350   351   352