Anda di halaman 1dari 60

ANALISIS NUMERICO

INSTITUTO POLITECNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERIA Y ARQUITECTURA

SECCION DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN

ANALISIS NUMERICO

Alumno :

Jaime Alejandro Velazquez Cerezo

Profesor:

M. en I. Miguel Moreno Aguilar

VELAZQUEZ CEREZO JAIME ALEJANDRO 1


ANALISIS NUMERICO

ÍNDICE
1. Sistemas de Ecuaciones Lineales
2.1. Introducción
2.2 Eliminación de Gauss
2.3. Descomposición LU

2. Semejanza, Ortogonalidad y Factorización QR


3.1. Transformaciones lineales
3.2. Matrices Ortogonales
3.3. Matrices de Transición y Semejanza
3.4. Matrices Simétricas y Diagonalización Ortogonal
3.5. Reducción ortogonal (Transformaciones Geométricas)
3.5.1 Rotación de Givens
3.5.1 Reflexión de Householder
3.6. Forma Semejante de Hessemberg (vía Householder)
3.6.1. Hessemberg Superior
3.6.2 Hessemberg Tridiagonal
3.7. Factorización QR

3. Valores Característicos
4.1. Introducción
4.2. Forma Estándar del Problema de Valores Característicos
4.2.1 Método de Jacobi
4.2.2 Método QR (vía Householder)
4.3 Forma Generalizada del Problema de Valores Característicos
4.3.1 Método de Jacobi Generalizado

VELAZQUEZ CEREZO JAIME ALEJANDRO 2


ANALISIS NUMERICO

4. Integración Numérica
6.1. La Cuadratura de Gauss

5. Implementación en Fortran (Programas)


7.1. Eliminación de Gauss
7.2. Descomposición LU
7.3. Reflexión de Householder
7.4. Hessemberg (vía Householder)
7.5. Método de Jacobi
7.6. Método QR
7.7. Método de Jacobi Generalizado
7.8. Ecuaciones Hiperbólicas (Onda)

Bibliografía

VELAZQUEZ CEREZO JAIME ALEJANDRO 3


ANALISIS NUMERICO

1. SISTEMAS DE ECUACIONES LINEALES ALGEBRAICAS

1.1. Introducción
Uno de los problemas mas comunes a solucionar en la programación de métodos
para el análisis numérico es el de resolver el sistema de ecuaciones lineales,
sistemas que representan cualquier fenómeno físico, y cuya aplicación en las
ciencias e ingeniería es muy amplia. Partimos de un conjunto de ecuaciones
lineales que se puede ordenar de la siguiente forma;

Donde “N” define el numero de variables desconocidas mientras que M esta


relacionado con el numero de ecuaciones. Si N=M entonces existen tantas
ecuaciones como variables desconocidas, y solo existirá una y solo una forma de
que el sistema se resuelva , es decir que existirá un único conjunto de valores
para Xn de tal forma que se cumplan todas las ecuaciones, lo anterior describe un
sistema no singular. El sistema de ecuaciones lineales anterior puede expresarse
de la forma:
A*X=B

VELAZQUEZ CEREZO JAIME ALEJANDRO 4


ANALISIS NUMERICO

Donde A representa la matriz de coeficientes y B el vector columna que contiene a


todos los términos independientes, dichos valores se representan con números
reales o complejos y cuyo valor es conocido. Por convención el primer índice del
elemento aij representa el vector fila (identifica cual ecuación) y el segundo
representaría el vector columna (identifica la variable) donde se localiza dicho
coeficiente.

1.2. Eliminación de Gauss


El método directo más común para la solución de sistemas de ecuaciones lineales
es la eliminación de Gauss. La idea básica de este método es transformar nuestro
sistema de ecuaciones a un nuevo sistema de ecuaciones que sea equivalente al
original. Comenzando con el sistema a resolver, Ax=b o;

Donde aj* representa el j-esimo renglón de la matriz [A], osea la j-esima ecuación
lineal del sistema. Un nuevo sistema equivalente de ecuaciones puede ser
formado mediante la secuencia de operaciones elementales aplicadas al sistema
inicial. Estas operaciones elementales sobre las ecuaciones se numeran a
continuación:
1. Un Intercambio de dos filas o ecuaciones

2. Multiplicación de un renglón o ecuación por un escalar C

3. La sumar a una ecuación el múltiplo escalar de otra ecuación perteneciente


al sistema

VELAZQUEZ CEREZO JAIME ALEJANDRO 5


ANALISIS NUMERICO

El procedimiento básico para la eliminación de Gauss es el siguiente; primero para


todas las filas (ecuaciones) para j=2,…, N multiplicaremos -aj1/a11 por la primer fila
(ecuación) y posteriormente agregamos ese múltiplo escalar de la primer fila a la j-
esima fila para hacer que aj1 =0, de igual forma debemos agregar el mismo
múltiplo del termino independiente de la ecuación uno (-aj1/a11 )* b1 a el
termino independiente de la j-esima ecuación, una vez que volvamos 0 todos los
elementos que se encuentran debajo del elemento pivote a 11 en la primer columna,
se procede para j=3,…, N multiplicar -aj2/a22 por la segunda fila y agregar este
múltiplo a la j-esima fila, cuando hayamos terminado todos los elementos debajo
del pivote a22 serán cero.

Aplicando el mismo proceso para las columnas i=1,…N-1 obtendremos un


sistema de ecuaciones cuya matriz de coeficientes [A] ha sido reducida a una
matriz triangular superior.

Obviamente, si alguno de los pivotes de la diagonal aii es cero, no podremos


usarlo para eliminar los términos que se encuentran debajo de este, entonces
debemos intercambiar la fila i con otra fila l que contenga un elemento ali diferente
de 0 en la i-esima columna. Nuevamente, si hacemos el cambio en la matriz de
coeficientes, también debemos intercambiar los términos independientes b en el
vector columna que los contiene, es decir, intercambie el termino bi por el termino
bl. Un criterio para elegir el elemento pivote a intercambiar sería el de elegir el
coeficiente ali cuyo valor absoluto sea el mayor de la columna i. Después del
intercambio podemos seguir con el proceso de eliminación de Gauss.
Ahora que el sistema cuenta una matriz de coeficientes triangular podemos aplicar
un algoritmo simple para dar solución al sistema. Dicho algoritmo denominado
“BackSubstitution” consiste en resolver el sistema de abajo hacia arriba , es decir ,
resolviendo directamente la ultima ecuación cuya única variable se encuentra
prácticamente despejada, posteriormente, vamos a la penúltima ecuación, cuyas
variables participantes son 2, sin embargo ya conocemos una de las dos

VELAZQUEZ CEREZO JAIME ALEJANDRO 6


ANALISIS NUMERICO

incógnitas, resultando una ecuación para resolver directamente la penúltima


incógnita.
Dicho procedimiento se puede expresar como;

La combinación de los procesos de Eliminación de Gauss y “BackSubstitution”


conducen a la solución del sistema de ecuaciones. Una de las ventajas del método
de la eliminación de Gauss sobre otros métodos como la eliminación de Gauss-
Jordan es simple ya que la eliminación de Gauss es mas rápida debido a que el
numero de operaciones realizadas para determinar el sistema equivalente es
inferior al numero de operaciones realizadas en el método de Gauss-Jordan.

1.3. Descomposición LU
Las dos operaciones utilizadas para reducir la matriz [A] a una matriz triangular
superior pueden concebirse como el resultado de una premultiplicacion de
matrices especificas. Extrayendo un múltiplo lji de la fila i y la columna j, donde j >
i, es el resultado de premultiplicar la matriz [A] por ;

De igual forma, cualquier intercambio de ecuaciones puede concebirse como la


premultiplicacion de la matriz [A] con una matriz especifica P, donde P es una
matriz identidad con sus filas intercambiadas de forma similar al intercambio en [A]
que se tenga como objetivo.

VELAZQUEZ CEREZO JAIME ALEJANDRO 7


ANALISIS NUMERICO

Ahora se podemos expresar la eliminación de Gauss en términos de la


premultiplicación de [A] por [P] y [M]. El análisis es mas fácil si pretendemos,
nuevamente, resolver [A]{X}={b} usando eliminación de Gauss con pivotes de
renglón. Después del intercambio de ecuaciones, nuestro sistema de ecuaciones
lineales tendrá la forma

Donde P es una matriz especifica de permutación.


Ahora para volver cero los coeficientes que se encuentran debajo de la diagonal
principal de [A], premultiplicaremos ambos lados de la ecuación PAx=Pb por M ij
(contiene los coeficientes lji apropiados), tendremos una matriz M para volver cero
los coeficientes debajo de cada termino aii , en el orden correcto (columna por
columna ) tendríamos

Como resultado obtendríamos

Donde U es una matriz triangular superior


Si nombramos a

Entonces

Este sistema triangular superior Ux=y será resuelto mediante el procedimiento


“BackSubstitution”. Regresando a:

Obtendríamos

VELAZQUEZ CEREZO JAIME ALEJANDRO 8


ANALISIS NUMERICO

Donde la inversa de Mij puede mirarse fácilmente por ser una matriz triangular

Debido a que el producto de un matrices triangular inferior da como resultado una


matriz triangular inferior, podemos escribir

Donde L=Matriz triangular inferior y U es una matriz triangular superior.LA forma


tradicional de usar la descomposición LU para resolver sistemas de ecuaciones
Ax=bes premultiplicando ampbos lados de la ecuación por la matriz de
permutación para intercambiar las filas y rescribir P*A*x=P*b como L*U*x=P*b,
finalmente este sistema es resuelto de la siguiente forma

Donde Y se resuelve mediante el porceso denominado “Forwardsubstitution”


contario a “BackSubstitution”, es decir de arriba hacia abajo empleando;

VELAZQUEZ CEREZO JAIME ALEJANDRO 9


ANALISIS NUMERICO

Mientras que el sistema Ux=y se resuelve mediante el porceso denominado


“BackSubstitution”

Descomposición de Cholesky

Cualquier matriz cuadrada A con pivotes no nulos puede ser escrita como el
producto de una matriz triangular inferior L y una matriz triangular superior U; esto
recibe el nombre de factorización LU como se describió con anterioridad. Sin
embargo, si A es simétrica y definida positiva, se pueden escoger los factores
tales que U es la transpuesta de L, y esto se llama la descomposición o
factorización de Cholesky. Tanto la descomposición LU como la descomposición
de Cholesky son usadas para resolver sistemas de ecuaciones lineales. Cuando
es aplicable, la descomposición de Cholesky es dos veces más eficiente que la
descomposición LU.

2. Semejanza, Ortogonalidad y Factorización QR

2.1. Transformaciones Lineales


Entenderemos como transformación como funciones que transforman (o mapean)
un espacio vectorial V en un espacio vectorial W. este tipo de función se denota
por

T: V→W
Para estas funciones se utiliza la notación estándar de ellas. Por ejemplo, V se
llama dominio de T. Si v esta en w de modo que

F(v)=w
Entonces w se llama imagen de v bajo T. El conjunto de todas las imágenes de
los vectores en V se llama contradominio de T y el conjunto de todos los v en V
tales que T(v)=w se llama preimagen de w.

VELAZQUEZ CEREZO JAIME ALEJANDRO 10


ANALISIS NUMERICO

La atención se centra en las funciones (de un espacio vectorial a otro) que


conservan las operaciones de suma vectorial y multiplicación escalar. Estas
funciones se llaman transformaciones lineales, lo que nos lleva a formalizar;
Sea V y W espacios vectoriales. La función T:V→W se llama transformación lineal
de V en W si las dos propiedades siguientes son verdaderas ára todo u y v en V y
para cualquier escalar c.

1. T(u+v)=T(u) + T(v)
2. T(cu)=CT(u)

Se dice que una transformación lineal conserva operaciones por que se obtiene el
miemo resultado si las operaciones de suma y multimplicacion escalar se efectúen
antes y después de la transformación lineal.

Una transformación lineal puede estar definida por una matriz, de la siguiente
forma

Sea una matriz A de m x n la función T definida por T(v)=A(v) , es una


transformación lineal de Rn en Rm . Para conformar la multiplicación matricial con
una matriz m x n, los vectores en Rn se representan por matrices de n x 1 y los
vectores en Rm se presentan por matrices m x 1.

2.2. Matrices Ortogonales


Una Matriz de define como ortogonal si cuenta con las siguientes propiedades:
Una matriz cuadrada P se denomina ortogonal si es invertible y P-1 = P t
El producto escalar (producto punto) entre los vectores columna contenidos en P
es igual a 0, lo que nos conduce a decir que la matriz P de nxn es ortogonal y sus
vectores columna forman un conjunto ortonormal.
Si la norma de los vectores columna contenidos en P, es igual a 1, entonces se
puede decir que la matriz es ortonormal.

VELAZQUEZ CEREZO JAIME ALEJANDRO 11


ANALISIS NUMERICO

2.3. Matrices de Transición y Semejanza


Partiendo del concepto de una matriz que funciona como una transformación lineal
T:V→V
La matriz de transformación lineal depende de la base de V. En otras palabras la
matriz de T con respecto a una base B es diferente de una matriz T con respecto a
otra base B´. uno de los Problemas clásicos del algebra lineal es el contestar la
siguiente pregunta; ¿es posible encontrar una base B tal que la matriz T con
respecto a B sea diagonal? A continuación se presenta el fundamento paresolver
el problema, describiendo como están relacionadas las matrices de una
transformación lineal con respecto a dos bases diferentes.
1. Matriz de T con respecto a B:
A
2. Matriz de T con respecto a B´:

3. Matriz de transición de B´ a B:
P
4. Matrtiz de trancision de B a B´:
P-1

Observe que en la figura que hay dos formas de llegar de la matriz de


coordenadas [v]B´ a la matriz de coordenadas [T(v)]B´. una forma es directa para
obtener
A´[v]B´=[T(v)]B´
La otra forma es indirecta, por medio de P, A y P-1 para obtener
P-1 A P [v]B´ = [T(v)]B´
Pero por la definición de matriz de una transformación lineal con respecto a una
base, lo anterior implica que
A´= P-1 A P
Se puede formalizar lo siguiente:
Para matrices cuadradas A y A´ de orden n, se dice que A´es semejante a A si
existe una matriz invertible P tal que A´= P-1 A P

VELAZQUEZ CEREZO JAIME ALEJANDRO 12


ANALISIS NUMERICO

Una de las propiedades principales de las matrices semejantes es que realizan la


misma transformación, y por lo tanto cuentan con los mismos valores
característicos , que mas adelante en el presente trabajo se describirán

2.4. Matrices Simétricas y Diagonalización Ortogonal

En términos de Matrices, el problema se plantea de la siguiente manera; para una


matriz cuadrada A, ¿Existe una matriz P tal que P-1 A P sea diagonal? las matrices
semejantes a las matrices diagonales se les denomina matrices diagonalizables.
Formalizando lo anterior:
Una matriz A, es diagonalizable si A es semejante de una matriz diagonal. Es
decir, A es diagonalizable si existe una matriz invertible P tal que; P -1 A P sea una
matriz diagonal
Una matriz A, es diagonalizable si y solo si tienen n vectores característicos
linealmente independientes
Para una casi todas las matrices es posible avanzar bastante en el proceso de
diagonalización antes de poder decidir finalmente si la diagonalización es factible.
Una excepción es una matris triangular con elementos distintos en la diagonal
principal. Esta matriz puede identificarse como diagonalizable por simple
inspección. A continuación se describirá otro tipo de matriz que se garantiza es
diagonalizable: una matriz simétrica

Una matriz cuadrada es simétrica si A=At


Si A es una matriz simétrica nxn, entonces las siguientes propiedades son
verdaderas
1. A es diagonalizable
2. Todos los valores característicos de A son reales
3. Si λ es un valor característico de A con multiplicidad k, entonces λ tiene k
vectores característicos linealmente independientes, es decir, el espacio
característico de λ es de dimensión k.

De lo anterior se puede formalizar que


Una matriz es diagonalizable ortogonalmente si existe una matriz ortogonal P tal
que P-1 A P =D es diagonal.

VELAZQUEZ CEREZO JAIME ALEJANDRO 13


ANALISIS NUMERICO

Sea A una matriz de nxn. Entonces A es diagonalizable ortogonalmente y tiene


valores caracteristicos reales, si y solo si A es simétrica.

2.5. Reducción Ortogonal Mediante Transformaciones Geométricas


Una de las estrategias básicas en la solución de problemas relacionados con el
análisis de matrices es la de encontrar una transformación que preserve las
propiedades especificas del sistema en las cuales estamos interesados, y que
dicha transformación muestre de forma obvia las propiedades del sistema que
buscamos, como es el caso del problema de valores y vectores característicos.
Definamos una matriz Q como una matriz ortogonal, siempre y cuando se cumpla
que QT*Q=Q*QT=I. Las matrices ortogonales juegan un papel muy importante en
el análisis de matrices de transformación , en especial a la hora de solucionar el
problema de valores y vectores característicos. Se describirá brevemente las
transformaciones de Givens (Rotaciones) y Householder (Reflexiones)

2.5.1. Rotaciones de Givens


La forma mas simple y eficiente de una matriz ortogonal es las matriz de
transformación de Givens, matrices Qij cuyos índices siempre respetaran que j
sea mayor i, la rotación de Givens se presenta de la siguiente forma.

Debemos tener en cuenta que s²+c²=1, donde c y s representan el coseno y y


seno de un ángulo Ɵ, cabe mensionar que no se tendrá ningún uso del angulo Ɵ.
Es fácil comprobar que Q*QT=I, lo que la matriz de rotación de Givens es una
matriz ortogonal. Veamos como afecta la matris de rotación de Givens a una
matriz A cuando esta es premultiplicada por la matriz transpuesta de Q (B= QT A)

VELAZQUEZ CEREZO JAIME ALEJANDRO 14


ANALISIS NUMERICO

Como podemos apreciar solamente las filas i y j cambian, obteniendo

Para toda k =1,…,N


La premultiplicación de una matriz A por QijT tiene el efecto de reemplazar las filas
i por una combinación lineal de las las filas i y j de A antes de la transformación y
reemplaza la fila j por otra combinación lineal de las filas i y j originales (antes de
la transformación )
Si nosotros determonasmos s y c en función de los siguientes coeficientes de A
(para cualquier l)

podemos hacer que el coeficiente de la matriz transformada ( [B] ) bjl sea igual a
cero, lo que es conveniente cuando se busca hacer cero los coeficientes que se
encuentran fuera de la diagonal principal, es decir, cuando se busca diagonalizar
una matriz.

Algunas veces en aplicaciones necesitamos aplicar una sucesión de rotaciones de


Givens. El total de ciclos de transformación puede verse reducido usando una
sucesión de la roción rápida de Givens, la cual se escribe:

VELAZQUEZ CEREZO JAIME ALEJANDRO 15


ANALISIS NUMERICO

2.5.2. Reflexiones de Householder


Una matriz rectangular puede ser reducida a la forma “row echelon” (matriz que
resulta de aplicar eliminación de Gauss) usando la matriz ortogonal de
Householder, la cual tiene la forma

donde v es un M-vector nombrado “vector de Householder.

De H=I-2*(v vT / v T v) podemos notar notar que H es simétrico, ósea que HT =( I-


2*(v vT / v T v) )T = I-2*(v vT / v T v) =H, ahora para comprobar que H es una
matriz ortogonal conviene anotar H de la siguiente forma H=I-2*(ω ωT )

donde ω=v/|v| es un M-vector unitario


El M-vector ω será determinado como se ha explicado para que al premultiplicar A
por Hi= I-2*ω ωT haga cero todos los coeficientes debajo del pivote a il , cuando
este es premultiplicado por una matriz de A de m x n, la matriz de transformación
ortogonal de Householder H tiene la siguiente estructura

VELAZQUEZ CEREZO JAIME ALEJANDRO 16


ANALISIS NUMERICO

Claramente podemos apreciar que al premultiplicar una matriz A por Hi ,


transformaremos únicamente las filas desde i hasta M, ahora necesitamos conocer
el vector w el cual cuando premultipliquemos la matriz A por la matriz de
transformación Hi , vuelva cero todos los componentes que de encuentran debajo
del coeficiente ail.

Ahora podemos usar H para eliminar todos los coeficientes que esta debajo el
pivote ail.

Las matrices de transformación de Householder tienen varias propiedades que


hacen que su uso en algoritmos matemáticos sea muy ventajoso. En concreto, el
ser iguales a su propia inversa ahorra numerosos cálculos por no tener que
invertirlas. El hecho de ser ortogonales las hace idóneas para el cálculo de
matrices semejantes. Por último, el tener un único autovalor (de multiplicidad N)
hace que tengan buena estabilidad numérica, pues su número de condición es la
unidad.
Estas propiedades hacen que la transformación de Householder sea una de las
herramientas más sencillas y utilizadas en el cálculo de matrices semejantes
con forma de Hessenberg y en la descomposición QR de una matriz, ambos de
gran uso e importancia en el cálculo de autovalores.

VELAZQUEZ CEREZO JAIME ALEJANDRO 17


ANALISIS NUMERICO

2.6. Forma de Hessemberg


Los algoritmos para el análisis de
matrices simétricas, son altamente
eficientes en la practica debido a la
naturaleza y sencillez de estas. En
contraste , es imposible diseñar un
algoritmo igual de eficiente para
matrices no simétricas, existiendo dos
principales razones, la primera de ellas
es en relación con los valores y
vectores propios de una matriz no
simétrica pueden ser muy sencibles a
pequeños cambios en los coeficientes que conforman la matriz. En segundo lugar,
la matriz en sí misma puede ser defectuosa, por lo que hay
no hay un conjunto completo de vectores propios.
En álgebra lineal, una matriz de Hessenberg es una matriz "casi" triangular. Para
ser más exactos, una matriz superior de Hessenberg tiene todos ceros por debajo
de la primera subdiagonal, y una matriz inferior de Hessenberg tiene todos ceros
por encima de la primera superdiagonal. Muchos algoritmos de álgebra lineal
requieren significativamente menos esfuerzo computacional cuando son aplicados
a matrices triangulares. El producto de una matriz de Hessenberg con una matriz
triangular es otra matriz de Hessenberg. Más preciso, si A es una matriz superior
de Hessenberg y T es una matriz triangular superior, entonces AT y TA son
matrices superiores de Hessenberg.
Una matriz en forma general se puede convertir en una matriz de Hessemberg
aplicando una secuencia de transformaciones ortogonales, transformaciones que
corresponden a las reflexiones de Householder. Aplicar la transformación
ortogonal de Householder es una técnica aceptable y conveniente para reducir
una matriz general a su forma de Hessemberg.

VELAZQUEZ CEREZO JAIME ALEJANDRO 18


ANALISIS NUMERICO

2.7. Factorización QR
A menudo es útil representar una matriz A en una forma factorizada

[A] = [B][C]

donde B y C tienen algunas propiedades deseables específicas, como ser


triangulares.
La mayoría de los métodos directos para resolver sistemas lineales descritos
anteriormente
se basan en factorizaciones (o, de manera equivalente, "descomposiciones") de la
matriz
de coeficientes. Las factorizaciones de matriz también se realizan por motivos
distintos a
para resolver un sistema lineal, como en la solución del problema de valores
característicos. La factorización de una matriz es realizada por lo general mediante
una secuencia de transformaciones ortogonales y sus inversas.
Una factorización muy útil es
[A] = [Q][R]
donde Q es ortogonal y R es triangular superior o trapezoidal. Dicha factorización
recibe el nombre de factorización QR. La Factorización QR puede tomar las
siguientes formas:
Si A es cuadrado y de rango completo, R tiene la forma

Si A no es cuadrado, R no es cuadrado, con una sub-matriz triangular superior.


Si A tiene más columnas que filas, R es trapezoidal y puede escribirse como [R1 |
R2], donde R1 es triangular superior.
Si A es n × m con más filas que columnas, que es el caso común en aplicación de
factorización QR.

VELAZQUEZ CEREZO JAIME ALEJANDRO 19


ANALISIS NUMERICO

donde R1 es m × m triangular superior.


Cuando A tiene más filas que columnas, también podemos dividir Q como [Q1 |
Q2], y podemos usar una versión de Q que contiene solo filas relevantes o
columnas,

A = Q1R1
donde Q1 es una matriz n × m cuyas columnas son ortonormales. Esta forma es
llamado QR "skinny" Se usa más comúnmente que uno con Q cuadrado.

Hay tres métodos eficientes para obtener la factorización QR: transformaciones o


reflexiones de Householder; transformaciones o rotaciones de Givens; y el
Procedimiento de Gram-Schmidt (modificado). Diferentes situaciones pueden
hacer que alguno de estos procedimientos sea mejor que los otros dos. Las
transformaciones de Householder descrito con anterioridad son probablemente los
más utilizados.
Para usar reflexiones para calcular una factorización QR, formamos en secuencia
las reflexiones para la i-ésima columna que producirá 0 debajo del elemento (i, i).
La esencia del algoritmo puede transportarse a un ejemplo sencillo para su mejor
comprensión. Suponga una matriz m=6, n=5, y que las matrices H1 y H2 ya han
sido programadas para su aplicación, de tal forma que:

Posteriormente H3 se determinará a partir del vector, para generar

VELAZQUEZ CEREZO JAIME ALEJANDRO 20


ANALISIS NUMERICO

Tras repetir el proceso t veces nosotros, donde t es el valor menor entre m-1 y n
(dependiendo la forma de la matriz), obtenemos una matriz [R] triangular superior

𝑯𝒏 ∗ 𝑯𝒏−𝟏 … … ∗ 𝑯𝟏 ∗ 𝑨 = [𝑹]

𝑯𝒏 ∗ 𝑯𝒏−𝟏 … … ∗ 𝑯𝟏 = [𝑸]

3. Valores Característicos

3.1. Introducción
El problema de valores característicos se puede plantear de la siguiente forma. Si
A es una matriz nxn, ¿existen vectores X diferentes de cero en Rn tales que AX
sea un múltiplo escalar de X? El escalar denotado por λ (lambda), se llama valor
característico de la matriz A, y el vector característico X diferente de cero se llama
vector característico de A correspondiente a λ.
Sea Y=AX, donde A=[aij ] , (i,j=1,2…,n),es una transformación lineal definida sobre
Rn. En general, la transformación convierte un vector X=[X1 , X2, …….Xn ] en otro
Y=[Y1 , Y2, …….Yn ], relacionado con el vector X por dicha transformación. Se
tratará en lo siguiente, la posibilidad de que ciertos vectores X se transformen en
λX, siendo λ un escalar perteneciente a Rn.
Todo vector X que se convierte mediante dicha transformación en el vector λ{X},
es decir todo vector diferente de cero tal que:
[A] {X} = λ {X}
Se denominará como un vector invariante respecto a la transformación (vector
característico).

VELAZQUEZ CEREZO JAIME ALEJANDRO 21


ANALISIS NUMERICO

Para determinar los valores y vectores característicos de una matriz A, nxn, al


escribir la ecuación AX=λ en la forma λIX=AX se obtiene
(λ I – A ) X = 0
El sistema homogéneo de ecuaciones tiene soluciones diferentes de cero si y solo
si la matriz de coeficientes no es invertible; es decir, si y solo si el determinante de
(λI-A) es cero. Por lo tanto, se puede establecer que:
• Un valor característico de A es un escalar tal que det (λ I – A ) = 0
• Los vectores característicos de A correspondientes a λ son las soluciones
diferentes de cero de (λ I – A ) X = 0

La ecuación det (λ I – A ) = 0 se llama ecuación característica de A. Además,


cuando se desarrolla en forma de polinomio resulta:
| λ I – A |= λn + Cn-1 λn-1 + . . . + C1 λ1 + C0
La expresión anterior se conoce como polinomio característico de A. esta
definición establece que los valores característicos de una matriz A nxn
corresponden a las raíces del polinomio característico de A. Debido a que el grado
del polinomio característico de A es igual a n, entonces A puede tener como
máximo n valores característicos distintos.
El problema de encontrar los valores característicos de una matriz nxn puede ser
difícil el tratamiento matemático implica la factorización de un polinomio de grado
n. Sin embargo, una vez que se ha determinado un valor característico, hallar los
vectores característicos correspondientes se resuelve con la aplicación directa del
procedimiento de Gauss-Jordan.
La determinación de valores característicos y de vectores característicos para
matrices de orden n>=4 puede resultar tediosa, así como ser ineficiente cuando se
usa en una computadora debido a que determinar las raíces de un polinomio en la
misma resulta muy tardado y de igual forma esta sujeta a error de redondeo. En
consecuencia, se aplican métodos numéricos para aproximar los valores
característicos de matrices grandes.

VELAZQUEZ CEREZO JAIME ALEJANDRO 22


ANALISIS NUMERICO

3.2. Método de Jacobi


El método de Jacobi para determinar los valores propios de una matriz simétrica
simple
[A] usa una secuencia de transformaciones ortogonales de semejanza que
eventualmente
resultada en la transformación

A = QCQ-1
ó
C = Q-1AQ
donde C es diagonal. Recordemos que las matrices semejantes tienen los mismos
valores propios.
Las matrices de transición para llegar a la matriz diagonal semejante son las
matrices de rotación de Givens o de rotación de Jacobi que se discutieron con
anterioridad. La forma general de estas matrices ortogonales será;

El método de Jacobi construye una secuencia de transformaciones ortogonales


semejantes An+1=Qn-1AnQn (A0=A) , como podemos verificar Qij es ortogonal; es
decir Q-1=QT, el método de iteración de Jacobi puede escribirse como
An+1=QnTAnQn , asi esta transformación conserva la simetría de la matriz [A]

VELAZQUEZ CEREZO JAIME ALEJANDRO 23


ANALISIS NUMERICO

Premultiplicando una matriz [A] por QT tiene el efecto de reemplazar las filas i y j
por una combinación lineal de el renglón original i y j y como se describió con
anterioridad c y s pueden ser escogidos de tal manera que vuelvan cero el termino
en la posición (i,j) de [A]. a pesar de esto [A] conservara sus valores propios,
estamos forzados a postmultiplicar por Qij, con lo cual conseguiremos se cambien
las columnas i y j, y la postmultiplicacion provocara normalmente que el elemento
(aji) se vuelva cero. La transformación de Jacobi puede ser representeda por

A pesar que todos los elementos in lalas filas i y j, asi como las columnas i , j
serian modificadas por la transformación, nosotros debemos estar interesados
principalmente en los nuevos valores Bji=Bij

VELAZQUEZ CEREZO JAIME ALEJANDRO 24


ANALISIS NUMERICO

Si nuestra finalidad es hacer que bji=Bij=0 necesitamos determinar s y c de


manera que

Sustituyendo c=(1-s²) 1/2

ó usando ecuación cuadrática

Así, podemos obtener los valores específicos para s y c y los cuales también
satisfacen s²+c²=1

Con este procedimiento podemos transformar la matriz en una matriz semejante


diagonal, mientras conserva sus valores característicos (y simetría ) de A.
Cuando la matriz simétrica [A] es transformado en B=QijTAQij con Q determinada
para que bij =0, la suma de los cuadrados de la diagonal principal incrementa 2
veces el valor de aij ² mientras que la suma de los cuadrados de los elementos
fuera de la diagonal principal decrece la misma cantidad.
Usando las ecuaciones para b y la ecuación s²+c²=1

VELAZQUEZ CEREZO JAIME ALEJANDRO 25


ANALISIS NUMERICO

Para bij =0

Ahora, solamente las filas i y j, asi como las columnas i y j de [A] cambiaran
durante la transformación de Jacobi; aii y ajj serán los únicos coeficientes de la
diagonal que cambiaran. De esta forma

Es importante marcar que a través de la transformación ortogonal QijTAQij la suma


de los cuadrados de todos los coeficientes que conforman la matriz [ A ] no
cambian, lo que soporta lo antes mencionado con respecto a la variación de la
suma de los cuadrados de la diagonal principal con respecto a la suma de los
elementos fuera de la diagonal principal.
Ahora checaremos todos los coeficientes que están fuera de la diagonal principal
con un orden sistemático, haciendo cero solamente los coeficientes cuyo valor al
cuadrado exceda;

Donde ek esta definido por;

después de k iteraciones.
Formalizando lo anterior , si a cada paso o transformación de Jacobi el elemento a
convertir en cero satisface

Entonces el criterio de convergencia

VELAZQUEZ CEREZO JAIME ALEJANDRO 26


ANALISIS NUMERICO

Se satisface en aproximadamente

Iteraciones.
Después de completadas las iteraciones tendremos una matriz ortogonal Q, que
es ortogonal y la cual es igual al producto de todas las matrices de transformación
aplicadas a [A] , de igual forma obtenemos una matriz [D] que es diagonal y
semejante a [A].

3.3. Método de QR
El algoritmo más común para extraer valores propios ha demostrado ser el método
QR. Mientras que el método de potencia y el método de Jacobi requieren matrices
diagonalizables, esto restringe su uso práctico a matrices simétricas, el método
QR puede ser utilizado para matrices no simétricas. Es más simple para matrices
simétricas, porque los valores propios son reales.
Además, para matrices simétricas el almacenamiento en la computadora es
menor, los cálculos son menos y algunas transformaciones son particularmente
simples. El método QR requiere que la matriz primero se transforme en la forma
de Hessenberg superior. Una matriz se puede reducir a la forma de Hessenberg
en un número finito de transformaciones semejantes ,usando las transformaciones
ortogonales que se han descrito con anterioridad, ya sea; reflexiones de
Householder o rotaciones de Givens. La forma de Hessenberg para una matriz
simétrica es tridiagonal. La forma Hessenbergpermite un gran ahorro en los
cálculos posteriores, incluso para matrices no simétricas.
Uno de los métodos mas populares y funcional para encontrar los valores
caracteristicos de una matris real general es el método QR [Francis 1967]. Para
hacer una iteración del método QR, primero se reduce [A]HESS a una matriz
triangular superior usando transformaciones ortogonales, lo que significa
premultiplicar la matriz [A]HESS por una matriz ortogonal QT(=Q-1) , de tal forma
que Q-1A=R es una matriz triangular superior, posteriormente postmultiplicamos
por la matriz Q y la matriz vuelve a la forma de Hessemberg. La postmultiplicacion
destruye la estructura triangular superior creada por la premultiplicacion. En el
caso de matrices simétricas, donde notros iniciamos con una matriz tridiagonal la
premultiplicacion elimina la subdiagonal pero agrega una diagonal superior , la
postmultiplicacion regresa a la matriz QT [A]HESS a la forma tridiagonal.

VELAZQUEZ CEREZO JAIME ALEJANDRO 27


ANALISIS NUMERICO

Ahora, tenemos una matriz quasitriangular, de manera que como se muestra en la


figura siguiente, nostros podemos calcular los valores característicos directamente
del determinante de la ecuación

VELAZQUEZ CEREZO JAIME ALEJANDRO 28


ANALISIS NUMERICO

3.4. Forma generalizada del problema de valores característicos


Sea Y=AX, donde A=[aij ] , (i,j=1,2…,n),es una transformación lineal definida sobre
Rn. En general, la transformación convierte un vector X=[X1 , X2, …….Xn ] en otro
Y=[Y1 , Y2, …….Yn ], relacionado con el vector X por dicha transformación. Se
tratará en lo siguiente, la posibilidad de que ciertos vectores X se transformen en
λX, siendo λ un escalar perteneciente a Rn.
Todo vector X que se convierte mediante dicha transformación en el vector λ [B]
{X}, es decir todo vector diferente de cero tal que:
[A] {X} = λ [B] {X}

3.5. Método de Jacobi Generalizado


Para el problema de valores característicos como se ha descrito , se busca
diagonalizar ambas matrices ( [A] y [B] ), dicho planteamiento puede representar el
problema de vibraciones donde [A]=[K] y [B]=[M]. Ahora , ambas matrices serán
tranformadas ortogonalmente mediante rotaciones de Givens, un proceso similar
al que se estudio en el método de Jacobi Estandar. La matriz de transformación
tendrá la forma ;

La nuevas matrices [K] y [M] en las iteraciones siguientes pueden ser


programadas como ;

VELAZQUEZ CEREZO JAIME ALEJANDRO 29


ANALISIS NUMERICO

Los términos que se encuentran fuera de la diagonal principal las dos matrices que
conforman la ecuación anterior son igualados mediante

De forma similar para la matriz [M]

VELAZQUEZ CEREZO JAIME ALEJANDRO 30


ANALISIS NUMERICO

Las dos incógnitas Ɵ₁ y Ɵ₂ pueden ser encontradas resolviendo el sistema de


ecuaciones arriba formado, obteniendo

Observaciones
1. Las ecuaciones para Ɵ₁ y Ɵ₂ han sido desarrolladas para el caso donde [M]
es positiva, llena y en banda, y esto puede demostrar que G4 siempre es
diferente de 0
2. El método generalizado de Jacobi puede también ser adoptado para el caso
donde [M] es una matriz diagonal con o sin algún cero en la diagonal.
3. Asumiendo como l la ultima iteración , entonces la convergencia archivada
si ;

VELAZQUEZ CEREZO JAIME ALEJANDRO 31


ANALISIS NUMERICO

Para toda (i,j) con i<j

4. Integracion Numerica

4.1. CUADRATURA DE GAUSS


Una característica de las formulas de integración numérica o cuadratura, fue que
la estimación de la integral se basó en valores igualmente espaciados de la
función. En consecuencia, la localización de los puntos que se usaron en estas
ecuaciones eran predeterminados o fijos. Por ejemplo, como se describe en la
figura 22.5a, la regla del trapecio se basa en obtener el área bajo la línea recta
que une los valores de la función, en los extremos del intervalo de integración. La
formula que se utiliza para calcular esta área es
𝑓(𝑎) + 𝑓(𝑏)
𝐼 ≅ (𝑏 − 𝑎)
2

VELAZQUEZ CEREZO JAIME ALEJANDRO 32


ANALISIS NUMERICO

donde a y b son los límites de integración y b – a = el ancho del intervalo de


integración. Debido a que la regla del trapecio necesita los puntos extremos,
existen casos como el de la figura 22.5a, donde la fórmula puede dar un gran
error. Ahora, suponga que se elimina la restricción de los puntos fijos y se tuviera
la libertad de evaluar el área bajo una línea recta que uniera dos puntos
cualesquiera de la

FIGURA 22.5
curva. Al ubicar esos puntos en forma inteligente, definiríamos una línea recta que
equilibrara los errores negativo y positivo. Así que, como en la figura 22.5b,
llegaríamos a una mejor estimación de la integral. Cuadratura de Gauss es el
nombre de una clase de técnicas para realizar tal estrategia. Las fórmulas
particulares de cuadratura de Gauss descritas en esta sección se denominan
fórmulas de Gauss-Legendre. Antes de describir el procedimiento, mostraremos
que las fórmulas de integración numérica, como la regla del trapecio, pueden
obtenerse usando el método de coeficientes indeterminados. Este método se
empleará después para desarrollar las fórmulas de Gauss-Legendre.

VELAZQUEZ CEREZO JAIME ALEJANDRO 33


ANALISIS NUMERICO

Método de coeficientes indeterminados


El método de coeficientes indeterminados ofrece un tercer procedimiento que
también tiene utilidad para encontrar otras técnicas de integración, como la
cuadratura de Gauss. Para ilustrar el procedimiento
𝐼 ≅ 𝑐0 𝑓(𝑎) + 𝑐𝑓(𝑏)
donde las c = constantes. Ahora observe que la regla del trapecio deberá dar
resultados exactos cuando la función que se va a integrar es una constante o una
línea recta. Dos ecuaciones simples que representan esos casos son y = 1, y = x.
Ambas se ilustran en la figura 22.6. Así, las siguientes igualdades se deberán
satisfacer:
(𝑏−𝑎)/2
𝑐0 + 𝑐1 = ∫ 1 𝑑𝑥
−(𝑏−𝑎)/2

Y
(𝑏−𝑎)/2
𝑏−𝑎 𝑏−𝑎
−𝑐0 + 𝑐1 =∫ 𝑥 𝑑𝑥
2 2 −(𝑏−𝑎)/2

O, evaluando las integrales,


𝑐0 + 𝑐1 = 𝑏 − 𝑎
Dos integrales que deberán evaluarse exactamente por la regla del trapecio: a)
una constante y b) una línea recta.

FIGURA 22.6

VELAZQUEZ CEREZO JAIME ALEJANDRO 34


ANALISIS NUMERICO

y
𝑏−𝑎 𝑏−𝑎
−𝑐0 + 𝑐0 =0
2 2

Éstas son dos ecuaciones con dos incógnitas que se resuelven para encontrar
𝑏−𝑎
𝑐0 = 𝑐1 =
2
que, al sustituirse en la ecuación (22.11), da
𝑏−𝑎 𝑏−𝑎
𝐼= 𝑓(𝑎) + 𝑓(𝑏)
2 2
que es equivalente a la regla del trapecio.
Desarrollo de la fórmula de Gauss-Legendre de dos puntos
Así como en el caso anterior para la obtención de la regla del trapecio, el objetivo
de la cuadratura de Gauss es determinar los coeficientes de una ecuación de la
forma
𝐼 ≅ 𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 )
donde las c = los coeficientes desconocidos. Sin embargo, a diferencia de la regla
del trapecio que utiliza puntos extremos fijos a y b, los argumentos de la función x0
y x1 no están fijos en los extremos, sino que son incógnitas (figura 22.7). De esta
manera, ahora se tienen cuatro incógnitas que deben evaluarse y, en
consecuencia, se requieren cuatro condiciones para determinarlas con exactitud.
Así, como con la regla del trapecio, es posible obtener dos de esas condiciones al
suponer que la ecuación (22.12) ajusta con exactitud la integral de una constante y
de
Representación gráfica de las variables desconocidas x0 y x1 para la integración
por medio de la cuadratura de Gauss.

FIGURA 22.7

VELAZQUEZ CEREZO JAIME ALEJANDRO 35


ANALISIS NUMERICO

una función lineal. Después, para tener las otras dos condiciones, sólo se ampliará
este razonamiento al suponer que también ajusta la integral de una función
parabólica (y = x2) y de una cúbica (y = x3). Al hacerlo, se determinan las cuatro
incógnitas y además se obtiene una fórmula de integración lineal de dos puntos
que es exacta para cúbicas. Las cuatro ecuaciones que habrá que resolver son:
1
𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 ) = ∫−1 1 𝑑𝑥 = 2 EQ.1
1
𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 ) = ∫−1 𝑥 𝑑𝑥 = 0 EQ.2
1 2
𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 ) = ∫−1 𝑥 2 𝑑𝑥 = EQ.3
3
1
𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 ) = ∫−1 𝑥 3 𝑑𝑥 = 0EQ.4

Las ecuaciones anteriores pueden resolverse simultáneamente para encontrar


𝑐0 = 𝑐1 = 1
1
𝑥0 = − = −0.5772503 …
√3
1
𝑥1 = = 0.5772503 …
√3
que se sustituye en la ecuación (22.12) para obtener la fórmula de Gauss-
Legendre de dos puntos
−1 1
𝐼 ≅ 𝑓( )+𝑓( )
√3 √3
Así, llegamos al interesante resultado de que la simple suma de los valores de la
función en x =1 /√3 y –1/ √3 genera una estimación de la integral que tiene una
exactitud de tercer grado. Observe que los límites de integración en las
ecuaciones EQ.1 a EQ.2 son desde –1 a 1. Esto se hizo para simplificar la
matemática y para hacer la formulación tan general como sea posible. Es posible
utilizar un simple cambio de variable para transformar otros límites de integración
a esta forma. Esto se realiza suponiendo que una nueva variable xd está
relacionada con la variable original x en una forma lineal, como sigue
𝑥 = 𝑎0 + 𝑎1 𝑥𝑑
Si el límite inferior, x = a, corresponde a xd = –1, estos valores se sustituyen en la
ecuación anterior
𝑎 = 𝑎0 + 𝑎1 (−1)
De manera similar, el límite superior, x = b, corresponde a xd = 1, para tener

VELAZQUEZ CEREZO JAIME ALEJANDRO 36


ANALISIS NUMERICO

𝑏 = 𝑎0 + 𝑎1 (−1)
Las ecuaciones anteriores podrán resolverse simultáneamente para obtener
𝑏+𝑎
𝑎0 =
2
y
𝑏−𝑎
𝑎1 =
2
que se sustituye en la ecuación [𝑥 = 𝑎0 + 𝑎1 𝑥𝑑 ] con el siguiente resultado:
(𝑏 + 𝑎) + (𝑏 − 𝑎)𝑥𝑑
𝑥=
2
Esta ecuación se diferencia para dar
𝑏−𝑎
𝑑𝑥 = 𝑑𝑥𝑑
2
Las dos ecuaciones anteriores pueden sustituirse ahora por x y dx,
respectivamente, en la ecuación que se habrá de integrar. Tales sustituciones
efectivamente transforman el intervalo de integración sin cambiar el valor de la
integral. El siguiente ejemplo ilustra cómo se hace esto en la práctica.
22.3.3 Fórmulas con más puntos
Aparte de la fórmula de dos puntos descrita en la sección anterior, se pueden
desarrollar versiones con más
puntos en la forma general
𝐼 ≅ 𝑐0 𝑓(𝑥0 ) + 𝑐1 𝑓(𝑥1 ) + ⋯
+ 𝑐𝑛−1 𝑓(𝑥𝑛−1 )
donde n = número de puntos.
Los valores de las c y las x para
fórmulas de hasta seis puntos
se resumen en la tabla 22.1.
TABLA 22.1 Factores de
ponderación c y argumentos de
la función x usados en las
fórmulas de Gauss-Legendre.

VELAZQUEZ CEREZO JAIME ALEJANDRO 37


ANALISIS NUMERICO

5. Implementación en Fortran (Programas)

ELIMINACIÓN DE GAUSS
program EDG
implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:),ALLOCATABLE :: B
REAL, DIMENSION (:),ALLOCATABLE :: X
INTEGER, DIMENSION (:), ALLOCATABLE :: IE
REAL :: MA,CRM,CRB,PIV,SUMA
INTEGER :: n
INTEGER :: i,j,k,l,CRIE
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Eliminacion de Gauss'
WRITE (*,*) '*Programa para solucionar un sistema de ecuaciones del tipo'
WRITE (*,*) ' [A]{x}={b} de dimensiones n x n , [ A ]nxn'
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la Dimension del Sistema "n"'
WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (B(n))
ALLOCATE (X(n))
ALLOCATE (IE(n))
DO i=1,n
WRITE (*,*) 'Introducir Coeficientes "a" de Ecuacion',i
DO j=1,n
READ (*,*) A(i,j)
END DO
END DO
WRITE (*,*) 'Introducir Vector de Terminos Independientes { B }'
DO i=1,n
READ (*,*) B(i)
END DO
WRITE (*,*) ' '
WRITE (*,*) '[ A ] ='
DO i=1,n
WRITE (*,*) A (i,:)
END DO
WRITE (*,*) ' '
WRITE (*,*) '{ B } ='
DO i=1,n
WRITE (*,*) B (i)
END DO
DO i=1,n
IE(i)=i
END DO

!GAUSS
DO i=1,n-1

VELAZQUEZ CEREZO JAIME ALEJANDRO 38


ANALISIS NUMERICO

MA= ABS(A(i,i))
l=i
DO j=i+1,n
IF (ABS(A(j,i)).GT.MA) THEN
MA=ABS(A(j,i))
l=j
END IF
END DO
!IF
DO k=1,n
CRM=A(l,k)
A(l,k)=A(i,k)
A(i,k)=CRM
END DO

CRB=B(l)
B(l)=B(i)
B(i)=CRB

CRIE=IE(l)
IE(l)=IE(i)
IE(i)=CRIE

DO j=i+1,n
PIV=A(j,i)/A(i,i)
DO k=1,n
A(j,k)=A(j,k)-PIV*A(i,k)
END DO
B(j)=B(j)-PIV*B(i)
END DO

END DO
!
X(n)=B(n)/A(n,n)

DO i=n-1,1,-1
SUMA=0.0
DO j=i+1,n
SUMA=SUMA+A(i,j)*X(j)
END DO
X(i)=(B(i)-SUMA)/A(i,i)
END DO

WRITE (*,*) ' '


WRITE (*,*) 'Vector de Registro de Permutaciones de Renglones'

DO i=1,n
WRITE (*,*) IE (i)
END DO

WRITE (*,*) ' '

DO i=1,n
WRITE (*,*) 'X',i,'=',X (i)
END DO

WRITE (*,*) ' '

VELAZQUEZ CEREZO JAIME ALEJANDRO 39


ANALISIS NUMERICO

WRITE (*,*) '************'


PAUSE
STOP
end program EDG

Descomposición LU

program DescLU
implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:,:),ALLOCATABLE :: LO
REAL, DIMENSION (:),ALLOCATABLE :: B
REAL, DIMENSION (:),ALLOCATABLE :: X
INTEGER, DIMENSION (:), ALLOCATABLE :: IE
REAL :: MA,CRM,CRB,PIV,SUMA
INTEGER :: n
INTEGER :: i,j,k,l,CRIE
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Descomposicion LU'
WRITE (*,*) '*Programa factorizar una Matriz [A] en sus componentes'
WRITE (*,*) ' L=(matriz triangular inferior) U=Matriz triangular superior '
WRITE (*,*) '[ A ]= [ L ][ U ]'
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la Dimension del Sistema "n"'
WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (LO(n,n))
ALLOCATE (B(n))
ALLOCATE (X(n))
ALLOCATE (IE(n))
DO i=1,n
WRITE (*,*) 'Introducir Coeficientes de Escuacion',i
DO j=1,n
READ (*,*) A(i,j)
END DO
END DO

DO i=1,n
DO j=1,n
LO(i,j)=0
END DO
END DO

WRITE (*,*) 'Introducir Vector de Terminos Independientes { B }'


DO i=1,n
READ (*,*) B(i)
END DO
WRITE (*,*) ' '
WRITE (*,*) '[ A ] ='
DO i=1,n

VELAZQUEZ CEREZO JAIME ALEJANDRO 40


ANALISIS NUMERICO

WRITE (*,*) A (i,:)


END DO
WRITE (*,*) ' '
WRITE (*,*) '{ B } ='
DO i=1,n
WRITE (*,*) B (i)
END DO
DO i=1,n
IE(i)=i
END DO
! WRITE (*,*) IE
!GAUSS
DO i=1,n-1
MA= ABS(A(i,i))
l=i
DO j=i+1,n
IF (ABS(A(j,i)).GT.MA) THEN
MA=ABS(A(j,i))
l=j
END IF
END DO
!IF
DO k=1,n
CRM=A(l,k)
A(l,k)=A(i,k)
A(i,k)=CRM
END DO

CRB=B(l)
B(l)=B(i)
B(i)=CRB

CRIE=IE(l)
IE(l)=IE(i)
IE(i)=CRIE

DO j=i+1,n
PIV=A(j,i)/A(i,i)
LO(j,i)=PIV
DO k=1,n
A(j,k)=A(j,k)-PIV*A(i,k)
END DO
B(j)=B(j)-PIV*B(i)
END DO

DO k=1,n
LO(k,k)=1
END DO

END DO
X(n)=B(n)/A(n,n)
DO i=n-1,1,-1
SUMA=0.0
DO j=i+1,n
SUMA=SUMA+A(i,j)*X(j)
END DO
X(i)=(B(i)-SUMA)/A(i,i)
END DO

VELAZQUEZ CEREZO JAIME ALEJANDRO 41


ANALISIS NUMERICO

WRITE (*,*) ' '


WRITE (*,*) 'Vector de Registro de Permutaciones de Renglones'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) IE (i)
END DO

WRITE (*,*) '[U]'


WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) A (i,:)
END DO
WRITE (*,*) ' '
WRITE (*,*) '[L] '
DO i=1,n
WRITE (*,*) LO (i,:)
END DO
WRITE (*,*) ' '

WRITE (*,*) '************'


PAUSE
STOP
end program DescLU

Factorización QR vía Householder

program hous

implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:,:),ALLOCATABLE :: AO
REAL, DIMENSION (:,:),ALLOCATABLE :: R
REAL, DIMENSION (:),ALLOCATABLE :: W
REAL, DIMENSION (:),ALLOCATABLE :: U
REAL, DIMENSION (:,:),ALLOCATABLE :: UU
REAL, DIMENSION (:,:),ALLOCATABLE :: P
REAL, DIMENSION (:,:),ALLOCATABLE :: PM
REAL, DIMENSION (:,:),ALLOCATABLE :: QAQ
REAL :: s,norm,UUE
INTEGER :: n
INTEGER :: i,j,k,l
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Factorizacion QR via Householder'
WRITE (*,*) '*Programa para factorizar una matriz [A ]'
WRITE (*,*) ' en un matriz ortogonal Q y una matris triangular'
WRITE (*,*) ' superior emplendo la Reflexion de Householder '
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la Dimension de A "n"'
WRITE (*,*) ' '
READ (*,*) n

VELAZQUEZ CEREZO JAIME ALEJANDRO 42


ANALISIS NUMERICO

WRITE (*,*) ' '


ALLOCATE (A(n,n))
ALLOCATE (R(n,n))
ALLOCATE (UU(n,n))
ALLOCATE (AO(n,n))
ALLOCATE (W(n))
ALLOCATE (U(n))
ALLOCATE (P(n,n))
ALLOCATE (PM(n,n))
ALLOCATE (QAQ(n,n))
! Ensamble
DO i=1,n
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
READ (*,*) A(i,j)
END DO
END DO

DO i=1,n
DO j=1,n
AO(i,j)=A(i,j)
END DO
END DO

DO j=1,n
DO k=1,n
if (j.EQ.k) then
PM(j,k)=1
else
PM(j,k)=0
end if
END DO
END DO
!Programa
do i=1,n-1
W=A(:,i)
s=0
do k=i,n
s=W(k)**2+s
end do
norm=sqrt(s)
W(i)=W(i)-norm
do j=1,n
U(j)=W(j)
end do

UUE=0
do j=i,n
do k=i,n
UU(j,k)=U(j)*U(k)
end do
UUE=UUE+U(j)**2
end do

do j=i,n
do k=i,n
if (j.EQ.k) then
P(j,k)=1-(2*UU(j,k)/UUE)

VELAZQUEZ CEREZO JAIME ALEJANDRO 43


ANALISIS NUMERICO

else
P(j,k)=-2/UUE*UU(j,k)
end if
end do
end do

A=matmul(P,A)
!reset P y acumular en PM
PM=matmul(PM,P)

DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO
end do
WRITE (*,*) ' '
R=matmul(transpose(PM),AO)

!check
WRITE (*,*) ' '
WRITE (*,*) '[ Q ]'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) PM(i,:)
END DO
WRITE (*,*) ' '
WRITE (*,*) '[ R ]'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) R(i,:)
END DO
!!! Transformacion QT*AQ
QAQ=matmul(R,PM)
WRITE (*,*) 'QAQ'

pause
end program hous

VELAZQUEZ CEREZO JAIME ALEJANDRO 44


ANALISIS NUMERICO

Transformación a forma de Hessemberg Superior

program HESSH

implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:),ALLOCATABLE :: W
REAL, DIMENSION (:),ALLOCATABLE :: U
REAL, DIMENSION (:,:),ALLOCATABLE :: UU
REAL, DIMENSION (:,:),ALLOCATABLE :: P
REAL, DIMENSION (:,:),ALLOCATABLE :: PM
REAL :: s,norm,UUE
INTEGER :: n
INTEGER :: i,j,k,l
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Transformacion de [A]-->[HESS] via Householder'
WRITE (*,*) '*Programa transformar una Matriz [A] en la forma'
WRITE (*,*) ' Hessemberg Superior [HESS] '
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la Dimension de A "n"'
WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (UU(n,n))
ALLOCATE (W(n))
ALLOCATE (U(n))
ALLOCATE (P(n,n))
ALLOCATE (PM(n,n))
! Ensamble
DO i=1,n
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
READ (*,*) A(i,j)
END DO
END DO
DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO

DO j=1,n
DO k=1,n
if (j.EQ.k) then
PM(j,k)=1
else
PM(j,k)=0

VELAZQUEZ CEREZO JAIME ALEJANDRO 45


ANALISIS NUMERICO

end if
END DO
END DO

!Programa
do i=2,n-1
W=A(:,i-1)
s=0
do k=i,n
s=W(k)**2+s
end do
norm=sqrt(s)
W(i)=W(i)-norm
do j=1,n
U(j)=W(j)
end do

UUE=0
do j=i,n
do k=i,n
UU(j,k)=U(j)*U(k)
end do
UUE=UUE+U(j)**2
end do

do j=i,n
do k=i,n
P(j,k)=P(j,k)-(2*UU(j,k)/UUE)
end do
end do

A=matmul(TRANSPOSE(P),A)
A=matmul(A,P)
!reset P y acumular en PM

PM=matmul(PM,P)

DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO

end do
!check
WRITE (*,*) '[ A ]--> [HESS]'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) A(i,:)
END DO
pause
end program HESSH

VELAZQUEZ CEREZO JAIME ALEJANDRO 46


ANALISIS NUMERICO

Método de Jacobi Estándar


program Jacobi

implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:,:),ALLOCATABLE :: X
REAL, DIMENSION (:),ALLOCATABLE :: VC
REAL :: EPS,AT,EK,ERRLIM,THRESH,BETA,FRACT,S,C,PIK,PJK,BKI,BKJ,XKI,XKJ
INTEGER :: n
INTEGER :: i,j,k,l
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Encontrar Valores y Vectores Caracteristicos del problema estandar'
WRITE (*,*) '*[A]{X}=LAMB{X} mediante el metodo de Jacobi'
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '

WRITE (*,*) 'Introducir la Dimension de A "n"'


WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (X(n,n))
ALLOCATE (VC(n))
DATA EPS/2.D-16/
! Ensamble
DO i=1,n
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
! WRITE (*,*) 'A',i,j
READ (*,*) A(i,j)
END DO
END DO
! Programa
AT=0.0
DO i=1,n
DO j=1,n
AT=AT+A(i,j)**2
X(i,j)=0
END DO
X(i,i)=1.0
END DO
ERRLIM=1000*EPS*AT

EK=0
DO i=1,n
DO j=1,n
IF (i.NE.j) EK = EK + A(i,j)**2
END DO
END DO
IF (EK.LE.ERRLIM) go to 50
THRESH=0.5*EK/n/(n-1)

VELAZQUEZ CEREZO JAIME ALEJANDRO 47


ANALISIS NUMERICO

DO WHILE (EK.GT.ERRLIM)

DO i=1,n-1
DO 35 j=i+1,n
if (A(j,i)**2.LE.THRESH) GO TO 35
EK=EK-2*A(j,i)**2

THRESH=0.5*EK/(n*(n-1))

BETA=(A(i,i)-A(j,j))/(2.*A(j,i))
FRACT=0.5*BETA/SQRT(1.0+BETA**2)
S=SQRT(MAX(0.5-FRACT,0.D0))
C=SQRT(MAX(0.5+FRACT,0.D0))

DO k=1,n
PIK=C*A(i,k)+S*A(j,k)
PJK=-S*A(i,k)+C*A(j,k)
A(i,k)=PIK
A(j,k)=PJK
END DO

DO k=1,n
BKI=C*A(k,i)+S*A(k,j)
BKJ=-S*A(k,i)+C*A(k,j)
A(k,i)=BKI
A(k,j)=BKJ
XKI=C*X(k,i)+S*X(k,j)
XKJ=-S*X(k,i)+C*X(k,j)
X(k,i)=XKI
X(k,j)=XKJ
END DO
IF (EK.LE.ERRLIM) go to 50
35 continue
END DO

END DO
50 continue

DO i=1,n
VC(i)=A(i,i)
END DO

WRITE (*,*) 'Valores Caracteristicos '


WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) VC (i)
END DO
WRITE (*,*) ' '
WRITE (*,*) 'Valores Caracteristicos '
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) X (i,:)
END DO
Pause
end program Jacobi

VELAZQUEZ CEREZO JAIME ALEJANDRO 48


ANALISIS NUMERICO

Método de QR para Valores Característicos

program IQR2

implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:),ALLOCATABLE :: W
REAL, DIMENSION (:),ALLOCATABLE :: U
COMPLEX, DIMENSION (:),ALLOCATABLE :: EIG
REAL, DIMENSION (:,:),ALLOCATABLE :: UU
REAL, DIMENSION (:,:),ALLOCATABLE :: P
REAL, DIMENSION (:,:),ALLOCATABLE :: PM
REAL, DIMENSION (:,:),ALLOCATABLE :: AHESS
REAL, DIMENSION (:,:),ALLOCATABLE :: QAQ !!
REAL, DIMENSION (:,:),ALLOCATABLE :: R !!
REAL, DIMENSION (:,:),ALLOCATABLE :: COMP !!
REAL :: s,norm,UUE,AMAX,EPS,ERRLIM,DISC,TERM
INTEGER :: n
INTEGER :: i,j,k,l,ITER,NITER
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Encontrar Valores y Vectores Caracteristicos del problema estandar'
WRITE (*,*) '*[A]{X}=LAMB{X} mediante el metodo de QR Para Matrices Simetricas o No
Simetricas'
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '

WRITE (*,*) 'Introducir la Dimension de A "n"'


WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (UU(n,n))
ALLOCATE (W(n))
ALLOCATE (U(n))
ALLOCATE (EIG(n))
ALLOCATE (P(n,n))
ALLOCATE (PM(n,n))
ALLOCATE (AHESS(n,n))
ALLOCATE (QAQ(n,n))
ALLOCATE (R(n,n))
ALLOCATE (COMP(n,n))
!NUEVAS IQR
DATA EPS/2.D-16/
AMAX=0
DO i=1,n
DO j=1,n
AMAX=MAX(AMAX,ABS(A(i,j)))
END DO
END DO
ERRLIM=SQRT(EPS)*AMAX
! Ensamble

VELAZQUEZ CEREZO JAIME ALEJANDRO 49


ANALISIS NUMERICO

DO i=1,n
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
READ (*,*) A(i,j)
END DO
END DO
DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO

DO j=1,n
DO k=1,n
if (j.EQ.k) then
PM(j,k)=1
else
PM(j,k)=0
end if
END DO
END DO

!Programa
do i=2,n-1
W=A(:,i-1)
s=0
do k=i,n
s=W(k)**2+s
end do
norm=sqrt(s)
W(i)=W(i)-norm
do j=1,n
U(j)=W(j)
end do

UUE=0
do j=i,n
do k=i,n
UU(j,k)=U(j)*U(k)
end do
UUE=UUE+U(j)**2
end do

do j=i,n
do k=i,n
P(j,k)=P(j,k)-(2*UU(j,k)/UUE)
end do
end do

A=matmul(TRANSPOSE(P),A)
A=matmul(A,P)

!check

VELAZQUEZ CEREZO JAIME ALEJANDRO 50


ANALISIS NUMERICO

!reset P y acumular en PM

PM=matmul(PM,P)

DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO

end do
WRITE (*,*) ' '
COMP=matmul(transpose(PM),PM)

DO i=1,n
DO j=1,n
AHESS(i,j)=A(i,j)
END DO
END DO
WRITE (*,*) ' '
WRITE (*,*) '[HESS]'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) AHESS(i,:)
END DO

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
!HESSENBERG
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
!QR
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

DO j=1,n
DO k=1,n
if (j.EQ.k) then
PM(j,k)=1
else
PM(j,k)=0
end if
END DO
END DO
NITER=1000*n
do ITER=1,NITER
!Programa
do i=1,n-1
W=A(:,i)
s=0
do k=i,n
s=W(k)**2+s
end do
norm=sqrt(s)

VELAZQUEZ CEREZO JAIME ALEJANDRO 51


ANALISIS NUMERICO

W(i)=W(i)-norm
do j=1,n
U(j)=W(j)
end do

UUE=0
do j=i,n
do k=i,n
UU(j,k)=U(j)*U(k)
end do
UUE=UUE+U(j)**2
end do

do j=i,n
do k=i,n
if (j.EQ.k) then
P(j,k)=1-(2*UU(j,k)/UUE)
else
P(j,k)=-2/UUE*UU(j,k)
end if
end do
end do

A=matmul(P,A)
!check

!reset P y acumular en PM

PM=matmul(PM,P)

DO j=1,n
DO k=1,n
if (j.EQ.k) then
P(j,k)=1
else
P(j,k)=0
end if
END DO
END DO

end do
!QAQ
R=matmul(transpose(PM),AHESS)
A=matmul(R,PM)
end do
WRITE (*,*) ' '
R=matmul(transpose(PM),AHESS)
COMP=matmul(transpose(PM),PM)

!!! Transformacion QT*AQ

QAQ=matmul(R,PM)

VELAZQUEZ CEREZO JAIME ALEJANDRO 52


ANALISIS NUMERICO

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
!QR
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!analisis

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!**EIGEN**
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DO i=1,n
DO j=1,n
A(i,j)=QAQ(i,j)
END DO
END DO

i=1
DO WHILE (i.LE.N-1)
IF(A(i+1,i).EQ.0.0)THEN

EIG(i)=A(i,i)
i=i+1
ELSE
DISC=(A(i,i)-A(i+1,i+1))**2+4.0*A(i,i+1)*A(i+1,i)
TERM=0.5*(A(i,i)+A(i+1,i+1))
IF (DISC.GE.0.0) THEN
EIG(i)=TERM+0.5*SQRT(DISC)
EIG(i+1)=TERM-0.5*SQRT(DISC)
ELSE
EIG(i)=TERM+0.5*SQRT(-DISC)*CMPLX(0.0,1.0)
EIG(i+1)=TERM-0.5*SQRT(-DISC)*CMPLX(0.0,1.0)
END IF
i=i+2
END IF
END DO
IF(i.EQ.n) EIG(n)=A(n,n)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!**EIGEN**
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!Resultado
WRITE (*,*) ' '
WRITE (*,*) 'QAQ'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) QAQ(i,:)
END DO

WRITE (*,*) ' '


WRITE (*,*) 'Los Valores Caracteristicos Son'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) EIG(i)
END DO

VELAZQUEZ CEREZO JAIME ALEJANDRO 53


ANALISIS NUMERICO

WRITE (*,*) ' '


WRITE (*,*) 'Los VEctores Caracteristicos Son'
WRITE (*,*) ' '
DO i=1,n
WRITE (*,*) PM(i,:)
END DO

pause
end program IQR2

Método de Jacobi Generalizado

program JacobiG2

implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: A
REAL, DIMENSION (:,:),ALLOCATABLE :: B
REAL, DIMENSION (:,:),ALLOCATABLE :: X
REAL, DIMENSION (:),ALLOCATABLE :: LAMB
REAL, DIMENSION (:),ALLOCATABLE :: WO
REAL, DIMENSION (:),ALLOCATABLE :: AJI
REAL, DIMENSION (:),ALLOCATABLE :: BJI
REAL, DIMENSION (:),ALLOCATABLE :: NUX
PARAMETER RTOL=10**-12,NSMAX=15
REAL :: EPS,EPTOLA,EPTOLB,NSWEEP,T1,T2,G1,G2,G3,G4,BB
REAL :: ARSQ,SQAR,JM1,KP1,KM1,AK,BK,XJ,XK,JP1,TOL,DIF,EPSA,EPSB
REAL :: HAJI,HBJI,HAIJ,HBIJ,XIJ,NUXS2
INTEGER :: n,NR
INTEGER :: i,j,k,l,jj
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Encontrar Valores y Vectores Caracteristicos del problema
Generalizado'
WRITE (*,*) '*[A]{X}=LAMB[B]{X} mediante el metodo de Jacobi Generalizado'
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la Dimension de A "n"'
WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (A(n,n))
ALLOCATE (B(n,n))
ALLOCATE (X(n,n))
ALLOCATE (LAMB(n))
ALLOCATE (WO(n))
ALLOCATE (AJI(n))
ALLOCATE (BJI(n))
ALLOCATE (NUX(n))
! Ensamble
DO i=1,n

VELAZQUEZ CEREZO JAIME ALEJANDRO 54


ANALISIS NUMERICO

WRITE (*,*) 'Matriz [A]'


WRITE (*,*) ' '
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
! WRITE (*,*) 'A',i,j
READ (*,*) A(i,j)
END DO
END DO
DO i=1,n
WRITE (*,*) 'Matriz [B]'
WRITE (*,*) ' '
WRITE (*,*) 'Introducir Coeficientes de Renglon',i
DO j=1,n
! WRITE (*,*) 'A',i,j
READ (*,*) B(i,j)
END DO
END DO

! Valores Iniciales
DO i=1,n
WO(i)=A(i,i)/B(i,i)
LAMB(i)=WO(i)
END DO

DO i=1,n
DO j=1,n
X(i,j)=0
END DO
X(i,i)=1
END DO

! #Ciclo

NR=n-1
NSWEEP=0
25 NSWEEP=NSWEEP+1

EPS=(0.01**NSWEEP)**2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DO 120 j=1,NR
DO 121 k=j+1,n

EPTOLA=A(j,k)**2/(A(j,j)*A(k,k))
EPTOLB=B(j,k)**2/(B(j,j)*B(k,k))

if ((EPTOLA.LT.EPS).AND.(EPTOLB.LT.EPS)) GO TO 120

G1=A(j,j)*B(j,k)-B(j,j)*A(j,k) !AA
G2=A(k,k)*B(j,k)-B(k,k)*A(j,k) !CC
G3=A(j,j)*B(k,k)-A(k,k)*B(j,j) !BB

ARSQ=(0.5*G3)**2+G1*G2
SQAR=SQRT(ARSQ)

40 IF(G3.LT.0.0) G4=G3/2-SQAR
IF(G3.GE.0.0) G4=G3/2+SQAR

VELAZQUEZ CEREZO JAIME ALEJANDRO 55


ANALISIS NUMERICO

IF(G4.EQ.0.0) THEN
T1=0 !Alpha
T2=-A(j,k)/A(k,k) !Gama
ELSE
T1=G2/G4 !Alpha
T2=-G1/G4 !Gama
END IF

50 DO 65 i=1,n
IF(i.GT.k) GO TO 63
AJI(i)=A(j,i)
BJI(i)=B(j,i)
A(j,i)=A(j,i)+T2*A(i,k)
B(j,i)=B(j,i)+T2*B(i,k)
IF (i.EQ.k) A(k,i)=AJI(i)*T1+A(k,i)
IF (i.EQ.k) B(k,i)=BJI(i)*T1+B(k,i)
GO TO 65
63 HAJI=A(j,i)
HBJI=B(j,i)
A(j,i)=A(j,i)+A(k,i)*T2
B(j,i)=B(j,i)+B(k,i)*T2
A(k,i)=HAJI*T1+A(k,i)
B(k,i)=HBJI*T1+B(k,i)
65 END DO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
AJI(k)=AJI(j)*T1+AJI(k)
BJI(k)=BJI(j)*T1+BJI(k)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
75 DO 80 i=1,k
IF(i.LE.j) GO TO 78
A(i,k)=AJI(i)*T1+A(i,k)
B(i,k)=BJI(i)*T1+B(i,k)
GO TO 80
78 HAIJ=A(i,j)
HBIJ=B(i,j)
A(i,j)=A(i,j)+A(i,k)*T2
B(i,j)=B(i,j)+B(i,k)*T2
A(i,k)=HAIJ*T1+A(i,k)
B(i,k)=HBIJ*T1+B(i,k)
80 END DO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DO 110 i=1,n
XIJ=X(i,j)
X(i,j)=X(i,j)+X(i,k)*T2
X(i,k)=XIJ*T1+X(i,k)
110 END DO

121 END DO
120 END DO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

DO 130 i=1,n
LAMB(i)=A(i,i)/B(i,i)
130 END DO

DO 140 i=1,n

VELAZQUEZ CEREZO JAIME ALEJANDRO 56


ANALISIS NUMERICO

TOL=RTOL
DIF=ABS((LAMB(i)-WO(i))/WO(i))
IF (DIF.GT.TOL) GO TO 160
140 END DO

EPS=RTOL**2
DO 150 j=1,n-1
DO k=j+1,n
EPSA=(A(j,k)*A(j,k))/(A(j,j)*A(k,k))
EPSB=(B(j,k)*B(j,k))/(B(j,j)*B(k,K))
IF ((ABS(EPSA).GE.EPS).AND.(ABS(EPSB).GE.EPS)) GO TO 160
END DO
150 END DO

GO TO 300

160 DO 170 k=1,n


WO(k)=LAMB(k)
170 END DO

IF(NSWEEP.LT.NSMAX) GO TO 25

300 continue

DO i=1,n
DO j=1,n
A(j,i)=A(i,j)
B(j,i)=B(i,j)
END DO
END DO

DO i=1,n
NUXS2=0
DO j=1,n
NUXS2=NUXS2+X(j,i)**2
END DO
NUX(i)=SQRT(NUXS2)
END DO

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WRITE(*,*) ' '
WRITE(*,*) ' Valores Caracteristicos'
WRITE(*,*) ' '
WRITE(*,*) LAMB
WRITE(*,*) ' '
WRITE(*,*) ' Vectores Caracteristicos'
WRITE(*,*) ' '
DO i=1,n
WRITE(*,*) X(i,:)
END DO
WRITE(*,*) ' '
WRITE(*,*) ' Matriz [A]'
WRITE(*,*) ' '
DO i=1,n
WRITE(*,*) A(i,:)
END DO
WRITE(*,*) ' '

VELAZQUEZ CEREZO JAIME ALEJANDRO 57


ANALISIS NUMERICO

WRITE(*,*) ' Matriz [B]'


WRITE(*,*) ' '
DO i=1,n
WRITE(*,*) B(i,:)
END DO
WRITE(*,*) ' '
Pause
end program JacobiG2

Ecuación diferencial hiperbólica (problema de onda)

program EDPH
implicit none
! Variables
REAL, DIMENSION (:,:),ALLOCATABLE :: W
REAL, DIMENSION (:),ALLOCATABLE :: X
REAL, DIMENSION (:),ALLOCATABLE :: FX
REAL, DIMENSION (:),ALLOCATABLE :: ti
REAL :: L,T,ALPHA,h,k,LAMB
INTEGER :: m,n
INTEGER :: i,j
WRITE (*,*) '***************************************************** '
WRITE (*,*) '*Velazquez Cerezo Jaime Alejandro'
WRITE (*,*) '*Ecuaciones Diferenciales Hiperbolicas'
WRITE (*,*) '*Programa para dar solucion numerica a la ecuacion'
WRITE (*,*) ' de la Onda para ;'
WRITE (*,*) ' u(O, t) = u( l, t) =O, para O< t,'
WRITE (*,*) ' u(x, O) = sen(PI*X) , 0<x<L , g(x) =0 0<x<L '
WRITE (*,*) '***************************************************** '
WRITE (*,*) ' '
WRITE (*,*) 'Introducir el valor del extremo "L"'
WRITE (*,*) ' '
READ (*,*) L
WRITE (*,*) ' '
WRITE (*,*) 'Introducir el valor del tiempo maximo "T"'
WRITE (*,*) ' '
READ (*,*) T
WRITE (*,*) ' '
WRITE (*,*) 'Introducir el valor de la constante "ALPHA"'
WRITE (*,*) ' '
READ (*,*) ALPHA
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la dimension "m"'
WRITE (*,*) ' '
READ (*,*) m
WRITE (*,*) ' '
WRITE (*,*) 'Introducir la dimension "n"'
WRITE (*,*) ' '
READ (*,*) n
WRITE (*,*) ' '
ALLOCATE (W(m+1,n+1))
ALLOCATE (X(m+1))
ALLOCATE (FX(m+1))

VELAZQUEZ CEREZO JAIME ALEJANDRO 58


ANALISIS NUMERICO

ALLOCATE (ti(n+1))
h=L/(m)
k=T/(n)
LAMB=k*ALPHA/h
!Llenar X
X(1)=0
DO i=1,m+1
X(i)=(i-1)*h
END DO
!Llenar FX
DO i=1,m+1
FX(i)=sin(3.1416*X(i))
END DO
DO i=1,m+1
write(*,*) X(i)
END DO
DO i=1,m+1
write(*,*) FX(i)
END DO
DO j=2,n+1
W(1,j)=0
W(m+1,j)=0
END DO
W(1,1)=FX(1)
W(m+1,1)=FX(m+1)
DO i=2,m
W(i,1)=FX(i)
W(i,2)=(1-LAMB**2)*FX(i)+0.5*(LAMB**2)*(FX(i+1)+FX(i-1))
END DO
DO j=2,n
DO i=2,m
W(i,j+1)=2*(1-LAMB**2)*W(i,j)+(LAMB**2)*(W(i+1,j)+W(i-1,j))-W(i,j-1)
END DO
END DO
write (*,*) LAMB
write (*,*) h
write (*,*) k
DO i=1,n+1
WRITE (*,*) ' '
WRITE (*,*) 'T=',(i-1)*k
WRITE (*,*) ' '
DO j=1,m+1
WRITE (*,*) 'X=',X(j),'U=',W(j,i)
END DO
END DO
pause
end program EDPH

VELAZQUEZ CEREZO JAIME ALEJANDRO 59


ANALISIS NUMERICO

Bibliografía
Matrix Computations, Gene H. Golub, Charles F. Van Loan, 3th Edition 1996-The Johns Hopkins
University Press.

Computational Methods of Linear Algebra, Granville Sewell, 2nd Edition 2005-John Wiley & Sons,
Inc.

Matrix Algebra, Theory, Computations, and Applications in Statistics, James E. Gentle, 2007-
Springer Science + Business Media.

Análisis Numérico, Richard L. Burden, J. Douglas Faires, 7ma Edición 2002-International Thomson
Editores, S.A. C.V.

Matrix Analysis, Roger A. Horn, Charles R. Johnson, 2nd Edition 2013-Cambridge University Press.

Numerical Recipes in Fortran 77 The Art of Scientific Computing, William H. Press, Saul A.
Teukolsky, William T. Vetterling, Brian P. Flannery, 2nd Edition 1992-Syndicate of the University of
Cambridge.

Algebra Lineal, Stephen H. Friedberg, Arnold J. Insel, Lawrence E. Spence, 1er Edición 1982-
Publicaciones Cultural, S.A.

Linear Algebra, John B. Fraleigh, Raymond A. Beauregard, 3th Edition 1995- Addison-Wesley
Publishing Company.

Algebra Lineal y Geometría Cartesiana, Juan Burgos, 3er Edición 2000-Mc Graw Hill.

Numerical Methods for General and Structured Eigenvalue Problems, Daniel Kressner, 2000-
Springer Science + Business Media.

Algebraic Eigenvalue Problem, J. H. Wilkinson, 6th Edition 1988-Clarendon Press, Oxford.

The Theory of Matrices in Numerical Analysis, Alston S. Householder,1975-Dover Publications, Inc.


New York

Introduccion Al Algebra Lineal, Roland E. Larson y Bruce H. Edwards

VELAZQUEZ CEREZO JAIME ALEJANDRO 60

Anda mungkin juga menyukai