UNIVERSIDAD NACIONAL DEL CALLAO -...
Transcript of UNIVERSIDAD NACIONAL DEL CALLAO -...
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICA
INFORME FINAL
PROYECTO DE INVESTIGACIÓN
"TEXTO: Métodos Numéricos Aplicados con Fortran"
Mg. Jorge Luis Godier Amburgo.
® ,·ASo 2014
(Periodo de ejecución: 01 de Agosto del 2013 al31 de Julio del 2014)
·. (ResOO!ción Rect~~al de Aprobación: N° 766-2013~R)
ÍNDICE
Pág.
1. ÍNDICE .............................................................................. 1
2. 'RESUMEN .............................................................................. 2
3. INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. MARCO TEÓRICO ..................................................................... 4
5. MATERIALES Y MÉTODOS .......................................................... 7
6. RESULTADOS ............................................................................. 9
6.1 Capítulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2 Capítulo 11 .............................................................................. 56
6.3 Capítulo 111 ............................•................................................ 88
6.4 Capítulo IV ........................................................................... 1 08
6.5 Capítulo V .............................................................................. 138
6.6 Capítulo VI ............................................................................. 167
6. 7 Capítulo VIl ............................................................................ 176
6.8 Capítulo VIII ............................................................................ 198
7. DISCUSIÓN .............................................................................. 232
8. REFERENCIALES ...................................................................... 234
9. APÉNDICE ............................................................................... 235
A. Codificación Runge-Kutta 2do. Orden para EDO 2do. Orden .............. 235
B. Codificación Runge-Kutta 3er. Orden para EDO 2do. Orden .............. .236
10. ANEXOS ..................... . : . ......................................................... 237
1
2. RESUMEN
Este texto toma como base los fundamentos que rigen los métodos numéricos;
mostrando en detalle los algoritmos y codificaciones para la solución de problemas
físicos de nivel universitario y de investigación. Se han desarrollado las diferentes
fórmulas numéricas en codificaciones usando lenguaje Fortran, permitiendo
generar en el estudiante un conocimiento activo de los fundamentos que rigen los
métodos tales como el de solución de ecuaciones no lineales, sistemas de
ecuaciones, interpolación, ajuste de curvas, integración, derivación numérica y
solución de ecuaciones diferenciales ordinarias y parciales. Se presentan
problemas físicos resueltos, logrando que este texto se convierta en un
instrumento para facilitar el proceso de enseñanza-aprendizaje de acuerdo con los
objetivos y contenidos del silabo oficial de la asignatura de Métodos Numéricos de
la Física, superando la situación actual en la que la gran mayoría de textos que
presentan métodos numéricos están dirigidos a problemas específicos de
ingeniería y dejan de lado aplicaciones importantes para la física.
2
3. INTRODUCCIÓN
En la actualidad las aplicaciones de los métodos numéricos se dan en los
ámbitos más diversos, desde sectores tecnológicos tan clásicos como la
ingeniería estructural o la aerodinámica de aviones, hasta aplicaciones más
sofisticadas como ingeniería de alimentos, ingeniería medica, diseño de
fármacos, biología, entre otros.
La física busca conocer e interpretar los mecanismos de la naturaleza
para así poder modificarla al servicio del hombre. Para ello ha utilizado sus
conocimientos, experiencia y los medios naturales a los que en cada momento
ha tenido disponibles. Con el gran poder de cómputo que se tiene en estos días,
el físico dispone de grandes ventajas para poder llevar a cabo su misión y
abordar cada día retos más ambiciosos en la solución de nuevos problemas,
cuyos aspectos políticos, económicos, científicos o tecnológicos pueden tener un
mayor impacto en la mejora de la calidad de vida del hombre.
Gracias a la gran evolución que han tenido los métodos numéricos y su
implementación en potentes computadoras, es posible, por ejemplo, modelar el
choque de un vehículo o hacer el análisis aerodinámico estructural de un avión,
resolviendo en cada caso sistemas algebraicos de ecuaciones con varios cientos
de miles (a veces de millones) de incógnitas.
A nivel universitario la gran mayoría de textos que presentan métodos
numéricos están dirigidos a problemas específicos de ingeniería y dejan de lado
aplicaciones físicas; más que eso, no hacen referencia a las codificaciones en
un lenguaje científico como Fortran; esta situación pretende ser resuelta por este
texto.
El Autor.
3
4. MARCO TEÓRICO
Respecto al marco teórico empleado, se utilizaron principalmente los textos
de Chapra. (2003), Burden (2000), Cante, S. y Boor, C (1985); los cuales
proporcionan el fundamento teórico necesario para el desarrollo de algoritmos y
codificaciones, en los siguientes temas:
1. Introducción al lenguaje científico Fortran.
2. Solución de ecuaciones no lineales.
3. Solución de sistemas de ecuaciones lineales.
4. Aproximación de funciones
5. lnte1 tJOiación polinomial
6. Aproximación numérica de la derivada.
7. Integración Numérica
8. Solución de Ecuaciones Diferenciales
Respecto al desarmllo del fundamento teórico; sobre el lenguaje de
programación Fortran 90 se utilizó el que corresponde a la versión 4.0 de "The
Microsoft Fortran Power Station", descrito en el "American National standard
Programming Language Fortran 90" ANSI X3. 1980 - 1992 y en el
"lnternational standards Organization Programming Languaje" ISO/lEC 1539 -
1:1991. (Brian, 1 994).
En el Capítulo 11, se analiza uno de los problemas de ocurrencia más
frecuente en el trabajo científico, el cual es hallar las raíces de ecuaciones de la
forma f(x} = O; con frecuencia f(x) puede conocerse solo implícitamente y en
general, podemos esperar la obtención de soluciones aproximadas solamente
contando con alguna técnica computacional para producir la aproximación.
Dependiendo del contexto "solución aproximada" puede significar entonces un
punto en x para el cual f(x) se "satisface aproximadamente", es decir esta
cercana a una solución.
En el Capítulo 111, se trata de las técnicas usadas para solución directa
de sistemas de ecuaciones lineales tales como la eliminación de Gauss, pero
aun dentro de esta clase de métodos hay una gran variedad de escogencias
que varían en eficiencia computacional y en exactitud.
4
En el Capítulo IV, se aborda el problema de ajuste y aproximación de
curvas; en física los datos a menudo son valorés discretos a lo largo de un
· continuo, es por ello que, se describen técnicas para el ajuste de curvas de
tales datos para obtener de igual . modo estimaciones intermedias, pero
podremos además conseguir versidhes simplificadas de funciones en un
numero de valores discretos a lo largo del dominio de interés, pudiendo luego
derivar una función más simple para ajustar esos valores.
En el Capítulo V, se tratan los métodos de mayor eficiencia y simplicidad
para la construcción de nuevos puntos partiendo del conocimiento de un
conjunto discreto de puntos. En física, ingeniería y otras ciencias es frecuente
disponer de un cierto número de puntos obtenidos por muestreo o a partir de
un experimento y pretender construir una función que los ajuste; ahí radica su
importancia.
En el Capítulo VI, se analizan las formulas numéricas para aproximación
de la derivada, que se utilizan para evaluar las derivadas por ~edio de valores
dados en los puntos de una retícula. En el trabajo científico son importantes ya
que facilitan la solución numérica de ecuaciones diferenciales ordinarias y
parciales.
En el Capítulo VIl, se tratan las formulas numéricas de integración, las
cuales son construidas tomando como base los polinomios de interpolación de
Newton hacia adelante. En ciencias e ingeniería se presenta con frecuencia
este tipo de problemas dada la necesidad de integrar una función que sería, en
general, de una de las tres formas siguientes:
... Una función simple y continua tal como un polinomio, una función
exponencial o una función trigonométrica.
• Una función complicada y continua que es difícil o imposible de integrar
directamente.
• Una función tabuJada en ooñde ios valores de x y f(x) se ctsn en un
conjunto de pUQtos.. dis.cr~os, CQniOo es el caso a menudo, de datos
experimentale~
5
En el Capítulo VIII, se tratan las formulas numéricas que permiten
aproximar la solución de una ecuación diferencial ordinaria. Muchas de las
leyes generales de la naturaleza se expresan en el lenguaje de las ecuaciones
'diferenciales; abundan también las aplicaciones en ingeniería, economía¡
matemáticas y en muchos otros campos de la ciencia aplicada. En este
capítulo se desarrolla el tratamiento computacional de las EDO, con los
métodOs de Euler, los cuales en particular son adecuados para uriN
programación rápida debido a su sencillez; sin embargo, a pesar de su gran
estabilidad, requiere un tamaño de paso muy pequeño para alcanzar una
precisión razonabl~. también se desarrollan los métodos Runge-Kutta de
segundo, tercer y cuarto orden.
6
5. MATERIALES Y MÉTODOS
Para el desarrollo de este trabajo se emplearon los siguientes textos:
1. Burden, R. y Faires, D.; "Numerical Analysis", 7ma. Edición, Ed.
Brooks/Cole. New york, 2000.
2. Brian, H.; "Fortran 90 for Scientists and Engineers", Fortran
PowerStation 4.0. March 1994 in paperback 368 pages ISBN O
340 60034 9.
3. Chapra, S. C. y Canale R. P.; "Métodos numéricos para ingenieros".
4ta. Edición, Ed. McGraw-Hill. México, 2003.
4. Curtís, F. y Wheatley, P.; "Análisis Numérico con aplicaciones"; 6ta.
Edición, Ed. Pearson, México, 2000.
5. lriarte, R. y Balderrama, V.; "Métodos numéricos"; ira. Edición, Ed.
Trillas. México, 1990.
6. Maron, J. y Lo pez, J.; "Análisis Numérico un Enfoque Practico", 1 ra.
Edición, Ed. Continental S.A.; México, 1995.
7. Nakamura, S.; "Métodos Numéricos Aplicados con Software", 2da.
Edición, Ed. Hispanoamericana, México, 1992.
8. Nieves, A y Oomínguez, F.; "Métodos numéricos Aplicados a la
ingeniería"; 2da. Edición, Ed. Continental S.A.; México, 1998.
9. Tipler, P. y Mosca, G. "Física para la ciencia y la tecnología",
Volumen 1, 6ta. Edición, Ed. Reverte; España, 2010.
7
La mayoría actualmente se encuentran en la Facultad de Ciencias
Naturales y Matemática de la Universidad Nacional del Callao, En estos textos
se presentan los conceptos, leyes y principios de los métodos de solución
sistemas de ecuaciones, integración, derivación, solución de ecuaciones
diferenciales, entre otros.
Los métodos empleados fueron el inductivo y el deductivo por ser estos
los de mayor rigurosidad lógica dentro del esquema de acción del Método
Científico; su uso, permitió el desarrollo de los algoritmos y codificaciones de
las formulas numéricas más complejas y poco tratadas.
8
S. RESULTADOS
6.1 Capitulo 1
1. Introducción al lenguaje científico Fortran
Los lenguajes de programación surgieron debido a la necesidad de decirle a la
computadora que hacer, originalmente los computadores poseían su propio lenguaje
conocido como lenguaje ensamblador, con el cual se construían los programas a
utilizar. Para programar una computadora era necesario primero aprender su lenguaje,
lo que se constituía en un trabajo tedioso y largo; esta situación, dificultaba el
desarrollo de nuevos programas y aplicaciones.
En 1957 IBM y el Dr. John W. Backus crearon un lenguaje estándar llamado
FORTRAN (contracción del inglés Formula Trans/ating System) cuya finalidad fue
proporcionar una alternativa más práctica allenguaje ensamblador; Fortran, es
un lenguaje de programación de alto nivel de propósito
general, procedimental e imperativo, que está especialmente adaptado al cálculo
numérico. Desarrollado originalmente para el equipo IBM 704, y usado para
aplicaciones científicas y de ingeniería, este es un lenguaje con sintaxis muy parecida
al ingles ordinario e hizo posible dar instrucciones al computador de manera sencilla.
La solución del problema consistía en pasar las instrucciones de Fortran a un
lenguaje capaz de ser entendido por el ordenador (lenguaje de maquina), mediante u-n
proceso llamado compilación; los compiladores pueden adaptarse a nuevos lenguajes
de maquina sin afectar el lenguaje de programación usado por el operador. Entonces
el trabajo consistía en usar Fortran para desarrollar programas en cualquier maquina
que cuente con el correspondiente compilador Fortran, esto evita la penosa tarea de
aprender un lenguaje para cada máguina. Debido a esta~ características el lengyaje
Fortran se convirtió en el más popular entre los científicos e ingenieros. Fue
estandarizado por la American National Standards lnstitute (ANSI). (lSO/!EC 1539-
1 :1997).
Hacia 1960, las versiones de FORTRAN estaban disponibles para los
computadores 18M 709, 650, 1620, y 7090. La cada vez mayor popularidad del
FORTRAN estimuló a fabricantes ele computadores de la competencia a proporcionar
compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40
compiladores FORTRAN.
9
Por estas razones, el FORTRAN es considerado ser el primer lenguaje de
programación ampliamente usado soportado a través de una variedad de arquitecturas
de computador.
La primera versión FORTRAN 77 tenía una serie de desventajas. Entre ellas
una estructura muy rígida adaptada al uso de tarjetas perforadas ("forma fija"}, que
requería que ciertas columnas tuvieran usos específicos. Además, no permitía un uso
dinámico de la memoria y no permitía realizar operaciones entre arreglos de números.
Para mejorar esta situación, en 1990 se presento un tercer estándar ANSI conocido
como FORTRAN 90, que contenía muchas nuevas características y permitía una
programación mas estructurada. Una serie de cambios menores se presentaron en
1995 (FORTRAN 95}, y actualmente se trabaja en un nuevo estándar ANSI
(FORTRAN 2003). (Aicubierre, M., 2005).
Un lenguaje orientador de proceso tal como Fortran, se llama a veces lenguaje
algorítmico. Nos permite expresar un algoritmo matemático en una forma más
adecuada para la comunicación con los computadores. Un procedimiento Fortran que
instrumenta un algoritmo matemático especifica un procedimiento iterativo para hallar
la solución de una ecuación, el programa Fortran debe especificar (1) la exactitud que
s_~ requiere, (2) el número de iteraciones que se van a realizar y (3) que hacer en caso
de no convergencia. (Parte de la información fue recuperada de:
http://es.wikipedia.org/wiki/Fortran, en marzo del2014).
1.1 Requerimientos para la instalación de Fortran 90
Desarrollar programas en cualquier computador hace necesario que se cuente
con el correspondiente compilador, esto evita el trabajo de aprender un lenguaje para
cada máquina. En nuestro caso el lenguaje Fortran facilita la tarea ya que cuenta con
un compilador propio de gran flexibilidad (FL32.EXE). Para poder instalar y usar
Fortran en nuestra computadora, esta debe contar con las siguientes característiC-~i:
• Un microprocesador 80386, 80486 o superior y un sistema operativo Windows
95, Windows NT, como mínimo.
• Una entrada para Disco Flexible de 3.5" o bien una Lectora de CD-ROM, para
poder copiar los archivos de instalación.
• 16MB de memoria RAM como mínimo (se recomienda 20MB)
• 45 MB de espacio libre en el disco duro. c;le la unidad para la instalación típica.
• Monitor VGA (SVGA recomendado)
• Mouse.
10
1.2 Características y mejoras de Fortran 90
El lenguaje de programación Fortran 90 corresponde a la versión 4.0 de ''The
Microsoft Fortran Power Station", descrito en el "American National standard
Programming Language Fortran 90" ANSI X3. 1980 - 1992 y en el "lnternational
standards Organization Programming Languaje" ISO/lEC 1539 - 1 :1991. (Brian, 1994 ).
Fortran 90 contiene todas las características originales de Fortran 77 y adiciona
las extensiones y flexibilidad de nuevos lenguajes, algunas características de
estándares antiguos han sido declarados obsoletos, sin embargo el compilador puede
reconocerlos.
Algunas de las mejoras de Fortran 90 respecto al Fortran 77 son:
• Aumento en las capacidades de computación numérica.
• Operaciones con Arreglos.
• Especificar la precisión de datos intrínsecos.
• Uso de tipo de datos definidos.
• Módulos con contenido de datos y procedimientos.
1.3 Tratamiento de caracteres, constantes y variables
" En el lenguaje de programación Fortran están permitidos los 26 caracteres
alfabéticos, letras (A - Z}, los 1 O caracteres numéricos, dígitos decimales (O - 9) y los
caracteres especiales:*,!,+,=,-,', , , (, }, <, >, $, ?, #, :, ; , .
Usando estos caracteres podemos formar instrucciones para que la computadora
efectúe alguna operación requerida.
• Constantes ó Datos. En el lenguaje Fortran 90 las constantes o tipos de datos
pueden ser enteros, reales, complejos, carácter o lógicos.
Las constantes ó datos enteros carecen de punto decimal, el rango depende
del tipo de en tero que hayamos definid1, existen cuatro definiciones de enteros:
INTEGER(1), INTEGER(2), INTEGER(3) el INTEGER(4); de manera alternativa se
puede definir el tipo usando la notación INTEGER*1, INTEGER*2, etc. El valor máximo 1
y mínimo de una constante entera INTEGER(1) va desde: -128 hasta +127, en el
caso de INTEGER(2) va desde: -32,768 h~sta 32,767, y para INTEGER(4) desde: -
2, 147'483,648 hasta 2, 147'483,647; cada tilpo en particular ocupa cierta cantidad de
bytes de memoria 1 , 2, 3 y 4 bytes respectiv~mente. 1
11
Es conveniente que un tipo INTEGER(4) no tenga más de 9 dígitos. Las
constantes enteras por lo general no se deben usar en operaciones aritméticas.
(Brian, 1994).
Las constantes o datos reales pueden ser con exponente y sin exponente, el
rango de una constante real depende también del tipo declarado, existen dos tipos:
REAL(4), REAL(8) ó OOUBLE PRECISION, también se pueden usar las
representaciones alternativas: REAL *4, REAL *8. El numero de bytes que ocupa
REAL(4) es 4 y su rango va desde: -3.4028235E+38 hasta -1.1754944E-38 para los
números negativos; para los números positivos el rango va desde: +1. 754944E-38
hasta +3.4028235E+38. En el caso del tipo REAL(8) ó OOUBLE PRECISION el
numero de bytes qué se usan son 8, el rango para los números negativos va desde: -
1. 7976931348623160+ 308 hasta
-2.225073858507201 D-308 y para los números positivos el rango va desde:
+2.2250738585072010-308 hasta +1.7976931348623180+308. (Brian, 1994).
Las constantes o datos complejos se escriben como un par ordenado, siendo el
primer número correspondiente a la parte real y el segundo número a la parte
imaginaria. Existen dos tipos de definiciones COMPLEX ó COMPLEX(4) y DOUBLE
COMPLEX ó COMPLEX(8), el primero hace referencia a un número cuya parte real e
imaginaria son de precisión simple, el número de bytes que ocupa en memoria es 8.
En el caso de COMPLEX(8) la parte real e imaginaria son de doble precisión y el
número de bytes que ocupa son 16.
Las constantes o datos carácter los datos de tipo carácter pueden ser almacenados
y utilizados siempre y cuando se haya definido previamente el número de caracteres
con la declaración CHARACTER(N), donde N indica el número a almacenar, por cada
carácter se ocupa un byte de memoria
Los datos y constantes de tipo lógico pueden contener dos valores solamente
verdadero o falso, el numero de bytes de memoria ocupada por un dato lógico
depende de cómo se defina así LOGICAL(1) ocupa un byte (O para falso o 1 para
verdadero), existen además el tipo LOGICAL(2) y LOGICAL(4).
• Variables. Una variable es por definirla de alguna forma un registro de
almacenamiento temporal de algún dato o información; dependiendo de cómo
se asigne el tipo de dicha variable. esta pllede contener números enteros,
números reales o caracteres.
12
Si no se especifica el tipo de variable al inicio de un programa, Fortran asume por
defecto el tipo de dato que contendrá, así:
Para todas las variables que empiecen con las letras (1, J, K, L, M y N}, se asume
que contienen valores enteros del tipo INTEGER(4) y para las que empiecen con las
letras (A - H y O - Z), se asumirá que contienen valores reales, por defecto del tipo
REAL(4). Se puede definir al inicio de un programa el tipo de datos que deseamos .
que contenga una variable, de modo que una variable puede ser real, entero,
compleja, carácter o lógica.
• Atributos de Constantes y Variables. Los atributos describen las
propiedades de un dato o variable y de cómo serán tratados por el programa
así entonces una variable que se declara como PUBLIC podrá estar disponible
fuera de un modulo o programa, pero si se declara cornfil, PRIVATE la variable
estará disponible dentro del modulo solamente; existen ~~emás otros atributos -\·
tales como PARAMETER que señala que el dato es un~ ~onstante y su valor
no puede ser cambiado durante la ejecución del program~. EXTERNAL que
declara el nombre de una función externa a una s_ubrutina o INTRINSIC la que
declara una función intrínseca a una función o subfij~na. (Brian, 19~4).
1.4 Operadores en Fortran 90
Los operadores en Fortran son caracteres especiales que nos,p,err:nit~n definir
cierto procedimiento u operación, que deseamos se realice. En Fortran existen cuatro
tipo de operadores: numéricos ó aritméticos, relacionales, lógicos y carácter.
**
*
1
+
• Operadores Aritméticos. ( **, *, +, -, 1 }. Los operadores aritméticos son útiles
para poder indicar que queremos que se realice una operación aritmética.
Indica potenciación es la primera en prioridad de ejecución, es decir se ejecuta
antes de cualquier otra operación aritmética.
Indica multiplicación es de segunda prioridad.
Nos indica división y también es de segunda prioridad.
Indica adición es de tercera prioridad.
Indica Sustracción y también es de tercera prioridad.
13
Cuando es necesario efectuar una operación que contenga consecutivamente dos
operaciones a efectuar con operadores de prioridad similar es necesario usar
paréntesis para indicar que operación se debe realizar primero, veamos un ejemplo:
abe= a **(b**c)
a - = a/(b*c) b.c
Como vemos el uso de paréntesis se hace necesario pues de lo contrario el
computador ejecutara operaciones en un orden que no corresponde al que deseamos.
Cabe mencionar que cualquier tipo de ecuación u operación aritmética deberá ser
ingresada usando cuidadosamente los operadores, esto quiere decir que no pod~mos
escribir nuestras relaciones matemáticas o formulas de la manera usual, sino que
debemos traducirlas para que el computador las entienda.
• Operadores Relaciónales. Son aquellos que nos definen una relación entre
dos valores numéricos o dos datos del tipo carácter, no es posible comparar un
dato numérico con un dato carácter o lógico, el resultado de la comparación es
del tipo lógico (verdadero o falso) y es posible usar otro operador numérico en
las cantidades a comparar, los operadores relacionales son:
.LT. < Less than (Menor que)
.LE. <= Less than or equal to (Menor o igual que)
.EQ. = Equal to (Igual que)
.NE. =F Not equal to (Diferente que)
.GT. > Greater than (Mayor que)
.GE. >= Greater than or equal to (Mayor o igual que)
Estos operadores no pueden ser utilizados en combinación con otros operadores
relaciónales pues no existe un orden de precedencia entre ellos; si se evalúa un
numero entero con un número real el numero entero se convierte en real antes de ser
evaluado, lo mismo ocurre cuando evaluamos números complejos, pero con ellos solo
podemos usar los operadores re_lacionales .NE. y .EQ.
14
• Operadores Lógicos. Un OP,erador lógico solo puede ser usado con
constantes y variables definidas como lógicas e incluso funciones del tipo
lógico, estos operadores tienen un orden de precedencia es decir una
secuencia de ejecución, los operadores del tipo lógico son:
.NOT. Negación Primero en ejecución.
.ANO. Conjunción Segundo en ejecución.
.O R. Disyunción Inclusiva Tercero en ejecución
.XOR. Disyunción Exclusiva Cuarto en ejecución.
. EQV. Equivalencia Cuarto en ejecución .
.NEQV. No Equivalencia Cuarto en ejecución.
Fortran 90 permite también como argumentos números enteros, cabe mencionar que
al encontrarse dos operadores lógicos de igual precedencia, el orden de ejecución va
de izquierda a derecha.
• Operadores Carácter. E.l úriico operador carácter es el de concatenación (//),
los argumentos a usar pueden ser datos, funciones o variables de tipo carácter;
el funcionamiento de este operador consiste en concatenar el valor de dos
variables first//second en una sola variable o cadena de caracteres, por
ejemplo 'JKL' 11 'ABC' produce 'JKLABCD' .
... 1.5 Procedimientos y fUhciones
Los procedimientos son en esencia las categorías dentro de las cuales
encontramos los comandos, proposiciones ó funciones a ser usadas por el
programador para lograr que .el computador realice una tarea específica sea esta el
manejo de archivos, ~ubruti1as, arreglos o matrices, etc. Cabe mencionar que
muchas de las fu~~iooes mJffléricas, trigonométricas, etc. pueden ser usadas como
argumento de otras funciones, facilitando así la tarea del programador; a continuación
pasaremos a vef lqs pr.t~p_ales procedimientos y sus funciones o proposiciones, de
acuerdo a la clasiflt~ación ~-.F'Qrtran 90.
15
1.5.1 Especificación de variables
DATA Asigna valores a variables predefinidas según el orden
establecido, es de utilidad cuando se trabaja con matrices.
Sintaxis
DATA [nombre de variable] 1 valor1, valor2, .. /
nombre de variable define la variable a la cual se van a introducir los valores (valor1,
valor2), que figuran entre barras diagonales, en el caso de que una variable este
dimensionada por ejemplo: sea la variable nombr de dimensión (3) (definido
previamente), deberemos asignar 3 valores, es decir /valor1, valor2, valor3/; ingresado
así la variable nombr ya contiene los tres valores definidos. Podemos también
ingresar valores de tipo carácter a las variables, siempre que hayan sido preparadas
para recibir este tipo de datos; es posible también ingresar valores a variables de tipo
complejo, por ejemplo: sea la variable compleja var1 , para ingresar las partes real e
imaginaria hacemos DATA var1/ (real, imaginaria)/, este tipo de asignación es muy útil,
sobretodo en el caso de trabajo con matrices complejas.
DIMENSION Define la variable como del tipo cadena, es decir podemos usar
esta expresión para definir matrices o arreglos dimensionados.
Sintax~s
DIMENSION {nombre de variable (especificación de
tipo)]
nombre de variable identifica a la variable del tipo cadena; especificación de tipo se
refiere a las dimensiones de la matriz, es decir ~i será un arreglo unidimensional,
bidimensio~. 1r1dimensional, etc. es posible tambiétÍ determinar el tipo de matriz que
deseamos, ~í"Si qüeremo~ almacenar números complejos en la matriz lo indicamos
antes de DIMENSlON con la proposición respectiv,a.
16
CHARACTER Prepara variables para almacenar caracteres, es decir permite
guardar valores como letras ó números en formato caracter. -\.~i
Sin~~is '
CHARACTER (IÓngitud), [nombre de variable]
CHARACTER*Iongitud, [nombre de variable]
CHARACTER (tipo), atributo :: [nombre de variable]
longitud, en todos los casos se refiere a la cantidad de caracteres que se pueden
colocar en la variable; cuando usamos la ultima sintaxis, tipo especificamos los
parámetros LEN, KIND; en cuanto a los atributos que son posibles colocar, estos
pueden ser DIMENSION; EXTERNAL, INTRINSIC, PARAMETER, PRIVATE, PUBLIC,
SAVE ó TARGET, de modo que podemos definir como caracter a variables del tipo
cadena ó dimensionadas; podemos indicar si estas van a ser de uso público o privado, ,
etc. LEN, se refiere a la longitud de la variable y KIND nos indica el modo de
presentación.
Cabe mencionar que como en todas las declaraciones de variables, esta expresión.
debe colocarse en el inicio del programa antes de cualquier instrucción ejecutable,
además no puede especificarse más de una vez a la misma variable.
COMPLEX Especifica que la variable es del tipo complejo, es decir puede
almacenar números de naturaleza compleja {con parte real e
imaginaria).
Sintaxis
~'EX(tipo), [nombre de variable]
COMPLEX((KIND=tipo)),atributo::[nornbres de
variaBles]
tipo, esta :retefmo a la especificación de los argumentos {parte real e imaginaria), es
decir la· extensión del número real, sLes. del tipo 8 o 4, por ejemplo si utilizamos
COMPlEX(4) quiere decir que usaremos números de tipo real{4) para los argumentos.
17
La opción KIND tiene la misma función; atributo se refiere al tipo de declaración
especial asignada para la variable (DIMENSION, EXTERNAL, INTRINSIC,
PARAMETER, PRIVATE, PUBLIC, SAVE o TARGET); como en todas las
declaraciones de tipo de variable esta debe figurar en el inicio de programa antes de
las instrucciones ejecutables.
INTEGER Declara que la variable o variables contendrán datos de
tipo entero.
Sintaxis
INTEGER(tipo) [nombre de variable]
tipo, consiste en un numero real (1 ,2 y 4), el cual definirá el tipo de dato a ingresar, así
INTEGER(1) va desde: -128 hasta +127, en el caso de INTEGER(2) va desde: -
32,768 hasta 32,767, y para INTEGER(4) desde: -2,147'483,648 hasta 2,147'483,647,
por defecto, es decir si omitimos colocar el tipo se asumirá que es del tipo 4.
REAL Declara que las variables especificada~.'."serán del tipo re91, ~s
decir almacenan datos de tipo real.
Sintaxis
REAL [KIND= tipo, atributos] var
tipo indicará la longitud del número real almacenadq, es decir precisión doble (tipo
8) ó precisión simple (tipo 4). Los atributos se especifican separados por comas y
definen al conjunto de variables (var) como EXTERNAL, INTRINSIC, PRIVATE,
PUBLIC, etc. Los nombres de variables pueden hacer referencia incluso a cadenas
ó variables dimensionadas, funciones ó subprogramas.
18
1.5.2 Procedimientos de entrada y salida de datos
READ Permite la lectura de datos desde archivo ó vía teclado.
Sintaxis
READ [unidad, línea de formato, END=nl, ERR=nl]
unidad establece la unidad seleccionada para lectura de registros, un asterisco (*)
indicará ingreso por teclado, la unidad se especifica mediante un número entero; la
línea de formato ordena la lectura de datos usando un orden establecido con el
comando FORMAT, los estamentos adicionales END y ERR, requieren números de
línea (ni) para dirigir la ejecución del programa en caso de encontrar fin de archivo ó
error en ingreso de datos.
WRITE Permite la salida de datos ya sea por pantalla ó por archivo.
Sintaxis
WRITE [unidad, línea de formato, ERR=nl]
unidad establece la unidad seleccionada para escritura de registros, (*) indicará
ingreso por teclado, la unidad se especifica mediante un número entero; la línea de
formato ordena la escritura de datos usando un orden establecido con el com~ndo
FORMAT, el estamento adicional ERR, requiere número de línea (ni) para dirigir la \
ejecución del programa en caso de encontrar error en variable de salida de datos.
OPEN Apertura una unidad para lectura ó escritura, puede tratarse de
un archivo de datos nuevo ó ya existente.
Sintaxis
OPEN [(unidad, FILE='nomarch', STATUS='stat')]
19
unidad es un número entero que caracteriza al archivo ó medio para lectura ó
escritura, nomarch especifica el nombre y ruta del archivo ó medio para lectura ó
escritura, la indicación stat se refiere a una característica propia del medio a emplear
estas pueden ser: OLD (unidad ya existente), NEW (crear una unidad nueva),
REPLACE (reemplaza el archivo existente con otro del mismo nombre), SCRATCH
(crea un archivo temporal y lo elimina cuando la unidad se cierra).
CLOSE Cierra una unidad de lectura ó escritura abierta con OPEN.
Sintaxis
CLOSE [(unidad, STATUS='stat')]
unidad es un número entero que especifica la unidad a cerrar; stat puede tener dos
valores KEEP (mantener el archivo en memoria) ó DELETE (eliminar el archivo una
vez cerrado).
REWIND Retorna la lectura ó escritura al primer registro de un archivo
abierto.
Sintaxis
REWIND [unidad]
El parámetro unidad indica el número entero especificado con el comando OPEN para
la unidad de lectura ó escritura en uso.
PRINT Permite la visualización de datos únicamente por pantalla.
Sintaxis
PRINT [línea de formato, var1, var2, .... ]
La línea de formato indicará la etiqueta de la línea con el formato para salida de datos
por pantalla, el símbolo asterisco(*) puede empléarse en lugar de la línea de formato;
los nombres de las variables (var1, var2, .. ), deben estar separados por comas.
20
1.5.3 Procedimientos para trabajo con matrices y vectores
DOT _PRODUCT Realiza el producto escalar de dos vectores (arreglos
unidimensionales).
Sintaxis
DOT_PRODUCT (vector_a, vector_b)
El vector_a y el vector_b pueden ser cualquier cadena excepto de tipo caracter, el
resultado es un esclarar del mismo tipo que los vectores argumento.
MATMUL Realiza el producto de matrices (valido para arreglos
bidimensionales).
Sintaxis
MATMUL (matriz_a, matriz_b)
La matriz_a y la matriz_b pueden ser cualquier cadena excepto de tiJW':caracter, el
resultado es una matriz del mismo tipo que los vectores argumento.·
SUM 1'~.
Realiza la suma de los elementos de un arre{iro dé-dimensión
arbitraria columna por columna.
Sintaxis
SUM (matriz, DIM='nl')
La matriz puede ser cualquier cadena· excepto de tipo caracter, el resultado es una
matriz de dimensiones ni.
TRANSPOSE Realiza el cálculo de la transpuesta de un arreglos
bidimensional.
Sintaxis
TRANSPOSE (matriz)
La matriz. puede ser cualquier cadena excepto de tipo caracter, el resultado es una
matriz del mismo tipo que la matriz argumento.
21
ABS
1.5.4 Procedimientos para trabajo con valores numéricos
Retorna el valor absoluto del argumento empleado en una
variable del mismo tipo.
Sintaxis
ABS (arg}
El argumento (arg) puede ser cualquier valor entero, real ó complejo, el resultado es
un valor del mismo tipo que el argumento.
MAX Retorna el máximo valor entre los argumentos introducidos.
Sintaxis
MAX (a1, a2, a3 ...... }
Los argumentos a1, a2, a3, ... deben ser del mismo tipo, excepto del tipo caracter, el
resultado será un valor del mismo tipo que los argumentos indicados.
MIN Retorna el mínimo valor entre los argumentos introducidos.
Sintaxis
MfN (a1, a2, a3 ...... }
Los argumentos a 1, a2, a3, ... deben ser del mismo tipo, excepto del tipo caracter, el
resultado será un valor del mismo tipo que los argumentos indicados.
CONJG Retorna el complejo conjugado de un argumento complejo.
Sinta}(is
CONJG (z}
El argumento z, debe ser un número complejo de tipo COMPLEX(4) ó
COMPLEX(8), el resultado será un complejo del mismo tipo.
cos
1.5.5 Procedimientos para tra&ljbcon valores trigonométricos,
exponenciales y logarítrrite!6s
Retorna el coseno del argumento en radianes.
Sintaxis
COS (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
SIN Retorna el seno del argumento en radianes.
Sintaxis
SIN (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
TAN Retorna la tangente del argumento en radianes.
Sintaxis
TAN (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
COTAN Retorna la cotangente del argumento en radianes.
Sintaxis
COTAN(arg)
El arqumf3nto (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
COSD R€torna el coseno en grados sexagesimales de un argumento
,:féal.
$Jo taXis
COSO (arg)
23
El argumento (arg), debe ser un real de tipo REAL(4); el resultado será un valor del
mismo tipo que el argumento indicado.
SINO Retorna el seno en grados sexagesimales de un argumento
real.
Sintaxis
SINO (arg)
El argumento (arg), debe ser un real de tipo REAL(4); el resultado será un valor del
mismo tipo que el argumento indicado.
TANO Retorna la tangente en grados sexagesimales de un
argumento real.
Sintaxis
TANO (arg)
El argumento (arg), debe ser un real de tipo REAL(4); el resultado será un valor del
mismo tipo que el argumento indicado.
COSH Retorna el coseno hiperbólico en radianes de un argumento
real.
Sintaxis
COSH (arg)
El argumento (arg), debe ser un real de tipo REAL(4); el resultado será un valor del
mismo tipo que el argumento indicado.
SINH Retorna el seno hiperbólico en radianes de un argumento
real.
Sintaxis
SINH (arg)
.i El argumento (arg), debe ser un real de tipo REAL(4); e~-rz~ultado será un valor del
mismo tipo que el argumento indicado.
24
TANH Retorna la tangente hiperbólica en radianes de un argumento
real.
Sintaxis
TANH (arg)
El argumento (arg}, debe ser un real de tipo REAL(4); el resultado será un valor del
mismo tipo que el argumento indicado.
ACOS Retorna el arco coseno del argumento en radianes en el
intervalo [O, 1t].
Sintaxis
ACOS (arg)
El argumento (arg), debe ser real con largl s 1; el resultado será un valor del mismo
tipo que el argumento indicado.
ACOSO Retorna el arco coseno del argumento en grados
sexagesimales en el intervalo [O, 180].
Sintaxis
ACOSO (arg)
El argumento (arg), debe ser real con largl :S 1; el resultado será un valor del mismo
tipo que el argumento indicado.
A SIN Retorna el arco seno del argumento en radianes en el
intervalo [-7t/2, 7t/2].
Sintaxis- ,,,
ASIN (arg)
El argumento (arg), debe ser real con ¡argl s 1; el resultado será un valor del mismo
tipo que el argumento indicado.
25
ASIND Retorna el arco seno del argumento en grados sexagesimales
en el intervalo [-90, 90].
Sintaxis
ASIND (arg)
El argumento (arg}, debe ser real con ¡argl s 1; el resultado será un valor del mismo
tipo que el argumento indicado.
ATAN Retorna el arco tangente del argumento en radianes en el
intervalo [-7t/2, 7t/2].
Sintaxis
ATAN (arg)
El argumento (arg}, debe ser real; el resultado será un valor del mismo tipo que el
argumento indicado.
ATAND Retorna el arco tangente del argumento en grados
sexagesimales en el intervalo [-90, 90].
Sinta~is
ATAND (arg)
El argumento (arg}, debe ser real; el resultado será un valor del mismo tipo que el
argumento indicado.
ecos Retorna el coseno en radianes de un valor complejo.
Sjntaxis
ecos (arg)
El argumento (é:lrg}, debe ser un complejo de tipo COMPLEX(4); el resultado será un
valor del mismo tipo que el argumento indicado.
CSIN Retdrna el senq er radianes de un valor complejo.
Sintaxis
CSIN (arg)
26
El argumento (arg), debe ser un complejo de tipo COMPLEX(4); el resultado será un
valor del mismo tipo que el argumento indicado.
CEXP Retorna el valor complejo de earg.
Sintaxis
CEXP {arg)
El argumento (arg), debe ser un complejo de tipo COMPLEX(4); el resultado será un
valor del mismo tipo que el argumento indicado.
CLOG Retorna el logaritmo natural de un complejo es decir ln(arg).
Sintaxis
CLOG {arg)
El argumento (arg), debe ser un complejo de tipo COMPLEX(4); el resultado será un
valor del mismo tipo que el argumento indicado.
CSQRT Retorna la raiz de un valor complejo.
Sintaxis
CSQRT {arg)
El argumento (arg), debe ser un complejo de tipo COMPLEX(4); el resultado será un
valor del mismo tipo que el argumento indicado.
EXP Re~orna el valor de earg.
~~taxis \
E~~(arg)
El argument9. (;;Jrg), deb~"ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
LOG Retorna el valor del logaritmo natural del argumento.
Sin~s
LOG {arg)
27
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
LOG10 Retorna el valor del logaritmo en base 1 O del argumento.
Sintaxis
LOG10 (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
SQRT Retorna el valor de la raíz cuadrada del argumento.
Sintaxis
SQRT (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
ALOG Retorna el antilogaritmo natural del argumento.
Sintaxis
ALOG (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
ALOG10 Retorna el antilogaritmo en base 1 O del argumento.
Sintaxis
ALOG10 (arg)
El argumento (arg), debe ser real, el resultado será un valor del mismo tipo que el
argumento indicado.
28
1.5.6 Funciones de definición y llamado de programas
CALL Proposición cuya función es la de llamar a una subrutina para su
ejecución.
Sintaxis
CALL (nombre de la subrutina) [arg1 ,arg2, ... ]
El nombre de la subrutina corresponde a la que queremos ejecutar y los argumentos
arg son los nombres de las variables, constantes ó parámetros que necesita la
subrutina, dichos parámetros pueden ser calculados fuera de la subrutina con nombres
diferentes y posteriormente ser usados por ella para producir nuevos datos ó
presentarlos de acuerdo a un formato determinado.
COMMON Crea una lista de parámetros y variables que pueden ser usadas
por más de una subrutina.
Sintaxis
COMMON [nombre de variables]
El nombre de variables debe ir ~eparado por comas, en cada subrutina debe
mencionarse el COMMON con las variables en la misma secuencia.
FUNCTION ldeptifica una función, es decir proporciona el nombre, de la
f~nción, las variables utilizapas nombres y tipos (real, complejo ó
entero); básicamente el programa utiliza la función definida tal y
como utiliza las funciones ya existentes como por ejemplo seno y
coseno, de modo que el usuario puede definir una operación a
realizar con las variables ya declaradas y utilizarlo dentro del
programa cuantas veces lo requiera.
Sintaxis
(tipo espec) FUNCTION [nombre] [variables a emplear]
29'
El tipo espec, se refiere al tipo de especificación de la función es decir si es real,
entera ó compleja; el nombre se refiere al que identifica la función; variables a emplear
designa separados por comas los nombres de las variables que utiliza la función.
Cabe mencionar que para que estas variables sean reconocidas por la función
deben estar definidas en el COMMON del programa principal y en el mismo orden, de
lo contrario se pueden producir resultados incorrectos, al finalizar las instrucciones
definidas en la función se finaliza con el comando RETURN y luego END en la línea
final
PROGRAM Identifica una unidad de programa proporcionándole un nombre.
Sintaxis
PROGRAM [nombre del programa]
El nombre del programa debe ser dado usando letras o combinaciones de números y
letras, no se pueden utilizar espacios en blanco ni caracteres especiales a excepción
del bajo guión ( _ ).
Esta declaración debe ser ubicada siempre al inicio del programa y este nombre no
debe ser usado por algún subprograma, subrutina ó función; asimismo, no debe ser
duplicado ó declarado en algún procedimiento EXTERNAL
RETURN Retorna el control del programa a la unidad que realizó el
llamado.
Sintaxis
RETURN [caracter]
El carácter es una posición de un r~torno alternante, definido en los argumentos de
una subrutina. RETURN, termina lq ejecución de una subrutina o función, el
estamento END, en una fu~(fión ó sybrutina tiene el mismo ef~to que RETURN, el
carácter que se puede colo<;ªr luego de RETURN tiene la función de devolver el
control a una proposición ó estamento esp~cificQ.
30
SUBROUTINE Identifica una unidad de programa como una subrutina, dándole
un nombre e identificando sus argumentos.
Sintaxis
SUBROUTINE [nombre de la subrutina] [variables a
utilizar]
El nombre de la subrutina, no debe ser usado nuevamente en otras proposiciones de
declaración tales como DATA, EQUIVALENCE, INTRINSIC, SAVE, COMMON ó
AUTOMATIC. Los nombres de las variables a usar deben estar separados por comas.
Finalizada la subrutina debemos usar el estamento END; dentro de una subrutina no
pueden colocarse los estamentos BLOCK DATA, FUNCTION, PROGRAM ó
SUBROUTINE. Al igual que el la proposición FUNCTION, los nombres de variables
deben ser colocados en orden; si no se especifican las variables a usar se
sobreentiende que estas deberán estar presentes en el programa principal y ser de
uso común, es decir deberán estar definidas con el estamento COMMON.
Para acceder a una subrutina será necesario el llamado desde el programa principal
haciendo uso de CALL, definido con anterioridad.
CASE
1.5.7 Procedimientos de control de programa (ciclos y transferencias)
La proposición case nos permite hacer un testeo de una
determinada variable ó expresión, ejecutando una serie de
estamentos dependiendo del valor evaluado.
Sintaxis
SELECT CASE (variable)
CASE_( condición 1)
[proposiciones a ser ejecutadas de ser verdadera]
CASE (condición 2)
[proposiciones · a ser ejecutadas de ser verdadera]
31
CASE DEFAUL T
[línea ó líneas a ser ejecutadas de ser falsas todas las
anteriores]
ENDSELECT
La variable a ser evaluada puede ser entera, real, compleja ó carácter; se recuerda
que al finalizar cada expresión CASE debe colocarse END SELECT.
Es posible evaluar el valor de la variable dentro de un rango, así si deseo evaluar el
valor y ver si se encuentra entre O y 10, entonces colocare (0:10) como condición,
ahora si por ejemplo deseara evaluar si mi variable guarda la letra S mayúsculas,
entonces colocare ('S') como condición, así el bloque se ejecutará si el valor
corresponde y no lo ejecutará si no corresponde. Supóngase ahora que se desea ver
si el valor almacenado es menor ó igual que un número determinado sea 1 O por
ejemplo entonces colocare como condición (:10), si quiero ver si es mayor o igual
pondré (10:), esto no se puede hacer si evaluamos valores carácter o lógicos, en el
caso de que se desee evaluar letras estas deberán estar separadas por comas y cada
una encerrada entre apostrofes, así como condición puedo colocar, por ejemplo: (' f ' , '
g' '' h ').
Si ninguna de las condiciones es satisfecha se ejecutara las ordenes colocadas
luego de CASE DEFAUL T, si se omite esta línea, ocurrirá la terminación de la
evaluación.
DO Permite ejecutar operaciones, comandos y sentencias en ciclos
repetitivos, el numero de los cuales dependerá de los valores de
inicio, parada e incremento que asignemos
Sintaxis
(Nombre DO): DO [etiq] [var] = [inicio],[alto],[incremente}? ~~· -.~'
Lista de proposiciones
END DO (Nombre DO)
32
El nombre DO, es opcional si se elige debe colocarse también luego de la proposición
END DO, si se omite no causa dificultades; sin embargo, es conveniente usarlo
cuando trabajamos con programas extensos a modo de identificador; la variable (var)
a usar como contador deberá ser de tipo entero, el valor de inicio y alto también
deberán ser de tipo entero, corresponde a los valore de inicio y termino de iteración; el
incremento puede ser un entero positivo ó negativo dependiendo de la aplicación.
Adicionalmente es posible definir una etiqueta (etiq), es decir indicar una línea en el
programa a la que se dirige el control luego de finalizado el ciclo DO, en dicha línea
deberá colocarse la proposición CONTINUE, esto indica que luego de este punto el
programa continua su ejecución.
Dentro de un ciclo DO pueden colocarse otros ciclos DO teniendo en cuenta que la
terminación de los mismos se ubica en el interior del ciclo inicial, no puede terminar
fuera, también pueden colocarse proposiciones IF, ELSE IF y DO WHILE, así como
estamentos SELECT CASE, es posible también llamar funciones y subprogramas.
, Para romper el ciclo DO antes de su terminación, será necesario colocar la proposición
GblO, la cual redirige el control a una determinada línea, la proposición EXIT,
continuando el programa a partir de ahí o podemos usar la proposición CYCL.,E la cual
nos lleva de vuelta al inicio del ciclo DO especificado por su nombre. (Brian, 1994).
DOWHILE Indica la ejecución de un bloque de instrucciones repetitivamente
mientras cierta condición lógica arroje el valor de verdadero.
Sintaxis
(nombre) : DO [etiqueta] WHILE [expresión lógica]
Lista de proposiciones a .realizar si es verdadera
END DO (nombre)
·.·':Se le pueden aplicar las mismas reglas que para los ciclos DO. En cuanto a ~.
expresión lógica a ser evaluada diremos simplemente que estas hacen uso de los
operadores lógicos antes definidos, así es posible evaluar valores de variables de ~·· . ,_.:o:.'".•::o-::or
tipo, por ejemplo si se desea que cierto ciclo se ejecute mientras el valor de una
33
variable sea menor ó igual que 1 O, en cuanto el valor sea mayor a 1 O el ciclo
terminara.
GOTO Este comando transfiere el control de ejecución del programa a
cierta línea o etiqueta que haya sido especificada.
Sintaxis
GOTO (etiqueta)
La etiqueta nos iridica el número de línea de programa a la cual se saltara por decirlo
de alguna manera, para continuar con la ejecución del programa.
En cuanto a las condiciones para poder hacer uso de GOTO, diremos que no se
puede transferir el control a un bloque DO, IF ELSE IF, fuera del ciclo en ejecución.
IF Condiciona la ejecución de un grupo de instrucciones al valor de
arrojado por una comparación, es decir verdadero ó falso.
Sintaxis
(nombre bloq): IF (expresión 1) THEN
{bloque de instrucciones 1}
EISE IF (expresión 2) THEN
{bloque de instrucciones 2}
El.SE
{bloque de instrucciones 3}
END IF (nombre bloq)
34
nombre bloq, se refiere a un nombre que es opcionalmente colocado para que
podamos identificar al grupo IF, es útil cuando se trabaja en programas extensos; las
expresiones 1 y 2, se refieren a las evaluaciones que arrojan un valor de verdadero o
falso, por ejemplo si a = 2 y b = 1 entonces al decir a > b nos arrojara verdadero y se
ejecutara el bloque de instrucciones que le siguen a la expresión THEN y al finalizar
termina la evaluación y se dirige el control a la línea que le sigue a END IF.
En cuanto a ELSE IF, esta indica que en caso de ser falsa la expresión 1, se deberá
evaluar la expresión 2 y de ser verdadera se ejecutara el bloque de instrucciones 2 y
finaliza la evaluación, en caso de que no lo sea pasa por alto este bloque, continua
entonces con la siguiente línea si se da el caso de que todas las expresiones
anteriormente evaluadas den por resultado falso se ejecutaran las instrucciones del
bloque 3, finalizado este se termina la evaluación y se dirige el control a la linea
posterior a END IF.
Cabe mencionar que no es obligatoria la inclusión de ELSE IF ó ELSE, estas se
colocan de acuerdo a nuestras necesidades, al omitir ELSE, se termina la evaluación
de ser falsa la expresión ó expresiones correspondientes. No hay limitaciones a
considerar para poder incluir expresiones ELSE IF dentro de IF, no obstante solo
puede haber un ELSE por cada IF que usemos, para finalizar siempre debe colocarse
END IF; si se definió un nombre este deberá colocarse inmediatamente después.
(Brian, 1994).
Muchas veces es útil usar lo que se conoce como IF lógico el cual funciona de manera
similar con la diferencia que no hace falta colocar END IF, su tarea es evaluar el valor
de una expresión lógica e inmediatamente ejecutar alguna tarea, veamos la sintaxis:
IF (ex_presión 1) {instrucción a ejecutar}
Consta de una línea, la instrucción que podemos ejecutar puede ser cualqHi'~
menos CASE, SELECT CASE, DO, END DO, DO WHILE, WHERE, END WHERE, IF,
END IF, END, END FUNCTION ó END SUBOUTINE.
WHERE Ejecuta cierto conjunto de operaciones de asignación mientras la
expresión evaluada sea verdadera.
35
Sintaxis
WHERE (expresión 1)
{proposiciones de asignación 1}
ELSEWHERE
- {proposiciones de asignación 2}
ENDWHERE
expresión 1 se refiere a la evaluación que arrojara un valor de verdadero ó falso; de
ser verdadero tendremos que se realizaran las proposiciones de asignación 1 y pasara
a la línea posterior a END WHERE, de lo contrario pasara a la siguiente línea interior,
si se colocó ELSEWHERE se ejecutarán las proposiciones de asignación 2 y se
terminará colocando el control en la línea posterior a END WHERE. Colocar
ELSEWHERE no es obligatorio, dependerá de nuestras necesidades.
PAUSE Suspende temporalmente la ejecución del programa, permitiendo
la ejecución de comandos del sistema operativo durante la
suspensión.
Sintaxis
PAUSE (mensaje)
El mensaje pueden ser caracteres o números enteros de O a 99,999; el control
retornará al oprimir la tecla ENTER.
STOP Termina la ejecución del programa.
Sintaxis
STOP [mensaje]
Colocar Stop para terminar un programa no es obligatorio, en cuanto al mensaje es
opcional y pueden ser un conjunto de letras ó números entre O y 99,999, si se omite
este mensaje, por defecto el sistema mostrara:
STÓP - Program terminated
36
1.5.8 Procedimientos de formato Entrada/Salida
FORMAl Carga el formato para ingreso y salida de datos, ya sea por
archivo ó por pantalla.
Sintaxis
FORMAl [descriptores]
Los descriptores definen la forma en que se presentan ó extraen los datos de las
variables, existen dos tipos los de edición y los de entrada y salida de datos a
continuación se muestra una tabla para los más utilizados en ambos casos.
Descriptor de
entrada y salida
Tabla (1.1) Descriptores de ingreso y salida.
Tipo de variable
lw[.m] Valores enteros
Bw[.m]
Ow[.m]
Zw[.m]
Fw.d
Ew.d[Ee]
ENw.d[Ee]
ESw.d[Ee]
Gw.d[Ee]
Dw.d
Lw
A[w]
Datos binarios
Valores octales
Valores hexadecimales
Valores reales
Valores reales con exponentes
Valores reales con exponentes en notación de ingeniería
Valores reales en notación científica
Valores reales en rango extendido
Valores reales de doble precisión
Datos de tipo lógico
Datos de tipo caracter
(w) representa el ancho de campo es decir el número total de cifras que contendrá~
valor de variable representado; (m) indica el número de ceros a la izquierda del punto
decimal (solo para valores enteros, octales y hexadecimales; (d) especifica el número
de cifras a la derecha del punto decimal y (e) representa el exponente.
37
Tabla (1.2) Descriptores de edición.
Descriptor de Efecto de edición ·
edición
nx Espacios en blanco
1 Envía la posición de escritura a la línea siguiente
$ Indica posición de cursor para entrada de registro
' ' (apostrofes) Permite adición de texto en salida de escritura
1.5.9 Funciones de conversión de tipo
DBLE Convierte el argumento establecido en un número real de
precisión doble.
Sintaxis
DBLE (arg)
El valor en arg puede ser entero, real ó complejo, el resultado será un número real
de tipo REAL(8).
FLOAT Convierte el argumento establecido en un número real de
precisión simple.
Sintaxis
FLOAT (arg)
El valor en arg debe ser entero, el resultado será un número real de tipo REAL(4).
IFIX Convierte el argumento establecido en un número entero de
precisión simple.
Sintaxis
IFIX (arg)
El valor en arg debe ser real tipo REAL(4), el resultado será un número entero de
tipo INTEGER(4).
38
NINT Convierte el argumento establecido en un número entero de
clase arbitraria, en este caso se emplea el redondeo.
Sintaxis
NINT (arg, clase)
El valor en arg debe ser real de tipo REAL(4}, el resultado será un número entero
de clase INTEGER(1), INTEGER(2) ó INTEGER(3).
REAL Convierte el argumento establecido en un número real de tipo
arbitrario.
Sintaxis
REAL (arg, tipo)
El valor en arg puede ser entero, real ó complejo, el resultado será un número real
de tipo REAL(4) ó REAL(8).
CMPLX Convierte el argumento establecido en un número real de tipo
arbitrario.
Sintaxis
CMPLX (X, Y, tipo)
El valor en X e Y puede ser entero ó real, el resultado será un número complejo de
tipo COMPLEX(4) ó COMPLEX(8).
1.6 Algoritmos y diagramas de flujo
En el proceso de resolución de problemas, es posible distinguir varias fases
distintas. La primera fase es la formulación. Al formular un modelo matemático de una
situación física, el científico debe tomar en cuenta de antemano que espera resolver
su problema en un computador, indicando el conjunto de datos y variables a utilizar.
Luego deben diseñarse métodos numéricos, junto con un análisis de error, @0 ,. caso se empleará un algoritmo que es un conjunto de procedimientos mate~.
completo y carente de ambigüedad que lleva a la solución del problema planteado.
39
En la fase de programación se debe transformar el algoritmo en un conjunto de
instrucciones detalladas y sin ambigüedad; en este punto se hace necesario ampliar el
conjunto de comandos, sentencias e instrucciones en Fortran para lograr la
elaboración de rutinas cíclicas y subprogramas que permitan individualizar las etapas
para la solución de un problema.
1.6.1 Algoritmos
Un algoritmo es una serie lógica de pasos ó procedimientos consecutivos que
guarda independencia respecto al lenguaje de programación a emplear. Su función es
definir la secuencia de ocurrencia de eventos a ser ejecutados por el computador. Una
vez creado el algoritmo para determinada tarea el programador deberá traducir estas
instrucciones usando algún lenguaje de manera que puedan ser interpretadas por el
ordenador.
Por ejemplo, supongamos que se desea ejecutar mediante el computador una
tarea repetitiva que consiste en ingresar datos desde teclado, luego efectuar una
operación matemática de adición de estos valores e imprimir los resultados en
pantalla, por impresora ó almacenarlos en un disco, según la decisión del usuario; el
algoritmo para este proceso seria:
(1) Ingreso de los valores a sumar [A y 8].
(2) Realizar la operación de adición [A+B], almacenar el resultado en C
(3) Ingreso de la opción de salida de resultados (1, 2, ó 3), en D
(4) Evaluación del valor almacenado en D
Si D = 1, realizar el paso (5)
Si D = 2, realizar el paso (6)
Si D = 3, realizar el paso (7)
(5) Imprimir resultados por pantalla
(6) Imprimir resultados en impresora predeterminada
(7) Guardar datos en archivo
1.6.2 Diagramas de flujo
Un diagrama de flujo es una representación gráfica de los pasos ó
procedimientos a realizar por el computador a fin de cumplir una tarea, al igual que
4os algoritmos este no depende del tipo de codificación que se empleará
40
Los diagramas de flujo utilizan una terminología simbólica tal como se
muestra a continuación:
( ______ )
[]
Inicio ó termino de un programa.
Asignación de información a una variable, realización de
proceso.
Decisión IF- THEN.
Ingreso de datos por teclado.
Ingreso de datos por archivo.
Bloque DO- END DO.
Llamada a proceso predefinido.
Almacenamiento interno de información.
o o
Salida de datos por pantalla.
Salida de datos por archivo.
Salida de datos por impresora.
Conector interno (dentro de pagina}.
Conector externo (fuera de página}.
42
Empleando la simbología mostrada el algoritmo ejemplo indicado en la sección
1.6.1, se puede construir en el siguiente diagrama de flujo:
INICIO
A,B C=A+B
D
N
e
N
e e
43
Ejemplo:
Usando un programa en Fortran calcule el seno hiperbólico de rt/2 si se sabe que este
se puede representar mediante la serie infinita:
oo X 2n+l
senh(x)= I-n=o (2n + 1)!
En este caso se puede considerar como infinito un número lo suficientemente grande
como para que los términos generados posteriormente sean despreciables; por ello,
solicitamos como máximo un error porcentual relativo Es % de 3x1 o-2%; el error
porcentual alcanzado Ea% está dado por la ecuación:
Ea% = X actual -X previa xl 00%
X actual
Donde: Xactual se refiere al valor que es resultado de la iteración actual.
Xprevia se refiere al valor resultado de una iteración inmediatamente anterior.
Se obtiene un resultado; es decir, el programa se detiene cuando se cumple la
condición de convergencia:
Ea% S Es%
Los resultados computacionales según estas consideraciones fueron:
PROGRAMA PARA CALCULAR EL SENO HIPERBÓLICO MEDIANTE UNA SERIE INFINITA INGRESE EL VALOR A EVALUAR EN RAD Y ES% 1.5707 0.03 RESULTADOS N X**(2*N+1) (2*N+1) ! SUMA
1 l. 5707 1.0000 l. 5707 2 5.4458 6.0000 2.4783 3 15.0060 120.0000 2.6034 4 38.5919 5040.0000 2. 6110 5 96.7807 362880.0000 2. 6113
RESULTADO SENOH (1.5707) 2. 6113 ERROR % 0.0102
44
Ea%
100.000 36.623
4.803 0.2933 0.0102
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
PROGRAM SENOHYP
REAL(4)X,EA,ES,F,SUMA,D
WRITE(*,*) 'PROGRAMA PARA CALCULAR EL SENO HIPERBOLICO' WRITE(*,*) 'MEDIANTE UNA SERIE INFINITA' WRITE(*,*) 'INGRESE EL VALOR A EVALUAR EN RAD Y ES%' READ(*,*)X,ES WRITE(*,*)' RESULTADOS' WRITE(*,*)' N X** (2*N+1) (2*N+1)! SUMA Ea%' !CALCULO DE LA SERIE SUMA=O N=O
10 D=X** (2*N+1) F=1.0
19 20 21
DO I=1, (2*N+1) F=F*I END DO
SUMA=SUMA+D/F EA=(ABS((SUMA-(SUMA-D/F))/SUMA))*100 WRITE(*,19)N,D,F,SUMA,EA
IF(EA.LE.ES)THEN WRITE(*,20)X,SUMA WRITE(*,21)EA ELSE N=N+1 GOTO 10 END IF
FORMAT(1X,I2,1X,4(F17.4,1X)) FORMAT(1X, 'RESULTADO: SENOH (',F9.4, ') FORMAT(lX, 'ERROR%= ',F9.4) END
45
', F9. 4)
Ejemplo:
Elabore un ¡:>rograma en Fortran que Permita evaluar las funciones siguientes:
a) y= 5x2 + 6x+ 7, en el intervalo: [-5, 5], para total N= 20 divisiones.
b) y= cos(x2) +sen(x3
), en el intervalo: [-5, 5], para total N= 20 div.
e) z = 5xy + 6x3 + 0.6, en intervalo: y E [-1, 1] y x E [-1, 1], para N= 8 div.
El Programa debe presentar los resultados por pantalla y por archivo, permitiendo
exportar los datos a Excel u otro graficador y elaborar la grafica correspondiente.
Los resultados computacionales obtenidos para la parte (a) fueron:
PROGRAMA PARA EVALUAR PUNTOS EN UNA FUNCION
INGRESE EL TIPO DE FUNCION A EVALUAR (1) BIDIMENSIONAL (2) TRIDIMENSIONAL 1 INGRESE LOS LIMITES DE LA FUNCION XO Y Xf -5 5 INGRESE NUMERO DE INTERVALOS 20
RESULTADOS H = 0.50000000
N X y
1 -5.0000 102.0000 2 -4.5000 81.2500 3 -4.0000 63.0000 4 -3.5000 47.2500 5 -3.0000 34.0000 6 -2.5000 23.2500 7 -2.0000 15.0000 8 -1.5000 9.2500 9 -1.0000 6.0000
10 -0.5000 5.2500 11 0.0000 7.0000 12 0.5000 11.2500 13 1.0000 18.0000 14 1.5000 27.2500 15 2.0000 39.0000 16 2.5000 53.2500 17 3.0000 70.0000 18 3.5000 89.2500 19 4.0000 111.0000 20 4.5000 135.2500 21 5.0000 162.0000
46
Gráfica:
------------------~1~ ~.-----------------------!
------------------~1ro-·~: ------------------+---!
-------------------~Mo,------------------f-----1
uo--;--------------~-------
\.----------------loo---¡----------------;1-
------'·---------------so~-------------J•-----------:
-------'~o..------------60-:----------/-------------
' --·-----·------- -----------------40-¡----·---- --------------·--¡
------------ -----20-;-------- ------·
-6 -4 -2 o 2 4
Los resultados computacionales obtenidos para la parte (b) fueron:
PROGRAMA PARA EVALUAR PUNTOS EN UNA FUNCION
INGRESE EL TIPO DE FUNCION A EVALUAR (1) BIDIMENSIONAL (2) TRIDIMENSIONAL 1 INGRESE LOS LIMITES DE LA FUNCION XO Y Xf -5 5 INGRESE NUMERO DE INTERVALOS 20 RESULTADOS H = 0.50000000
N X y
1 -5.0000 l. 6072 2 -4.5000 0.1883 3 -4.0000 -1.8777 4 -3.5000 1.8449 5 -3.0000 -l. 8675 6 -2.5000 0.9166 7 -2.0000 -1.6430 8 -1.5000 -0.3969 9 -1.0000 -0.3012
10 -0.5000 0.844'2 11 0.0000 1.0000 12 0.5000 l. 0936 13 1.0000 1.3818 14 1.5000 -0.8595 15 2.0000 0.3357 16 2.5000 1.0823 17 3.0000 0.0452 18 3.5000 0.0559 19 4.0000 -0.0376 20 4.5000 0.1507 21 5.0000 0.3752
47
6
Gráfica:
-------------------2-o--5-, -----------------
l-¡--------------1
-~---- -·-··--
----~---------~ i -----------! 1
6
·---- .... ·-··.-··-·····---------··-····· --·······-·-- ··--·~z-:5---L -· ---- ··--·--·----------·--·--·-··- ··-·-- ---···--- ---
Los resultados computacionales obtenidos para la parte (e) fueron:
PROGRAMA PARA EVALUAR PUNTOS EN UNA FUNCION
INGRESE EL TIPO DE FUNCION A EVALUAR (1) BIDIMENSIONAL (2) TRIDIMENSIONAL 2
INGRESE LOS LIMITES DE LA FUNCION EN -1 1
INGRESE LOS LIMITES DE LA FUNCION EN -1 1
INGRESE NUMERO DE INTERVALOS EN X 8
INGRESE NUMERO DE INTERVALOS EN y
8
RESULTADOS
X, xo y
Y, YO y
HX 0.25000000 HY = 0.25000000
-l. 000 -0.750 -0.500 -0.250 0.000 0.250 -l. 000 -0.400 l. 819 2.350 l. 756 0.600 -0.556 -0.750 -l. 650 0.881 l. 725 l. 444 0.600 -0.244 -0.500 -2.900 -0.056 1.100 1.131 0.600 0.069 -0.250 -4.150 -0.994 0.475 0.819 0.600 0.381
0.000 -5.400 -l. 931 -0.150 0.506 0.600 0.694 0.250 -6.650 -2.869 -0.775 0.194 0.600 l. 006 0.500 -7.900 -3.806 -1.400 -o .119 0.600 1.319 0.750 -9.150 -4.744 -2.025 -0.431 0.600 l. 631 l. 000 -10.400 -5.681 -2.650 -0.744 0.600 l. 944
48
Xf
Yf
0.500 -1.150 -0.525
0.100 0.725 1.350 l. 975 2.600 3.225 3.850
0.750 -0.619
0.319 1.256 2.194: 3 .13<1 4.069 5.006 5.944 6.881
l. 000 l. 600 2.850 4.100 5.350 6,600 7.850 9.100
10.350 11.600
Gráfica:
15
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
PROGRAM FUNCION
REAL(4)A 1,B 1 C1 D1 X1 Y1 XK(110) 1 YK(110) 1 ZK(110 1 110) 1 H1 1 H2 1 H
10 WRITE(* 1 *) 'PROGRAMA PARA EVALUAR PUNTOS EN UNA FUNCION'
WRITE ( * 1 *) ' ' WRITE(* 1 *) 'INGRESE EL TIPO DE FUNCIONA EVALUAR ' WRITE(* 1 *)' (1) BIDIMENSIONAL ' WRITE(* 1 *)' (2) TRIDIMENSIONAL' READ(* 1 *)NT IF (NT.EQ.1)THEN WRITE(* 1 *)' INGRESE LOS LIMITES DE LA FUNCION XO Y Xf' READ(* 1 *)A1 B WRITE(* 1 *)' INGRESE NUMERO DE INTERVALOS' READ(* 1 *)N
H=(B-A)/N OPEN (1 1 FILE='BID.TXT') WRITE(* 1 *)' RESULTADOS' WRITE(1 1 *)' RESULTADOS' WRITE(* 1 *)' H = 1
1 H WRITE(* 1 *)' N X WRITE(1 1 *)' N X DO I=1 1 N+1 X=A+(I-1)*H Y=F(X)
49
Y' Y'
WRITE(*,100)I,X,Y WRITE(1,100)I,X,Y END DO ELSE IF (NT.EQ.2)THEN WRITE(*,*)' INGRESE LOS LIMITES DE LA FUNCIONEN X,
XO Y Xf' READ(*,*)A,B
WRITE(*,*)' INGRESE LOS LIMITES DE LA FUNCIONEN Y, YO Y Yf'
READ(*,*)C,D WRITE(*,*)' INGRESE NUMERO DE INTERVALOS EN X' READ(*,*)N1 WRITE(*,*)' INGRESE NUMERO DE INTERVALOS EN Y' READ(*,*)N2
H1=(B-A)/N1 H2=(D-C)/N2 OPEN (1,FILE='TRI.TXT') WRITE(*,*)' RESULTADOS' WRITE(1,*)' RESULTADOS' WRITE ( *, *) ' HX = ' , H1, ' HY ' , H2
DO I=1,N1+1 XK(I)=A+(I-1)*H1
DO J=1,N2+1 YK(J)=C+(J-1)*H2 ZK(I,J}=Z(XK(I),YK(J)) END DO
END DO
WRITE(*,150) (XK(I) ,I=1,N1+1) WRITE(1,150) (XK(I) ,I=1,N1+1)
DO J=1, N2+1 WRITE(1,200)YK(J), (ZK(I,J) ,I=1,N1+1) WRITE(*,200)YK(J), (ZK(I,J) ,I=1,N1+1) END DO
ELSE GOTO 10 END IF
100 FORMAT (1X,I3,1X,F9.4,1X,F9.4) 150 FORMAT (8X,100(F7.3,1X}) 200 FORMAT (1X,F6.3,1X,100(F7.3,1X))
END
FUNCTION F(X) F=cos(x**2)+sin(x**3) RETURN END
FUNCTION Z(X,Y) Z=5*X*Y+6*X**3+0.6 RETURN END
50
1.7 Problemas de aplicación
á Empleando las proposiciones y funciones de entrada y salida, numéricas y
trigonométricas, construir un programa que permita efectuar lo siguiente:
Ingresar por archivo y teclado los elementos de dos matrices cuadradas de orden 2 (A
y B), definidas tal como se muestra a continuación:
Donde:
A = leos( a) sen(b )1 tan( e) cot( d)
Para el caso ( 1)
y er
B= log(g)
a = 45°, b = 30°, e = 60°, d = 53°, f = 5.0, g = 3.0, h = 4.0
Para el caso (2)
a= 30°, b = 53°, e= 300°, d = 30°, f= 10.0, g = 0.5, h = 0.7
Calcular la suma, el producto y la transpuesta de la matriz resultado.
Generar un archivo de datos con los valores de la matriz resultado.
Permitir una visualización por pantalla de las tres matrices.
b. Se tienen N = 50 tipos de nutrientes distintos, los cuales se pueden incluir en
un número máximo de K = 4 por vez dentro de la dieta diaria. Se desea
determinar cuántas combinaciones son posibles, para la presentación de un
cronograma nutricional; para resolver este problema elaborar un programa en
Fortran y emplee la siguiente ecuación:
(N) N! K -K!(N-K)!
c. Empleando las proposiciones de definición, control y formato, elaporar un
programa que permita realizar lo siguiente:
51
Ingresar por archivo los datos de velocidad vs. tiempo mostrado en la siguiente tabla:
Tabla (1.3) Velocidad vs. Tiempo para un móvil con MRUA.
-·-----Tiempo 0.0 0.5 1.0 1.5 2.0 2.5 3.0
(s) -----~
Velocidad 5.0 10.0 15.0 20.0 25.0 30.0 35.0
(m/s) --··--------·-----·
• Realizar el cálculo de la aceleración y velocidad inicial del móvil.
• Calcular el espacio recorrido por el móvil.
• Permitir una visualización por pantalla de los resultados.
d. Elaborar un programa en Fortran para demostrar que se cumple la ecuación
siguiente:
e. Elaborar un programa en Fortran para determinar la convergencia o no de las
series siguientes:
• ~2+sen3 (n+1) L. 2n 3 n=l +n
00 1
• ~ 2n -{1 +sen2 (n 3))
00 1 • ~-(2-n---1)-(2_n_+-1)
oo n3(-J2 +2Y .¿--n=l 3n
oo -Jn3 +1 • L n
n=l e
52
Se _propone la siguiente codificación:
PROGRAM CONVERGENCIA
REAL(4) NX,EA,ES,F,SUMA,D
WRITE(*,*) 'PROGRAMA PARA CALCULAR CONVERGENCIA' WRITE(*,*) 'DE UNA SERIE INFINITA' WRITE(*,*) 'INGRESE EL VALOR DE ER% MAX' READ(*,*)ES WRITE(*,*)' RESULTADOS' WRITE(*,*) 'N 2+SIN(N+1)**3 2**N+N**3 SUMA ER%' !CALCULO DE LA SERIE
SUMA=O N=1 NX=1 10 D=2+SIN(NX+1)**3
F=2**NX+NX**3 SUMA=SUMA+D/F
EA=(ABS((SUMA-(SUMA-D/F))/SUMA))*100 WRITE(*,19)N,D,F,SUMA,EA IF(EA.LE.ES)THEN
WRITE(*,20)SUMA WRITE(*,21)EA
ELSE IF (N.GT.10)THEN WRITE(*,*)' LA SERIE ES DIVERGENTE' ELSE N=N+1 NX=NX+1 GOTO 10 END IF
END IF 19 FORMAT(1X,I2,1X,4(F17.4,1X))
20 FORMAT(1X, 'LA SERIE CONVERGE A: ',F9.4) 21 FORMAT(1X, 'ERROR%=',F9.4) END
53
f. Elaborar un programa en Fortran que permita resolver el siguiente problema:
Se deja caer una pelota desde una altura de 20 m, cada vez que toca el suelo
rebota 3/4 de su altura anterior, encuentre la distancia total que viaja la pelota
antes de llegar a reposo. (Considere la solución como una serie infinita).
g. Elaborar un programa en Fortran para calcular el valor de e5 con un error
solicitado de 0.001%, considerando la siguiente serie:
h. Elaborar un programa en Fortran que calcule el Campo eléctrico generado
por cinco cargas puntuales de 1 O J.JC puestas sobre el eje x separadas entre
sí una distancia de 10 cm, si el punto de prueba está entre la primera y
segunda carga, considere:
E= 1 f q~ 47tE 0 i=I r
i. Mediante un programa en Fortran, evalué los 100 Primeros términos del seno
(1t/2) según la serie:
oo X 2n+l
sen(x)= L(-l)n -(2n+l)! n=O
j. Las bacterias crecen siguiendo una progresión geométrica en la que $
número de individuos se duplica al cabo de un tiempo determln~do •,
denominado tiempo de generación (t9). De esta forma, podemos calcular, t;;ll /~ .
número de bacterias (N) al cabo de un número de generaciones (g) usando J~
ecuación siguiente:
N= No 2g
Siendo N0 el número de bacterias en el momento actual. El número de
generaciones se puede calcular de la siguiente forma:
g=t/lg
Donde t es el tiempo transcurrido.
54
Elaborar un programa en Fortran que calcule el número de bacterias que
habrá luego de un periodo de incubación de 5 horas, siendo que se cuenta
con una cantidad inicial N0 de 108 individuos y un tiempo de generación de 30
m in.
Nota: Los tiempos de generación de bacterias creciendo en ambientes
favorables pueden ser muy cortos (valores de tg de 20 min.). Esto lleva a que
una única bacteria (No = 1) creciendo con un tg = 20 min., llegue a poder
producir 4. 7 x 1 021 bacterias en 24 -horas.
k. Elaborar un programa en Fortran que permita calcular la n-ésima raíz de un
número real arbitrario.
l. Calcule el valor de la raíz cuadrada de 2, empleando una calculadora de
bolsillo y compare este valor con el arrojado usando la función SQRT en
doble precisión en un programa de fortran.
55
6.2 Capítulo 11
2. Solución de ecuaciones no lineales
Uno de los problemas de ocurrencia más frecuente en el trabajo científico es
hallar las raíces de ecuaciones de la forma f(x) = O, con frecuencia f(x) puede
conocerse solo implícitamente; en general, podemos esperar la obtención de
soluciones aproximadas solamente contando con alguna técnica computacional para
producir la aproximación. Dependiendo del contexto "solución aproximada" puede
significar entonces un punto en x para el cual f(x) se "satisface aproximadamente", es
decir esta cercana a una solución.
El procedimiento a utilizar depende del problema específico, en este capítulo
se elaboraran algoritmos que basados en técnicas numéricas conocidas nos proporcionen las raíces aproximadas de los polinomios evaluados.
2.1 Método de Bisección
Las condiciones para aplicación del algoritmo de bisección, establecen que la
función f(x) evaluada sea continua sobre el intervalo [a, e], tal que: f(a)f(c) :-:::: O; de esto
se sabe que existe al menos una raíz de f(x) en el intervalo.
Teorema del valor intermedio
Sea f(x) continua en un intervalo [a, e] y supongamos que f(a) < f(c). Entonces
para cada z, tal que: f(a) < z < f(c), existe un x0 E [a, e] tal que: f(Xo) = z. La misma
conclusión se obtiene paia el caso que f(a) > f(c).
Básicamente el Teorema del Valor Intermedio nos dice que toda función continua en
un intervalo cerrado, una vez que alcanzó ciertos valores en los extremos del intervalo,
entonces debe alcanzar todos los valores intermedios.
En particular, si f(a) y f(c) tienen signos opuestos, entonces un valor intermedio es
precisamente z = O, y por lo tanto, el Teorema del Valor Intermedio nos asegura que
debe existir Xo E [a, e] tal que f(Xo) = O, es decir, debe haber por lo menos una raíz de
f(x) en el intervalo [a, e].
56
Funcionamiento
Suponga que el intervalo entre x = a y x = e, denotado por [a, e], tiene una sola
raíz como se muestra en la figura (2.1), el método de bisección se sustenta en el
hecho de que para que en un intervalo [a, e] exista una raíz basta que los signos de
f(x) en los extremos sean opuestos o bien que se anulen f(a)f(c) sO.
Primero se divide en dos el intervalo [a, e], estas mitades son: [a, b] y [b, e], donde
b = (a + c)/2, al verificar los signos de f(a)f(b) y f(b)f(c), se localiza la mitad del intervalo
que contiene a la raíz, este intervalo se divide en dos de nuevo, y se evalúa el error
porcentual alcanzado (ea%) respecto al solicitado por el usuario (1 o-3::;; es% S1 o-\
recomendado para evitar acumulación de error por redondeo y truncamiento), cuya
magnitud indica el grado de aproximación en el resultado, para calcular el error
porcentual alcanzado emplearemos la siguiente fórmula:
b actual - bprevia lQQOI' _ O/' 1-----IX ;o- ea ;o
b actual
(2.1)
El proceso iterativo debe detenerse cuando se cumpla la condición de convergencia
siguiente:
e. %ses%
Cuando la raíz buscada es cero, se debe adicionar un valor del orden de 10-3 al valor
de bactual a fin de evitar error por división entre cero.
57
La figura (2.1) ilustra el proceso de aproximación por bisección.
y
Secuencia de los intervalos y puntos medios
y == f(x)
Figura (2.1). Proceso de Bisección. Tomado de: Nakamura, S. (1992); "Métodos
Numéricos Aplicados con Software".
Algoritmo:
(i) Ingresar: a, e y es
(ii) Evaluar: f(a)*f(c) :s; O
• Si se cumple, Continuar al paso iii)
• Si no se cumple, regresar al paso i) (la función no tiene raíz en el intervalo)
(iii) Calcular: b = (a + c)*O.S
(iv) Evaluar: f(a)*f(b) :s; O
• Si se cumple, hacer: e= b
'"' Si no se cumple, hacer: a = b
(v) Calcular ea
(vi) Evaluar: ea :s; es
• Si se cumple, la raíz es b
• Si no se cumple, volver al paso iii)
58
Limitaciones:
• El método de Bisección se satisface siempre que el intervalo tenga un
número impar de raíces, por lo cual presenta dificultades para encontrar
una pareja de raíces dobles debido a que la función toca al eje x de manera
tangencial en las raíces dobles.
• El método puede confundir una singularidad como si fuera una raíz, para
evitar este problema se debe verificar si lf(c) - f(a)l converge a cero cuando
se ejecuta la bisección, si esta cantidad diverge se trata de una
singularidad.
• El programa funciona siempre que se conozca el intervalo que contiene a la
raíz.
Ejemplo:
Calcular la raíz de la función sen(x), en el intervalo [2.5, 4.0] con una
aproximación del O. 1%.
r--~-~-·--_,_-,,~.-.---· ... --..,..,..·-----··-<">"·---··-.----·~-----,...···--.~---.. ·--·-<~w--......---~="--~l ¡ 1.500 ' ! 1
1 1 l 1.000 w ;~~--- • • •••••• 1
1 0500 ¡ / ........... ··"\·· . .. ... ... . 1
! / 1 ¡ 0.000 f. . .. ¡ 1 0.000 1.000 2.000 3.000 4.000 5.000 6.000 1
l ·0.500 "' . . - ... . . .. - .. . .. ... . 1
l i
1 ·1.000 ............. ·--. ·- ··,~·--·····-· -- --- 1 l 1 1 ¡ ¡ 1 ¡ -1.soo -- _j
Figura (2.1 a). Grafica de la función Seno(x) desde 0.0 hasta 5.0 con espaciamiento de
0.1 unidades.
59
N 1 2 3 4 5 6 7 8 9
Aplicando el método de Bisección se obtienen los resultados mostrados en la a
continuación:
METODO BISECCION
INGRESE A, C Y ES 2.5 4.0 0.1
RESULTADOS BISECCION
A F(A) 2.5000 0.5985 2.5000 0.5985 2.8750 0.2634 3.0625 0.0790 3.0625 0.0790 3.1094 0.0322 3.1328 0.0088 3.1328 0.0088 3.1387 0.0029
e F(C) 4.0000 -0.7568 3.2500 -0.1082 3.2500 -0.1082 3.2500 -0.1082 3.1563 -0.0147 3.1563 -0.0147 3.1563 -0.0147 3.1445 -0.0029 3.1445 -0.0029
B F(B) EA 3.2500 -0.1082 100.0000 2.8750 0.2634 13.0435 3.0625 0.0790 6.1224 3.1563 -0.0147 2.9703 3.1094 0.0322 l. 507 5 3.1328 0.0088 0.7481 3.1445 -0.0029 0.3727 3.1387 0.0029 o .18 67 3.1416 -0.0000 0.0933
APROXIMACION FINAL AL 0.0933 % 3.1416
Codificación:
La codificación utilizada para generar los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM BISECCION
REAL(4) A,B,BP,C,EA,ES
18 WRITE(*,*)' METODO BISECCION ' WRITE ( *, *) ' ' WRITE(*,*)'INGRESE A, C Y ES' READ(*,*)A,C,ES IF (F(A)*F(C).LE.8)THEN ELSE WRITE(*,*)'RAIZ NO EXISTE EN INTERVALO' GOTO 18 END IF WRITE(*,*)' RESULTADOS BISECCION' WRITE ( * , * ) ' ' WRITE(*,*)' N A F(A)
F(B) EA' BP=8
N=0 15 N=N+1
B=(A+C)*8.5 EA=ABS((B-BP)/8)*188 WRITE (*,16)N,A,F(A),C,F(C),B,F(B),EA
60
e F(C) B
IF (F(A)*F(B).LE.0)THEN C=B ELSE A=B END IF IF(EA.LE.ES)THEN WRITE(*,17)EA,B ELSE
BP=B GOTO 15 END IF
16 FORMAT (I3,7(F9.4,1X)) 17 FORMAT (1X,' APROXIMACION FINAL AL ',F9.4,'% =',F9.4)
END
FUNCTION F(X) F=SIN(X) RETURN END
2.2 Búsqueda de intervalos
Utilizando el Teorema del Valor Medio, es posible construir un algoritmo que
nos permita, localizar los posibles intervalos donde se localizan las raíces de una
función; para esto, es necesario dividir el dominio donde se desea hacer la búsqueda
(un dominio amplio donde la función sea continua y exista por lo menos una raíz), en N
partes, cada una de un ancho más pequeño h. el algoritmo para este problema sería el
siguiente:
Algoritmo:
(i) Ingresar a, e y N
(ii) Calcular h, usando: h = (e- a)/N
(iii) Evaluar para 1 desde 1 hasta N, la condición:
F(a+(i -1)*h)*F(a+i*h):::; o • Si es afirmativo, se muestra el intervalo: [a+(i -1)*h, a+i*h]
= Si no es afirmativo se continua la búsqueda
61
Ejemplo:
Calcular los intervalos de ubicación de las posibles raíces de la función cos(x),
evaluando un dominio general [0.1, 1 O], con un ancho de búsqueda de 0.1; es decir
N= 99.
Los resultados computacionales arrojan:
******************************************* * BUSQUEDA DE INTERVALOS DE UNA RAIZ * ******************************************* INTRODUCIR A, e y N 0.1 10 99 RESULTADOS ITERACION: 15 INTERVALO: 1.5000 , 1.6000] ITERACION: 47 INTERVALO: 4.7000 , 4.8000] ITERACION: 78 INTERVALO: 7.8000 , 7.9000]
Lo cual indica que se encontró intervalos que cumplen la condición en las iteraciones o búsquedas número 15, 47 y 78.
Codificación:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM BUSQUEDA_INTERVALOS
REAL(4)A,C,H
*******************************************1 WRITE(*,*)' WRITE(*, *)' * BUSQUEDA DE INTERVALOS DE UNA RAIZ * 1
WRITE(*,*)' *******************************************' WRITE ( *, *) 1 1
WRITE(*,*)'INTRODUCIR A,C y N' READ(*J*)A,C,N WRITE ( *, *) 1 ' H=(C-A)/N WRITE(*,*)'RESULTADOSI DO I=l,N IF(F(A+(I-l)*H)*F(A+I*H).LE.0)THEN WRITE(*,10)I,A+(I-l)*H,A+I*H ELSE END IF END DO
10 FORMAT(lX, 1ITERACION:',I2, 'INTERVAL0:[ 1,F8.4,1X, ', ',F8.4, ']') END
FUNCTION F(X) F=COS(X) RETURN END
62
2.3 Método de Falsa Posición
Este método es análogo al método de bisección, puesto que el tamaño del
intervalo que contiene la raíz se reduce mediante iteración; sin embargo, se utiliza una
interpolación lineal ajustada a dos puntos extremos para encontrar una aproximación
de la raíz.
Funcionamiento:
Dado un intervalo [a, e], que contenga a la raíz de la función lineal que pasa por
(a, f(a)) y (e, f(c)). la ordenada en un punto se escribe como:
fl(c) - fl(a) y=f(a)+ (x-a)
c-a
Despejando x, se tiene:
c-a x =a+ (y-f(a))
f(c)-f(a)
La coordenada b, en donde la línea intercepta al eje x, se determina al hacer
y= O, en la ecuación (2.3), así:
b ;::; a _ e - a f( a) ;::; af( e) - cf( a) f(c)-f(a) f(c)-f(a)
(2.2)
(2.3)
(2.4)
Después de encontrar b, el intervalo [a, e] se divide en [a, b] y [b, e], si: f(a)f(b) :::; O,
la raíz se encuentra en [a, b], en caso contrario, está en [b, e]. Los extremos del nuevo
intervalo que contiene a la raíz se renombran a y c. y se evalúa el error porcentual
alcanzado (ea%) respecto al solicitado por el usuario como tolerancia (es%), cuya
magnitud indica el grado de aproximación en el resultado.
63
/ 1 a. interpolación // 2a. interpolación / 3a. interpolación
/ 1 a. aprox!mac!?n .. /~ 2a. aproxtmac1on
. . '
x=a
Raíz exacta
3a. aproximación
1 x =e 1 1 1
Figura (2.2). Método de falsa posición. Tomado de: Nakamura, S. (1992); "Métodos
Numéricos Aplicados con Software".
Algoritmo:
(i) Ingresar: a, e y es
(ii) Evaluar: f(a)*f(c) ::; O
• Si se cumple, Continuar al paso iii)
• Si no se cumple, regresar al paso i) (la función no tiene raíz en el intervalo)
(iii) Calcular b usando (2.4)
(iv) Evaluar: f(a)*f(b) ::; O
o Si se cumple, hacer: e= b
= Si no se cumple, hacer: a = b
(v) Calcular ea
(vi) Evaluar: ea ::; es
• Si se cumple, la raíz es b
• Si no se cumple, volver al paso iii)
Limitaciones:
• Pueden aparecer extremos fijos, en donde uno de los extremos de la
sucesión de intervalos no se mueve del punto original; esto hace más lenta
la convergencia en particular cuando el intervalo inicial es muy grande, ver
figura.
64
Ejemplo:
Calcular la raíz del polinomio -10x3+5x2+3x+10, en el intervalo [O, 2], con un
error aproximado de 0.1 %.
f 15.000 ··-··-·------ ---- .. ~------··----- --·--- ---- -----------·------·· ----·-----
5.000 ' ' - -- ,,
o.qoo 0.500 1.000 2.000 2.500
-5.000
Figura (2.2a). Grafica de la función y= -1 Ox3+5x2+3x+1 O, en el intervalo [O, 2), con un
avance de 0.1.
Los resultados computacionales proporcionan los siguientes resultados:
METODO FALSA POSICION
INGRESE A,C Y ES
0.0 2.0 o. 1
RESULTADOS FALSA POSICION
N A F(A) e F(C) B F(B) EA 1 0.0000 10.0000 2.0000 -40.0000 0.4000 12.1600 100.0000 2 0.4000 12.1600 2.0000 -40.0000 0.7730 12.2337 48.2540 3 0.7730 12.2337 2.0000 -40.0000 l. 0604 9.0009 27.1011 4 1.0604 9.0009 2.0000 -40.0000 l. 2330 5.0219 13.9984 5 l. 2330 5.0219 2.0000 -40.0000 1.3185 2.3622 6.4887 6 l. 3185 2.3622 2.0000 -40.0000 l. 3565 l. 0209 2.8012 7 l. 3565 l. 0209 2.0000 -40.0000 1.3725 0.4249 1.1667 8 l. 3725 0.4249 2.0000 -40.0000 l. 3791 0.1741 0.4782 9 1.3791 0.1741 2.0000 -40.0000 l. 3818 0.0709 0.1947 10 1. 3818 0.0709 2.0000 -40.0000 1.3829 0.0288 o' 0791
APROXIMACION FINAL AL 0.0791 % = l. 3829
65
Codificación:
La codificación empleada para obtener los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM FALSA_POSICION
REAL(4) A,C,ES,EA,B,BP
18 WRITE(*,*)' METODO FALSA POSICION ' WRITE(*, *)'' WRITE(*,*)'INGRESE A,C Y ES' READ(*,*)A,C,ES IF (F(A)*F(C).LE.8)THEN ELSE WRITE(*,*)'RAIZ NO EXISTE EN INTERVALO' GOTO 18 END IF WRITE(*,*)' RESULTADOS FALSA POSICION' WRITE(*,*)'' WRITE(*,*)' N A F(A) C F(B) EA' N=8 BP=8
15 N=N+1 B=A-((C-A)/(F(C)-F(A)))*F(A) EA=ABS((B-BP)/8)*188 WRITE (*,16)N,A,F(A),C,F(C),B,F(B),EA IF (F(A)*F(B).LE.8)THEN C=B ELSE A=B END IF IF(EA.LE.ES)THEN WRITE(*,17)EA,B
ELSE BP=B GOTO 15 END IF
16 FORMAT (I3,7(F9.4,1X))
F(C)
17 FORMAT (1X,' APROXIMACION FINAL AL ',F9.4,'% =',F9.4) END
FUNCTION F(X) F=-18*X**3+5*X**2+5*X+18 RETURN END
66
B
2.4 Método de Newton-Raphson
Se encuentra la raíz partiendo de una estimación inicial, utilizando las rectas
tangentes que se evalúan analíticamente. El método de Newton se puede aplicar a
partir del desarrollo de Taylor.
Funcionamiento:
Supongamos que el problema es encontrar la raíz de f(x) = O, el desarrollo de
Taylor en torno a una estimación Xo truncado en términos de orden superior, es:
(2.5)
Dónde: h = x- x0 , es el intervalo de avance.
Xo, es una estimación inicial para la raíz.
Al despejar x en la ecuación (2.5) no se obtiene el valor exacto debido al error por
truncamiento, pero la solución se aproxima a el valor exacto de x si utilizamos el valor
obtenido como aproximación mejorada de Xo; por ello, lo siguiente es obtener la
función lineal que pasa por (Xo, y0) y aproximar por iteración.
La intersección de la recta tangente con el eje x, se denota como x1 y se
considera una segunda aproximación de la raíz. Se repite el mismo procedimiento
utilizando el valor actualizado para el siguiente ciclo de iteración.
La recta tangente que pasa por (x0 , f(Xo)), es:
(2.6)
La raíz de g(x), denotada por x1, satisface:
(2.7)
67
Despejando x1, se tiene:
(2.8)
Por lo tanto las aproximaciones sucesivas a la raíz, se pueden escribir como:
(2.9)
El proceso de aproximación, puede observarse en la figura (2.3).
y
Figura (2.3). Aproximación iterativa en el método de Newton. Tomado de: Nakamura,
S. (1992); "Métodos Numéricos Aplicados con Software".
La primera derivada de la función puede obtenerse, usando una aproximación por
diferencias centrales de segundo orden.
( ) f(x 0 +h)-f(x 0 -h)
f X o = ---'-----=------. 2h (2.10)
68
En el proceso iterativo la ecuación (2.1 O), puede escribirse como:
f(x. )= f(x¡_1 +h)-f(x¡_1 -h) 1-1 2h (2.11)
Dónde: h, es un número real que cumple lo siguiente: 1 o-3 :::; h :::; 1 o-1, y se define
de antemano.
En este caso se ha optado por utilizar como elemento de convergencia un
valor de tolerancia (TOL), el cual define la máxima diferencia en valor absoluto que se
permitirá entre los valores evaluados funcionalmente para Xo y x1 ; mientras menor sea
esta diferencia mayor será la aproximación al valor de raíz buscado. Generalmente se
emplea un valor para TOL que cumple lo siguiente: 1 o-3:::; TOL:::; 1 o-1
Algoritmo:
(i) Ingresar Xo y Tol
(ii) Evaluar f (Xo) usando la ecuación (2.1 O)
(iii) Calcular x1 usando (2.8)
(iv) Evaluar lf(Xo) - f(x1)l :::; Tal
• Si se cumple entonces, x1 es la raíz aproximada
• Si no se cumple entonces hacer Xo = X1 y volver al paso ii)
Limitaciones:
• El método de Newton requiere una buena estimación inicial de la raíz. De
otro modo la solución puede divergir o converger a una solución irrelevante.
• El método puede encontrar raíces complejas si las variables se definen
como complejas.
69
Ejemplo:
Calcular la raíz más próxima a 0.1 de la función y = -x + cos(x2), con una
tolerancia de 0.01, mostrando 5 decimales de aproximación.
---- ---- -- ~=-=-~-=-=---¡
1
1 1 l
Figura (2.3a). Grafica de la función y= -x + cos(x2), desde O hasta 2 con un avance de
0.1 unidades.
Los resultados computacionales para este ejemplo son:
RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)
INGRESO DE DATOS
INGRESE XO Y TOL 0.1 0.01
RESULTADOS NEWTON-RAPHSON
N xo X1 DFX ABS(F(XO)¡F(X1)) 1 0.10000 0.99814 -1.00202 l. 35465 2 0.99814 0.82820 -2.67578 0.40034 3 0.82820 0.80167 -2.04922 0.05319 4 o. 80167 0.80107 -l. 96104 0.00118
LA RAIZ HALLADA ES: 0.80107 APROXIMACION 0.00118
70
La raíz obtenida luego de 4 iteraciones, con una diferencia en valor absoluto de .00118
y una aproximación de cinco decimales fue: 0.80107
5
18
Codificación:
La codificación empleada para obtener estos resultados fue la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM NEWTON RAPHSON
REAL(4) X0,X1,TOL,DFX,E
WRITE(*, *)'' WRITE ( * , * ) ' WRITE(*,*)'
RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)' 1 ==============================================
WRITE ( *, *) ' ' INGRESO DE DATOS' WRITE(*, *)'
WRITE(*,*)' ================================== INGRESE X0 Y TOL' WRITE ( *, *) '
READ(*,*)X0,TOL WRITE(*,*)'RESULTADOS WRITE(*,*)' N X0 H=0.01 N=0
NEWTON-RAPHSON' X1
N=N+1 DFX=(F(X0+H)-F(X0-H))/(2*H) X1=X0-F(X0)/DFX E=ABS(F(X0)-F(X1)) IF(E.GT.TOL)THEN WRITE(*,22)N,X0,X1,DFX,E X0=X1 GOTO 10 ELSE WRITE(*,22)N,X8,X1,DFX,E WRITE(*,28)X1,E END IF
DFX ABS(F(X0)-F(X1))'
28 FORMAT(' LA RAIZ HALLADA ES: ',F9.5,1x, 'APROXIMACION = ',F9.5) 22 FORMAT(1X,I2,4(F9.5,1X))
END
FUNCTION F(X) F=-x+cos(x**2) RETURN END
En el caso de que f'(x¡) = O, el método no se puede aplicar. De hecho,
geométricamente que esto significa que la recta tangente es horizontal y por lo tanto
no intersecta al eje x en ningún punto, a menos que coincida con éste, en cuyo caso X¡
mismo es una raíz de f(x).
71
2.5 Método de la Secante
Este método se diferencia al de Newton en que f se aproxima usando los
valores de iteraciones consecutivas de f.
Esto elimina la necesidad de evaluar tanto a f como a f' en cada iteración. Otra
diferencia es que la técnica se basa en el método de falsa posición dado que se utiliza
la fórmula de interpolación lineal.
Funcionamiento:
El principal inconveniente del método de Newton estriba en que requiere
conocer el valor de la primera derivada de la función en el punto. Sin embargo, la
forma funcional de f(x) dificulta en ocasiones el cálculo de la derivada. En estos casos
es más útil emplear el método de la secante.
El método de la secante parte de dos puntos (y no sólo uno como el método de
Nevvton) y estima la tangente (es decir, la pendiente de la recta) por una aproximación
de acuerdo con la expresión:
f'(xo) = f(x¡)-f(xo) X 1 -X 0
Sustituyendo esta expresión en la ecuación (2.8) del método de Newton
Raphson, obtenemos la expresión del método de la secante que nos proporciona el
siguiente punto de iteración:
(2.12)
Dónde: Xo y x1, son dos suposiciones iniciales para comenzar la iteración.
En la siguiente iteración se utilizan x1 y x2 como nuevas supos1c1ones; el
proceso iterativo utiliza como elemento de convergencia un valor de tolerancia
(TOL), el cual define la maxima diferencia en valor absoluto que se permitirá entre los
valores obtenidos para x2 y x1; mientras menor sea esta diferencia mayor será la
aproximación al valor de raíz buscado.
72
El esquema geométrico de aproximación puede observarse en la figura (2.4).
y
Figura (2.4). Aproximación por el método de la secante. Tomado de: Nakamura, S.
(1992); "Métodos Numéricos Aplicados con Software".
Algoritmo:
(i) Ingresar los valores de Xo, x1 y Tal
(ii) Calcular f(xo) y f(x1)
(iii) Calcular x2 usando (2.12)
(iv) Evaluar: 1x2- x1l ~Tal
• Si se cumple: la raíz es x2
• Si no se cumple, hacer: Xo = x1 y x1 = x2, volver al paso ii)
Limitaciones:
• El método de la secante puede conyerger a una raíz no deseada ó puede
no converger del todo si la estimación inicial no es buena.
• Es una variación del método de Newton y desde el punto de vista
computacional es más eficiente, pero conlleva sus mismas limitaciones.
• Cuando dos aproximaciones sucesivas están demasiado cercanas, pueden
aparecer errores de redondeo.
73
Ejemplo:
Calcular usando el método de la secante la raíz de: -10x5+5cos(x2), más
próxima a 0.5, con 5 decimales de aproximación y tolerancia de 0.001.
5.000
4.500 i ...
4DOO 3.500 . . .. ··- ....
3.000 ......... .
2.500 ·'· 2.000 ---~-~ - .....
1.500
1.000 . --· ---- ..
0.500 '"-·------·-·-···
0.000 -- -------....... .
-o.5oQJ.ooo · · · o;soo· · -1.000 ···-·-··--···-······· ..
-1.500 _¡_ ___ -- -·- --· .
-2.000
Figura (2.4a). Grafica de ia función y= -10x5+5cÓs(x2), en ei intervalo de O a 2 con un avance de 0.1 unidades.
Los resultados computacionales para este ejemplo son:
METODO DE LA SECANTE
INGRESAR LOS PUNTOS DE APROXIMACION XO, X1 y TOL 0.5 0.6 0.001
RESULTADOS
N XO X1 X2 ABS (X2-X1) 1 0.50000 0.60000 l. 21917 0.61917 2 0.60000 1.21917 0.67943 0.53974 3 1.21917 0.67943 0.73477 0.05534 4 0.67943 0.73477 0.86954 0.13478 5 0.73477 0.86954 0.81791 0.05164 6 0.86954 0.81791 0.82639 0.00848 7 0.81791 0.82639 0.82727 0.00088
LA RAIZ HALLADA ES: 0.82727 APROXIMACION 0.00088
La raíz obtenida luego de 7 iteraciones, con una tolerancia de 0.001 y una aproximación de cinco decimales fue: 0.82727
74
Codificación:
La codificación empleada para obtener estos resultados fue la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM SECANTE
REAL(4) XB,Xl,TOL,E
WRITE(*,*)'METODO DE LA SECANTE' WRITE ( *, *) ' ' WRITE(*,*)'INGRESAR LOS PUNTOS DE APROXI~4CION Xe, Xl y TOL' READ(*,*)XB,Xl,TOL WRITE(*,*)'RESULTADOS ' WRITE(*,*)' N XB Xl X2 ABS(X2-X1)' N=e
18 N=N+l X2=X8-F(XB)*((X1-XB)/(F(X1)-F(Xe))) E=ABS(X2-X1) WRITE(*,22)N,XB,X1,X2,E IF(E.LE.TOL)THEN WRITE(*,2B)X2,E ELSE XB=Xl X1=X2 GOTO 18 END IF
28 FORMAT(' LA RAIZ HALLADA ES: ',F9.5,1x, 'APROXIMACION = ',F9.5) 22 FORMAT(1X,I2,4(F9.5,1X))
END
FUNCTION F(X) F=-1B*x**5+5*cos(x**2) RETURN END
2.6 Método de Muller
Los polinomios tienen muchas aplicaciones en ciencia e ingeniería, como es el
caso de su utilización en ajuste de curvas. Sin embargo, se considera que una de las
aplicaciones más interesantes y potentes es en los sistemas dinámicos,
particularmente en los lineales.
75
Casi todos los métodos considerados hasta ahora han aproximado la función en la
vecindad de la raíz por medio de una recta. El método de Muller se basa en aproximar
la función en la vecindad de la raíz por medio de un polinomio cuadrático
denominado: ecuación característica, que es de la forma:
a 2 x 2 +a 1x+a 0 =0
Donde las raíces de este polinomio satisfacen:
Funcionamiento:
Se construye un polinomio de segundo grado para ajustar tres puntos cerca de
una raíz, [Xa, f(Xa)], [x1, f(X1)] y [x2, f(x2)]. El cero propio de esta cuadrática, usando la
formula cuadrática, se usa como la estimación mejorada de la raíz. Luego se repite el
proceso usando el mismo conjunto de tres puntos más próximos a la raíz que está
evaluándose.
El procedimiento del método de Muller consiste en escribir una ecuación
cuadrática que se ajusta a través de tres puntos en la vecindad de una raíz, en la
forma ax2+bx+c, tal como se ve en la figura (2.5). El desarrollo se simplifica cuando
los ejes se transforman de modo que pasen por el punto medio, haciendo el cambio de
variable v = x- x0.
Sean h1 =x1 - Xo y h2 = Xo - x2. Se evalúan los coeficientes al evaluar p2(v) en los tres
puntos:
Vo =O; (x = Xo);
v1 = h1; (x = x1);
V2 = -h2; (x = x2);
. a(Oi + b(O) + e= f(Xo) = fo
ah?+ bh1 + e= f(x1) = f1
ah/- bh2 + e= f(x2) = f2
A partir de la primera ecuación, e= f(x0). De esta forma, se puede tener un sistema de
dos ecuaciones con dos incógnitas.
76
Haciendo h2/h1 = y, es posible resolver las otras dos ecuaciones par~ a y b.
Para a:
Para b:
a= yfi-fo(l+y)+fz yh¡(I +y)
(2.13)
(2.14)
Después de calcular a, b, y e, la raíz de av2+ bv + e = O se encuentra aplicando la
formula cuadrática modificada por racionalización y eligiendo la raíz más próxima al
punto medio x0 , este valor es:
(2.15)
Con el signo en el denominador tomado a fin de proporcionar el mayor valor absoluto
en el denominador (es decir, si b > O, se elige signo positivo; si b < O, se elige signo
negativo; si b = O, se elige cualquiera de los dos). La razón para justificar el uso de
esta fórmula es hacer que la siguiente iteración este más próxima a la raíz verdadera.
y
- ¡. t¡ 11 ~hz-·-h¡
1
!
Figura (2.5). Aproximación por el método de Muller. Tomado de: Curtis, F. (2000);
"Análisis Numérico con aplicaciones".
77
Para la siguiente aproximación se toma la raíz del polinomio como uno de los
puntos de un conjunto de tres, tomando los tres puntos cuya separación entre si sea la
más pequeña (es decir, si la raíz está a la derecha de Xo, se toman Xo y X1 y la raíz; si
está a la izquierda, se toman Xo. x2 y la raíz). Siempre vuelven a colocarse los
subíndices a fin de Xo que sea el valor de en medio.
El proceso iterativo del método de Muller utiliza como elemento de
convergencia un valor de tolerancia (TOL), el cual define la máxima cantidad en valor
absoluto que se permitirá para la evaluación funcional de la raíz; mientras menor sea
mayor será la aproximación al valor de raíz buscado. En este caso se emplea un valor
para TOL del orden de 1 o-3 o 104 que implica una aproximación al cero de cinco
decimales.
Es posible indicar un solo punto para arranque del método, este sería el valor
central Xo, considerando que x2 sería: xa- a y x1 seria: xa + a; donde a es un valor del
orden de 10-1.
A continuación se presenta un algoritmo para el método de Muller.
Algoritmo:
(i) Ingresar Xo, a y TOL
(ii) Calcular x1 y x2
(iii) Evaluar los valores funcionales correspondientes: f2, fa y f1.
(iv) Encontrar los coeficientes de la parábola determinados por los tres puntos.
(v) Calcular Xrsegún el valor de b.
(vi) Evaluar (xr > Xo)
Si, entonces reordenar: x2 = :xa; Xo = Xr y X1 = X1
No, entonces reordenar: x2 = x2; Xo = Xr y X1 = Xo
(vii) Evaluar lf(xr)l < Tal
Si, entonces la raíz es Xr
No, entonces regresar al paso iii)
El método de Muller, como el método de Newton, halla una raíz compleja si se
proporcionan valores iniciales complejos. Por supuesto, los cálculos deben hacerse
con aritmética compleja.
78
Limitaciones:
• El método de Muller converge mejor para porciones de la función en la cual
esta es creciente.
Ejemplo:
Calcular la raíz de la función: 3x+sen(x)-ex, usando como punto de
aproximación x0 = 0.5, una tolerancia de 10-6 y una cantidad de a= 0.5.
~---~~~-- --- - -- .. ----2 !
-1·----·-· "/~~- ----
: / ""· ¡
1
¡ -1.5
o -- ~ ---- --- ~--- --~--- --\·
-~~--- -o.s ---l-/--- _o_.s 1 -~--~---- ___ \ _______ :5
/; - --- --------/---------3-----. ------- --- ---------------------------------------------------- -----·--
/ ¡ -. 0- - - - -4
1 ---- ------- - ----5- e - ------ ---. -- ---· - ·-·· --- . ------------L ______ ------------------------------ --------~--------- --·----- ---------·
Figura (2.5a). Grafica de la función y = 3x+sen(x)-ex, en el intervalo de -1 a 2
con un avance de 0.1 unidades.
Los resultados computacionales para este ejemplo son:
METODO DE MULLER
INGRESAR EL PUNTO DE APROXIMACION XO,ALFA Y TOL 0.5 0.5 0.0001 RESULTADOS
N XO 1 0.5000 2 0.3549 3 0.3605
X1 l. 0000 0.5000 0.5000
X2 0.0000 0.0000 0.3549
H1 0.5000 0.1451 o .1395
H2 A 0.5000 -1.0764 0.3549 -0.8083 0.0056 -0.9470
LA RAIZ FINAL ES : 0.36042
B e 2.1232 0.3307 2.4918 -0.0138 2.5014 0.0001
XR 0.3549 0.3605 0.3604
La raíz obtenida luego de 3 iteraciones, con una tolerancia de 1 o-4 y una aproximación de cinco decimales fue: 0.36042
79
Codificación:
La codificación empleada para obtener estos resultados fue la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM MULLER
REAL(4) X8,X1,X2,ALFA,TOL
WRITE(*,*)' METODO DE MULLER' . WRITE ( *, *) ' '
WRITE(*,*)' INGRESAR EL PUNTO DE APROXIMACION X8,ALFA Y TOL' READ(*,*)X8,ALFA, TOL X2=X8-ALFA X1=X8+ALFA WRITE(*,*)' RESULTADOS' WRITE(*, *)'' WRITE(*,*)' N X8 X1 X2 H1 H2 A 8 C XR' N=8
18 N=N+1 H1=X1-X8 H2=X8-X2 G=H2/H1 C=F(X8) A=(G*F(X1)-C*(1+G)+F(X2))/(G*H1**2*(1+G)) B=(F(X1)-C-A*H1**2)/H1 IF(B.GE.8)THEN XR=X8-(2*C/(B+SQRT(B**2-4*A*C))) ELSE XR=X8-(2*C/(B-SQRT(B**2-4*A*C))) END IF WRITE(*,28)N,X8,X1,X2,H1,H2,A,B,C,XR IF(XR.GT.X8)THEN X2=X8 X8=XR ELSE X1=X8 X8=XR END IF IF(ABS(F(XR)).LT.TOL)THEN WRITE (*,21)XR ELSE GOTO 18 END IF
28 FORMAT(1X,I2,9(F7.4,1X)) 21 FORMAT(1X,' LA RAIZ FINAL ES :',F9.5)
END
FUNCTION F(X) F=3*X+SIN(X)-EXP(X) RETURN END
80
2. 7 Método de Laguerre
Los sistemas de álgebra por computadora son de especial valor para obtener
Jos ceros de una función. Tienen funciones integradas que encuentran Jos ceros.
Aunque su uso puede ser limitado en problemas grandes del mundo real; en general,
siguen estando adaptados a los métodos ya estudiados; así, cuando no existen
discontinuidades, la bisección es lenta pero certera y el método de Newton es rápido
aunque puede ser inestable, ambos problemas se resuelven con el método de
Laguerre. Curtis, F. (2000).
Funcionamiento:
Supóngase un polinomio de grado n: Pn (x) = (x- x1) (x- X2) (x- X3) .... (x- Xn).
Al calcular la derivada de In IPnJ, es fácil demostrar que~
P' n 1 A=-n =:L--
pn i=l (x-xJ (2.16)
Al calcular la segunda derivada de In IPnJ, se encuentra que:
(2.17)
Se observa que 8 siempre es positivo.
Sea x1 la raíz que quiere determinarse. Supóngase que todas las otras raíces están
lejos de x1 y que están acumuladas estrechamente entre si en algún punto x = X. Se
definen las siguientes cantidades: a = x - x1 y b = x - X. Las ecuaciones para A y 8
pueden volver a escribirse como: ·
y (2.18)
81
A partir de estas dos ecuaciones se elimina b para obtener a:
n (2.19) a= ---:r======
A± ~(n -l)(nB- A 2)
Donde n es el grado del polinomio analizado; se usa el signo "mas", si A es positiva y
el signo "menos" si A es negativa. Se empieza con un valor para Xo que este próximo
a la raíz deseada. Usando este valor se calcula a. La siguiente iteración es X1 = Xo
a. Esto se repite hasta que el valor absoluto de a sea suficientemente pequeñO. El
valor obtenido de x1 se emplea como aproximación mejorada de la raíz.
El proceso iterativo del método de Laguerre utiliza como elemento de
convergencia un valor de tolerancia (TOL), el cual define la máxima cantidad en valor
absoluto que se permitirá para la diferencia entre Xo y x1; mientras menor sea mayor
será la aproximación de x1 al valor de raíz buscado.
La primera derivada de la función puede obtenerse, usando una aproximación
por diferencias centrales de segundo orden, proporcionada en la ecuación (2.9).
Para la segunda derivada puede usarse una aproximación por diferencias centrales
tal como la mostrada a continuación:
Dónde:
f"(xo)= f(x 0 +h)-2f(~ 0 )+f(x 0 -h) h
h, es un número real del orden de 10-1 ó 10-3 y se define de antemano.
Algoritmo:
(i) Dados los puntos Ingresar el valor de h, n, Xo y TOL
(ii) Evaluar P(Xo), P'(Xo) y P"(:xo)
(iii) Calcular A, B y a usando las ecuaciones (2.16), (2.17) y (2.19).
(iv) Determinar el valor de x1 usando: x1 = x0 - a
(v) Evaluar (!al ::;; TOL)
Si entonces la raíz es x1
No entonces hacer Xo = x1, luego volver al paso (ii)
82
IT 1
2
3
Limitaciones:
• El método de Laguerre puede converger a una raíz no deseada o puede no
converger del todo si la estimación para la primera y segunda derivada del
polinomio no es buena. Curtis, F. (2000);
Ejemplo:
Aplicando el método de Laguerre obtenga la raíz más próxima a 1.0 del
polinomio: y=:Jé3-8.6~+22.41x-16.236, utilice una tolerancia de 10-3.
Los resultados computacionales arrojan lo siguiente:
METODO DE LAGUERRE
INGRESAR ORDEN DEL POLINOMIO, PTO APROX XO Y TOL 3 1.0 0.001 RESULTADOS
xo FXO DFXO DDFXO a X1 l. 00000 -1.42600 8.21018 -10.72884 -.19856 1.19856 A= -5.757489 B = 25.624950
1.19856 -.00880 6.10473 -10.00985 -.00144 1.20000 A= -693.342700 B = 479587.300000
l. 20000 .00000 6.09028 -10.00054 .00000 l. 20000 A= -l. 210640E+07 B = 1.465649E+14
La raíz obtenida luego de 3 iteraciones, con una tolerancia de 1 o-3 y una
aproximación de cinco decimales fue: 1.20000
83
Codificación:
La codificación empleada para obtener estos resultados fue la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM LAGUERRE
REAL(4) X0,X1,N,A,B,AA,FX0,DFX0,DDFX0,H
WRITE(*,*)'METODO DE LAGUERRE' WRITE ( *, *) ' ' WRITE(*,*)'INGRESAR ORDEN DEL POLINOMIO, PTO APROX X0 V TOL' READ(*,*)N,X0,TOL H=0.001 WRITE(*,*)'RESULTADOS' WRITE ( *, *) ' ' WRITE(*,*)'IT X0 FX0 DFX0 DDFX0 a X1'
10 NN=NN+1 FX0=F(X0) DFX0=(F(X0+H)-F(X0-H))/(2.0*H) DDFX0=(F(X0+H)-2.0*F(X0)+F(X0-H))/H**2.0 A=DFX0/FX0 B=(A**2)-(DDFX0/FX0) IF(A.GT.0)THEN AA=N/(A+SQRT((N-1)*(N*B-A*A))) ELSE AA=N/(A-SQRT((N-1)*(N*B-A*A))) END IF X1=X0-AA WRITE(*j21)NNjX0jFX0,DFX0 1 DDFX0 1 AA 1 X1 WRITE(*J*)'A ='JA WRITE(*J*)'B ='JB IF(ABS(AA).LE.TOL)THEN WRITE(*J20)X1 ELSE X0=X1 GOTO 10 END IF
20 FORMAT(1X, 'VALOR FINAL DE RAIZ = ',F9.5) 21 FORMAT(1XJI2J6(F9.5,1X))
END
FUNCTION F(X) F=X**3-8.6*X**2+22.41*X-16.236 RETURN END
84
Problemas de aplicación
Los siguientes problemas pueden resolverse empleando los algoritmos
propuestos para cada método presentado, es indispensable para una solución usando
el computador elaborar programas en el Lenguaje Fortran; algunos de estos
problemas han sido tomados de: Nakamura, S. (1992) y Curtis, F. (2000).
a. La función f(x) = x- 0.2senx -0.5, tiene una raíz entre ><o = 0.5 y x1 = 1.0,
se verifica fácilmente que: f(0.5) = -0.09589 mientras que f (1.0) =
0.33171, localizar mediante un programa, la raíz correcta hasta seis
cifras significativas usando el método de Bisección; genere, el diagrama
de flujo correspondiente y luego haciendo uso del comando OPEN y la
instrucción FUNCTION, generalice el código a cualquier función,
indicando lectura y escritura por archivo de datos.
b. Se sabe que la función e-x+ 4x3- 5 tiene una raíz en x = 1.05151652,
resuelva para el intervalo [1 ,2], con el método de Muller, para un límite de
1 O iteraciones, luego elabore una tabla indicando el valor de la raíz, el
número de iteración y el error porcentual. ¿Aumenta o disminuye
conforme se incrementa el número de iteraciones?
c. Desarrolle un programa que calcule la raíz positiva de f(x) = x- cos (2x),
mediante el método de Newton hasta seis cifras significativas, utilice
como aproximación inicial x = n/4. Adicionalmente genere el diagrama de
flujo.
d. La aceleración del cerrojo en un mecanismo deslizador-manivela está
dado por la ecuación:
Se desea determinar el ángulo e de la manivela, respecto a una línea
que pasa por el punto fijo de la misma, si se conoce que: a = 25 cm/s2, e
(cociente de la longitud de la manivela y la longitud de la barra cerrojo)
es: 1.3, ro (velocidad angular de la manivela) es: 5.6 rad/s, r (longitud de
la manivela) es 0.8 cm.
85
e. La potencia adiabática teórica necesaria para comprimir un volumen de
gas de Q pies cúbicos por segundo de la presión P1 a P2 es:
HP- 144K p P2 _ 1 ( J [( J(K-1)/K ]
- 500(k -1) 1Q P1
En esta ecuación Q es la cantidad de gas comprimida (2.4 pies3/seg), P1
es la presión inicial del gas (12 lb/in2), P2 es la presión final del gas (30
lb/in2) y K es el cociente de calor específico a presión constante entre el
calor específico a volumen constante. Determinar K.
f. La amplitud A de una oscilación Forzada, está dada por la ecuación:
Dónde: Q, es el valor de la fuerza periódica de perturbación (0.1 N), K es
la constante del resorte (25 N/m), oo es 2n la frecuencia de excitación (f =
2.3Hz), oon es 2n la frecuencia de natural de oscilación (fn = 5.0Hz) y e es
el coeficiente de amortiguamiento. Determinar e, si se sabe que A es
igual a 0.5 m.
g. Un recipiente de diámetro D = 0.5 cm y lleno de agua hasta una altura h
de 0.2m, se perfora circularmente en su base, la velocidad V con la que
desciende el nivel del agua es 8x10-4 mis, y está dada por:
Determinar el diámetro de la perforación d, considerando g = 9.8 m/s2
86
h. Si la energía cinética de un electrón (m0 = 9.11 x 1 o-31 Kg) es 5 Me V,
determine su velocidad v a partir de la siguiente ecuación relativista:
Dónde: e, es la velocidad de la luz (3x1 08 m/s)
1 Me V = 1 .6x1 o-13 J
i. El momento transferido a un núcleo en una dispersión incoherente con
fotones no polarizados de energía cinética k es:
2ksen(8/2)[1 +(k 2 + 2k)sen(8/2)]112
a = ----'----=--=-------'------'-----'----=---
• 1+2ksen 2 (8/2)
Si q es el momento transferido e igual a 10-8 Ns, y e el ángulo de
dispersión e igual a n/2, determine la energía cinética k de los fotones
incidentes en eV.
j. Para neutrones que colisionan con un núcleo y cuya energía sea menor a
unos pocos MeV la dispersión es isótropa y la relación entre los ángulos
de dispersión en los sistemas de centro de masa y laboratorio es:
Acos8+1 cos <p = --;=======
.) A 2 + 2A cos e + 1
Dónde: e, es el ángulo dispersado respecto al centro de masas y en
este caso igual a n radianes.
cp, es el ángulo dispersado respecto al laboratorio, en este caso
numéricamente igual a n/3 radianes.
Determine la constante de normalización a la unidad A.
87
6.3 Capítulo 111
3. Solución de sistemas de ecuaciones lineales
Los métodos numéricos para resolver sistemas de ecuaciones lineales se pueden
dividir en dos tipos, exactos e iterativos. Los métodos exactos son aquellos en los
cuales en ausencia de errores de redondeo u otros, proporcionan la solución exacta
para un número finito de operaciones aritméticas elementales. En la práctica, puesto
que un computador trabaja con una longitud de palabra finita, los métodos directos no
conducen a soluciones exactas; en realidad los errores que provienen del redondeo,
inestabilidad y pérdida de cifras significativas pueden conducir a resultados
extremadamente pobres o inútiles.
Una gran parte del análisis numérico tiene que ver con el por qué y como del
surgimiento de errores y la búsqueda de métodos para minimizar la totalidad de estos.
La técnica fundamental usada para solución directa de sistemas de ecuaciones
lineales es la eliminación de Gauss, pero aun dentro de esta clase de métodos hay
una gran variedad de escogencias que varían en eficiencia computacional y en
exactitud.
Dónde:
Un sistema de tres ecuaciones lineales se representa de la siguiente manera:
Ax. + By + Cz = O
Ex+ Fy + Gz = H
lx + Jy + Kz = L
(3.1)
(A, 8, C, E, F, G, 1, J, K), son coeficientes del sistema y corresponden a
los elementos ge la mé;ltriz A, (O, H, L), son valores constantes y corresponden a la matriz de
términos independientes B.
(x, y, z), variables por determinar, corresponden a la matriz de
incógnitas X.
Para resolver el problema (hallar las incógnitas), representamos las ecuaciones
(3.1), como un producto de matrices, a modo de facilitar el uso de la técnica de
eliminación y sustitución regresiva.
88
(3.2)
Recordemos que una condición para que se realice el producto de matrices, es
que el número de columnas de la primera matriz sea igual al número de filas de la
segunda, es decir:
A mxn .B nxp = C mxp (3.3)
3.1 Método de eliminación de Gauss y sustitución regresiva
Sean A una matriz cuadrada dada de orden N, y B un vector dado de orden N;
se desea, resolver la ecuación matricial:
AX=B (3.4)
El vector solución X puede obtenerse sin dificultad en caso de que A sea
triangular superior con todas la entradas diagonales no nulas. como generalmente no
se presenta este caso, nuestro trabajo será convertir la matriz A y B en A' y 8', tal que
se cumpla lo siguiente:
A'X=B', donde: A' es una matriz triangular superior.
Para lograr esto utilizamos la matriz ampliada [A: b], que es fa unión de
términos de A y B; así, para el caso de un sistema de 3 ecuaciones lineales con 3
incógnitas, en orden cero la representación es:
Dónde:
(3.5)
[E1]0
, es la representación de la primera fila de la matriz ampliada en
orden cero.
89
Por eliminaciones sucesivas, convertimos esta matriz ampliada a otra nueva,
de modo que al final se obtenga [A: B]N-1 , es decir una matriz ampliada en orden N-1,
entonces:
[A:B]o -+[A: B]1-+ ............ -+[A: B]N-2-+ [A: B]N-1 (3.6)
El método consiste en sustituir los vectores fila [E¡]m secuencialmente en dos pasos:
i) [E)m = [Eir-1; (j = 1, 2, ..... , m)
ii) m-Í
[E.]m =[E.]m-1 _ aim [E ]m-1. (" + 1 N) ¡ ¡ m-1 m ' 1 = m ' ...... '
a mm
(3.7)
Donde m, es el orden de eliminación y el valor amm es el elemento pivote por
aplicaciones sucesivas de los pasos (3.7), se llega a una matriz ampliada [A: st\ que
es una matriz triangular superior de la forma:
l N'
N-1 N-' b N-• J a¡¡ a1z al3 1
[A:Bt-1 = ~
N-1 N-1 b N-1 (3.8) azz az3 z
o N-1 b N-1 a33 3
En este punto podemos resolver el sistema, acomodando la ecuación (3.8) en la
siguiente forma:
[
N-1 an o o o
N-IJ( J [b N-1 J al3 X= X¡ 1
a23N-l ly = Xz = b2N-l
N-1 b N-1 a33 z = X3 3
El proceso de sustitución regresiva tiene dos partes:
(3.9)
a) Dado que la última ecuación solo involucra a z (x3) y siendo que aNNN-1 F O,
debemos tener:
bN-1
X - N N- N-1 aNN
90
(3.1 O)
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:
[bN-1 ~ N-1 ] 1 . (" - N 1 1) xí = í - .L..,.aít xt N-1 ' 1- - , ...... ,
t=>+1 a¡; (3.11)
Ejemplo:
Resolver mediante el método de Eliminación de Gauss y Sustitución Regresiva
el siguiente sistema de ecuaciones lineales:
En notación matricial, tenemos:
-1 x + 1 y - 4z = O
2x + 2y = 1
3x+ 3y+ 2z = 1/2
Calculamos la matriz ampliada [A: 8]0, en orden cero.
Llevamos [A: b]0 -+[A: b]\ el elemento pivote es el primer valor de la diagonal,
entonces, como es la primera eliminación m = 1.
Se mantiene fijo el primer vector fila, es decir: [El = [E1]1
El cálculo se inicia para [E2]1
91
[E,]' ~[E,J'-(:::)E¡J' ~(2 2 o 1)-(:1)-1 1 -4 oHo 4 -8 1)
[E,J' ~ [E,J' -( :::)E,J' ~ (3 3 2 112)-( ~1 )c-1 1 -4 o)~ (o 6 -10 112)
La nueva matriz ampliada [A: 8]1
1 -4 o J 4 -8 1
6 -101/2
Como [A: 8]1 no es una matriz triangular superior, es necesario repetir el proceso a
partir del vector fila por reducir.
Llevamos [A: 8]1 -+[A: 8f; el elemento pivote es el segundo valor de la diagonal, para
este caso m = 2.
Fijo el primer y segundo vector fila, es decir: [E1f = [E1]1 y [E2f = [E2]1
El cálculo se inicia para [E3] 2
[E,l' ~ [E,l' -( ::: J[E,J' ~(o 6 -10 112)-(¡}(o 4 -8 1) ~(o o 2 -1)
La nueva matriz ampliada [A: 8f es:
1 -4 o] 4 -8 1
o 2 -1
Esta matriz es triangular superior. Nótese que se emplearon N-1 matrices ampliadas.
En este punto procedemos a efectuar la sustitución regresiva:
92
El proceso de sustitución regresiva tiene dos partes:
a) Operando con la ecuación (3.1 O) se tiene:
b2 -1 X =-3- -+ Z =-
3 2 2 a33
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:
i =2
x2 =y= -0.75
i =1
x1 = x = 1.25
Las soluciones del Sistema son: x = 1.25; y= -0.75 y z = -0.5
93
Los resultados computacionales para este problema empleando Fortran son los
siguientes:
SOLUCION DE SISTEMAS DE ECUACIONES LINEALES ELIMINACION GAUSS Y SUSTITUCION REGRESIVA
============================================================ INGRESO DE DATOS (SOLUCION SISTEMA DE N EC.CON N INCOGNITAS
INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES 3
INGRESE ELEMENTOS DE MATRIZ A
-1.0 1.0 -4.0 2.0 2.0 0.0 3.0 3.0 2.0
INGRESE VECTOR DE TERMINOS INDEPENDIENTES
0.0 l. O 0.5
MATRIZ TRIANGULAR SUPERIOR PRELIMINAR
-1.00000 .00000 .00000
1.00000 4.00000 6.00000
-4.00000 -8.00000
-10.00000
MATRIZ TRIANGULAR SUPERIOR PRELIMINAR
-1.00000 .00000 .00000
MATRIZ INGRESADA
-1.00000 2.00000 3.00000
1.00000 4.00000
.00000
l. 00000 2.00000 3.00000
-4.00000 -8.00000
2.00000
-4.00000 .00000
2.00000
MATRIZ TRIANGULAR SUPERIOR FINAL
-1.00000 .00000 .00000,
SOLUCIONES
X 1= X 2= X 3=
l. 25000 -.75000 -.50000
1.00000 4.00000
.00000
-4.00000 -8.00000
2.00000
94
.00000 1.00000
.50000
.00000 1.00000
-1.00000
Codificación:
La codificación elaborada que genera los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM SOLUCION_SIST_EC_LINEALES
REAL(4) A(188,188),A1(188,188),XSOL(188)
18 WRITE (*,*)'' WRITE (*,*)' SOLUCION DE ECUACIONES LINEALES SIMULTANEAS ELIMINACION DE' WRITE (*,*)' GAUSS Y SUSTITUCION REGRESIVA' WRITE (*,*)' ==========================================================' 1.-JRITE (*, *)' ' WRITE (*,*)' INGRESO DE DATOS (SOLUCION SISTEMA DE N CON N INCOGNITAS)' WRITE (*, *)' ========·=================================================='
WRITE ( *, *) ' ' WRITE (*,*)' INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES ' READ (*,*)M1 WRITE (*, *)'' WRITE (*,*)' INGRESE ELEMENTOS DE MATRIZ A' DO I=1,M1 READ(*,*)(A(I,J),J=1,M1) END DO
DO I=1,M1 WRITE (*,*)' INGRESE VECTOR DE TERMINOS INDEPENDIENTES' READ(*,*)A(I,M1+1) END DO
COPIANDO EN LA MATRIZ DE PASO 28 LP=2
LN=LP-1 DO I=1,M1 DO J=1,M1+1 A1(I,J)=A(I,J) END DO END DO FIN DEL COPIADO HACIENDO LA ELIMINACION
21 DO I=LP,M1 WPAS01=A1(I,LN) WPAS02=A1(LN,LN) DO J=1;M1+1 A1(I,J)=A1(I,J)-(WPAS01/WPAS02)*A1(LN,J) END DO END DO FIN DE LA ELIMINACION REPITIENDO EL PROCESO
WRITE(*, *)'' WRITE(*,*)' MATRIZ TRIANGULAR SUPERIOR PRELIMINAR'
95
WRITE(*J*)' ===================================== DO J'.U=lJf·U WRITE(*Jlee)(Al(MIJMJ)JMJ=lJMl+l) END DO t'IIRITE(*.; *)''
LP=LP+l LN=LP-1 IF (LP.GT.Ml)THEN NK=Ml GOTO 27 ELSE GOTO 21 END IF SUSTITUCION REGRESIVA
27 SUMA=e DO J=lJMl SUMA=SUMA+Al(NKJJ)*XSOL(J) END DO XSOL(NK)=(Al(NKJMl+l)-SUMA)/Al(NKJNK) NK=NK-1 IF (NK.LE.e) THEN GOTO 28 ELSE GOTO 27 END IF FIN DE SUSTITUCION REGRESIVA PRESENTACION DE RESULTADOS
28 WRITE (*J*)'' WRITE(*J*)' MATRIZ INGRESADA' WRITE(*J*)' ================ DO I=lJMl WRITE(*Jlee)(A(IJJ)JJ=lJMl) END DO WRITE(* J *)'' WRITE(*J*)' MATRIZ TRIANGULAR SUPERIOR' WRITE(*J*)' ========================== DO I=lJMl WRITE(*Jlee)(Al(IJJ)JJ=lJMl) END DO WRITE ( *; *) ' ' WRITE(*J*)' SOLUCIONES' WRITE(*J*)' ========== DO I=l,Ml WRITE(*J29)IJXSOL(I) END DO FIN DE PRESENTACION WRITE ( * J *) ' ' WRITE(* J *)'' WRITE(* J *)''
29 FORMAT (lXJ' X'JI3J '='JF11.5) 1ee FORMAT (15(3XJF11.5))
WRITE ( * J *) ' ' t>JRITE ( * J *) ' ' END
96
3.2 Método de descomposición LU (Lower-Upper)
Nuevamente el problema es resolver la ecuación matricial AX = B, vale decir la
solución del sistema de ecuaciones lineales.
Pero en este caso definimos A como: A=L.U, ó sea el producto de dos matrices
Ly U, donde:
rt .. o 0 ............ o
121 122 0 ............ o L= y U=
\)ni ln2 1n3·········· 1nn
Además podemos definir las siguientes operaciones:
L(U.X) = B L .Y = B U. X= Y
U¡¡ U¡z ul3 ......... U In
o U22 u23 ......... u2n
o o 0 ........... unn
Donde y es una matriz columna accesoria, que puede obtenerse de la relación:
r¿· u¡2 ul3"""'" U In rx, y¡
Uzz u23 ......... u2n Xz y2 =
o 0 ........... \o unn \Xn Yn
Ahora por definición sabemos que LU = A, entonces:
¡~· o 0 ............
ii ["~· U¡z uB ......... u,. l [a., a¡z aJ3·········
121 122 0 ............ ll22 u23 ......... U2n a21 a2z a23 ........
. .
In! ln2 ln3 .......... o 0 ........... unn anl an2 an3········
97
(3.12)
(3.13)
(3.14)
aml a2n
ann
(3.15)
Por lo cual es posible definir:
N
,l)ikuki = aii donde: (i = 1,2,3,4, ..... , N) y G = 1,2,3,4, ..... , N) (3.16) k=l
Por conveniencia hacemos: l¡¡ = 1, donde: (i = 1, 2, 3, 4, ...... , N), es decir todos los
elementos de la diagonal principal de L son iguales a i. También u1¡ = a1¡, de modo que
podemos simplificar los cálculos, quedando por determinar elementos en un triángulo
más pequeño.
Para nuestra matriz A, podemos diferenciar los elementos para los cuales (i > j) y los
elementos donde (i::; j), así:
Para los elementos donde (i > j)
Para los elementos donde (i ::; j)
j
I lik u¡q = aii k=l
1
"likuk. = a .. L.J ' •J lJ k=l
Esto nos permite hacer la evaluación de los uli y los lu, restantes:
i-1
uii = a;i- .l:Iikukj (i = 2,3, ..... ,j) k=l
1 i-1
l;i = -(aij- IIikuki) (i = j +1, ..... ,N) a_¡¡ k=1
(3.17)
(3.18)
(3.19)
Calculados los valores de L y U, debemos resolver primero L.Y = B, para obtener los
valores de la matriz accesoria y, lo cual nos permitirá calcular los valores de x,
resolviendo U.X = Y.
Nota: en el primer caso será necesario realizar una sustitución progresiva (Upper) y
en el segundo una sustitución regresiva (Lower).
98
Ejemplo:
Resolver el siguiente sistema de ecuaciones lineales con el método de
descomposición LU.
En notación matricial, tenemos:
2x + 5y + 7z = 1 O
5x + By - 3z = 15
3x - 9y + 6z = -8
Iniciamos la descomposición recordando que: u1¡ = a1¡ , l¡¡ = 1 y A= L.U, entonces:
[1:, o
~J [~ 5
u:}[~ 5
~3J 1 Uzz 8
131 132 o u33 3 -9
Triangular: inferior superior
Calculamos los valores de 1 y u intercalando las formulas (3.17) y (3.18)
1
1 . ~ 1 1 (?) (Z) (5) 1 21 ~ a21 = ~ 2k uk1 ~ 21 Un = a2I ~ 21 = 2.5
k~!
2 "1 1 (5/2) (5) 1 (!) (?) (8) u2z ~ a22 = L...J 2k uk2 ~ 21 u12 + 22 u22 = a22 ~ u22 = -4.5
k=o1
1
1 " 1 1 (?) (2) (3) 1 31 ~ a31 = L...J 3k uk1 ~ 31 Un = a3I ~ 31 = 1.5
k~I
2 "1 1 (5/2) (7) 1 (!) (?) (-3)
u23 ~ a23 =.L.. 2k uk3 ~ 21 ul3 + 22 u23 = a23 ~ u23 = -20.5 k~!
2
1 "1 1 (3/2) (5) 1 (?) (-4.5) (-9) 1 32 ~a32 = L...J 3kuk2 ~ 31 ui2 + 32 U22 =a32 ~ 32 =3.7
k~!
3 "1. 1. (3/2) (7) 1. (3.7) (-20.5) 1. (1) (?) (6) 7 U33 ~ a33 = L...J 3k uk3 ~ 31 ul3 + 32 u23 + 33 U33 = a33 ~ u33 = 70.
k~!
99
Usamos la relación L Y = B, para calcular el vector accesorio por sustitución
progresiva, así:
[2\ 1.5
o 1
3.7
El proceso de sustitución progresiva tiene dos partes:
a) Dado que la primera ecuación solo involucra a y1 y siendo que 111 * O, debemos
iener:
b¡ y¡=-
1¡¡
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:
10 = 10, y¡=¡
Y- = [b- -~ l y l _1_ 2 2 L... 2t tj l
t=l 22
[
2
] 1 = b- l -Y3 3 L 3tYt ¡ t=l 33
(i = 2, 3, ...... , N)
Luego calculamos el vector X, de la relación: U .X= Y, por sustitución regresiva, así:
l~ -:.5 -2~.5J(l~J = [-\
0
oj o o 70.7 z 14
100
El proceso de sustitución regresiva tiene dos partes:
a) Dado que la última ecuación solo involucra a X3 y siendo que UNN "* O, debemos
tener:
YN X-N-UNN
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:
[
N ] 1 . . x1 = Y; - í:u;1X1 -; (1 = N-1 , ...... , 1) t=i+l U¡¡
Finalmente aplicando una sustitución regresiva se obtiene:
14 Z =X =--= 0.198 3
70.7
101
Los resultados computacionales con el programa en Fortran son:
DESCOMPOSICION LU (LOWER UPER)
INGRESO DE DATOS
INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES 3 INGRESE ELEMENTOS DE MATRIZ A
2.0 5.0 7.0 5.0 8.0 -3.0 3.0 -9.0 6.0
INGRESE VECTOR DE TERMINOS INDEPENDIENTES
10.0 15.0 -8.0
MATRIZ A
2.0000 5.0000 7.0000 5.0000 8.0000 -3.0000 3.0000 -9.0000 6.0000
MATRIZ L
1.0000 .0000 .0000 2.5000 1.0000 .oooo 1.5000 3.6667 1.0000
MATRIZ U
2.0000 .0000 .0000
5.0000 -4.5000
.0000
7.0000 -20.5000
70.6667
SOLUCIONES
X: 1 .9701 X: 2 l. 3412 X: 3 .1934
102
Codificación:
La codificación que genera los resultados mostrados del ejemplo anterior es la
siguiente~
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM DESCOMP LU
REAL(4) A(100~100)~WL(100~100)~U(100~100)~8(100)~X(100)~C(100)
10 WRITE (*~*)''
WRITE (*~*)' DESCOMPOSICION LU (LOWER UPPER)' WRITE (*j*)' ================================ WRITE ( *, *) ' ' WRITE (*~*)' INGRESO DE DATOS' WRITE (*,*)' ============================================= WRITE ( * ~ *) ' ' WRITE (*,*)' INGRESE DIMENSION DE LA MATRIZ DE COEFICIENTES ' READ (*,*)M1 WRITE (*, *)'' WRITE (*~*)' INGRESE ELEMENTOS DE MATRIZ A' DO I=1~M1 READ(*,*)(A(I~J)~J=1~M1) END DO WRITE (*~*)' INGRESE VECTOR DE TERMINOS INDEPENDIENTES' DO I=1~M1 READ(*~*)B(I) END DO WRITE ( *; *) ' '
20 DO J=1~Ml U(l~J)=A(l,J) END DO DO J=l,Ml WL(J~J)=l END DO SUMA3=0 SUMA4=0
DO J=l~M1 SUMA3=0
DO I=2~J
SUMA3=0 DO K=l,I-1 SUMA3=SUMA3+WL(I,K)*U(K,J) END DO U(I,J)=A(I,J)-SUMA3 END DO SUMA4=9 DO I=1,Ml
SUMA4=9 DO K=l,J-1
103
SUMA4=SUMA4+WL(I,K)*U(K,J) END DO
WL(I,J)=(A(I,J)-SUMA4)/U(J,J) END DO
END DO WRITE(*,*)' MATRIZ A' WRITE( * *)' --------' J --------
DO J=1,M1 WRITE(*,30)(A(J,I),I=1,M1) END DO WRITE(*,*)' MATRIZ L' WRITE( * *)' --------' J --------
DO I=1,M1 WRITE(*,30)(WL(I,J),J=1,M1) tND DO WRITE(*,*)' MATRIZ U' WRITE( * *)' --------' J --------
DO I=1,Ml WRITE(*,30)(U(I,J),J=1,M1) END DO NK=1
26 SUMA=0 DO J=M1,1,-1 SUMA=SUMA+WL(NK,J)*C(J) END DO C{NK)=(B(NK)-SUMA)/WL(NK,NK) NK=NK+1 IF (NK.GT.M1) THEN NK=M1 GOTO 27 ELSE GOTO 26 END IF
27 SUMA=0 DO J=1,M1 SUMA=SUMA+U(NK,J)*X(J) END DO X(NK)=(C(NK)-SUMA)/U(NK,NK) NK=NK-1 IF (NK.LE.0) THEN GOTO 28 ELSE GOTO 27 END IF
28 WRITE(*,*)' SOLUCIONES' WRITE(*,*)' ========== DO I=1,M1 WRITE(*,35)I,X(I) END DO
30 FOR~AT (7(F8.4)) 35 FORMAT (' X:',I3,F8.4)
END
104
Problemas de aplicación
Los siguientes problemas y cuestiones pueden resolverse empleando los
algoritmos propuestos para cada método presentado; para una solución usando el
computador, se recomienda elaborar programas en el lenguaje Fortran.
a. Determine las concentraciones molares de una mezcla de cinco
componentes en solución a partir de los datos mostrados en la tabla
(3.1).
Tabla (3.1), Datos espectrofotométricos.
Lañ9iiücl -ae---·· -· ······ ·-····AEs9'r6-añ~Büi.mal~·r.·JEú .. qam·p·óne·nt~:r;- ·.'-··· ··-···· ··'A6sorbanCia·--··· : :·· ~~-.\~-- -<-/ ... ~~-:. ~::::·, .. :,; ........ ,:e_..,,.~~----.:~: ... ~-.:-:::.~: --~- :------~----- ...... ;, •. ~ . .,,. . . -~-----. . ·._· .. -:~ ~~- ... :\ ·. _.,:( _.:.: .... : :_ :_ •. , ..
onda i 4 > .··.· 5 · total observada
·•b.s-····•.··· .. · 0.1100
Considere que la longitud de la trayectoria óptica es unitaria y que el solvente no
absorbe a estas longitudes de onda. También se debe considerar que se cumple la
ley de Beer, entonces a una longitud de onda dada, ocurre:
Donde:
n
AToT = ""fO .. c 1 LlJ J j=l
Arar¡= absorbancia total observada a la longitud de onda i.
r>u = absorbancia molar del componente j a la longitud de onda i
ci =concentración molar del componente j en la mezcla.
105
b. Se necesita preparar una formula alimenticia para engordar ganado, se
dispone de maíz, desperdicios, alfalfa y cebada, cada uno con ciertas
unidades de ingredientes nutritivos, de acuerdo con la tabla (3.2).
Tabla (3.2), Unidades de ingredientes nutritivos por Kg. en cada alimento disponible.
Ingrediente > 1\/léáíz Desperdicio ·<Aifálfc:l Cebada
nutritivo
Requerimiento
diario
unidades/Kg. ·-~-<- -~ ........ ~-~--~-,-~·····,.·~-~::::~--~:.:~ .. ~~;.::.;..:;;, .'(~~--~ :~--.. ~.;~--~~·.::"(_:: •. ~ ..... ,~-~-~- .. ··--··-~--~--~-,.·o.·~--~--~- .. ··~-~-,.~--,~- ..... ,. ........... ~-~-........ ,..,., .. ,..,. ...... ~., .. ,. . ., .. -..... ,..~_, __
Cárbohidrátos·····.. · so· .. ·.·.· 15 Proteína < ~k··· .. ·.·.····· .. · . 72
······ ···v·•·t· ·.· .. · .... ··.· ·.·.· . ··· ....• ·.·.2:···a· <· .. ·. · .. ·.· .. ·.· •.·.· ... ·2·.a·.·.·.·.•.<· .· >1······2· .•. ·.···•.•··········•· .. ··.·.· .. •. ·.··••.··.·.•·•.· .. ·.··•.· ... ··.·.··.·2· .·a· .·•··•·. •• · .· • .l. í:lmmas .·.. · .. ::········.· ........ •.·.··•s···•··•··.··a···•.··.··•.·.·.·.·.···.···.·· .. ·•.·.· .. •·.••.· .. •·.·.· .. •.·.···•·•••·.·····.···:: ···: 1 o 60 Celulosa ~()\ i
35 < !3.0> • .. ·.· !)¿\ . 25
··· ... <23o··.··.·
180
160 -~~-....-.-........ ~-- --~-................ , .. ·----· ....... , ...... ~-~ ........ , "' .,., .................. ~--:~-: <~:"·:·;·.~--~:-.. : ·. . ............. ,, .. ,,-: ..... ,.. ............... .,...,-._. ........... . .... .,., .. , .................. :::-:~~~~-~~ ~- ~:-~ ... -;,_~~~-- . -~-.-..... ., .. .._,: ... ., ....... ~ .......................... ,.,_._,,- ................ ..,..._ ................................................... -.......................... , .. ..,_._ ..................................... ·---~~-.~~-~
Costo en soles · t8 5 >. T > 20 -~·-~··--··'''"'·''''-."•''-'·"''·'"''''•'"'•'•'•'••,.. ................ .,..'<' ..... ·~~·'"·~--:~~:::~ ... :;·~~-~-:-.. :.::- .:_::·::~ ..................... -.-.~····''" .... "'"~----..... , .. --,-.-.~·.-.--.--~:~:~;-~~-:.~:>:::~:~~~ ·.· ... -: .... , ........... ~ .. · ..................... , ......... ..,., ... , . .,. .... ,--. ... -. ... ,,, ............................. -<o-.......-.·--.~··"'"''•·-·.-.-. ... --..-... -.. ...................... _.. ........ .
a) Calcule los kilogramos necesarios de cada material para satisfacer el
requerimiento diario (presentado en la última columna).
b) Determine el costo de mezcla.
Nota: la formula alimenticia debe contener los cuatro alimentos.
c. Considerando la red de la figura (1.2), con s1 = 8V, s2 = 4V, r1 = 1.5Q, r2
= 1.0Q, r3 = S.OQ, r4 = 6.0Q, r5 =2.0Q. Determine la intensidad para la
corriente que circula por cada malla (1 1, 12 e 13).
malla A
Figura (3.2). Circuito de corriente continua.
106
Nota: Aplique las reglas de Kirchhoff a cada una de las mallas, construya su
sistema de ecuaciones lineales y condiciónelo de manera que tenga diagonal
dominante.
d. Una masa M de 2 Kg. se encuentra suspendida de dos cuerdas, tal
como se ve en la figura (3.3). Calcule la tensión en cada una de las
cuerdas, sabiendo que el sistema se encuentra en equilibrio.
Figura (3.3). Sistema estátiéO.
e. Una masa M de 1.5 Kg. Está sujeta a un techo por tres cables, tal como
se muestra en la figura (3.4). Calcule la tensión para cada cable, si el
sistema se encuentra en equilibrio.
Figura (3.4). Sistema estático.
107
6.4 Capítulo IV
4. Ajuste de curvas
En física los datos a menudo son valores discretos a lo largo de un continuo. En
este capítulo, se describen técnicas para el ajuste de curvas de tales datos para
obtener de igual modo estimaciones intermedias, pero podremos además conseguir
versiones simplificadas de funciones en un numero de valores discretos a lo largo del
dominio de interés, pudiendo luego derivar una función más simple para ajustar esos
valores; a esta aplicación se le conoce como ajuste de curva.
Existe un procedimiento general para el ajuste de curvas que se distingue por
trabajar con el grado de error asociado con los datos. Es decir, donde los datos
exhiban un grado significativo de error o "ruido", la estrategia será derivar una sola
curva que represente la tendencia general de los datos. Debido a que cualquier dato
individual puede ser incorrecto, no se necesita interceptar cada punto. En lugar de
esto, se designa una curva para seguir un patrón de los puntos tomados como un
grupo. Este procedimiento se conoce como regresión por mínimos cuadrados.
La regresión por mínimos cuadrados se basa en la suposición de que la
relación entre variables dependientes e independientes es lineal ó en todo caso está
dada por una función polinómica; sin embargo, este no siempre es el caso, por ello
algunas veces se requiere utilizar transformaciones (linearizaciones), para expresar los
datos en forma que sea compatible con la regresión lineal, de ese modo será posible
resolver problemas físicos que impliquen ajustar datos procedentes de experimentos
reales, para derivar funciones que relacionen fas variables del fenómeno.
4.1 Regresión por mínimos cuadrados
Esta técnica surge debido a la necesidad de hacer a un lado la subjetividad de
trazar la mejor línea a través de los puntos por simple inspección visuaí. Una forma de
hacerlo es derivar una curva que minimice la discrepancia entre los puntos y fa curva.
Supóngase que se desea ajustar una curva a un conjunto de datos aproximados,
como los obtenidos por estudiantes en el laboratorio de física para determinar los
efectos de la temperatura sobre una resistencia. Los estudiantes registraron las
mediciones de temperatura y resistencia como se muestra en la figura (4.1), donde la
gráfica sugiere una relación lineal.
108
Quiere determinarse de manera idónea las constantes a y b en la ecuación que
relaciona la resistencia R con la temperatura T.
R = aT+h
De modo que en un empleo ulterior sea posible predecir la resistencia a
cualquier temperatura. La recta, trazada a simple vista, representa bastante bien a los
datos, pero si estos vuelven a trazarse y se pide algo mas para dibujar una recta, rara
vez se obtiene exactamente la misma recta.
1050
1000
• 950 ~
~ o
/ "' T,"C R,Ohms ·e:; 900 e
20.J 76~ Q)
u; 37..7 27.6 ·¡;; Q) 51.0 873
0:: T},2 942 95.7 1032
850
Temperatura( oc) 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Figura (4.1). Grafica Resistencia vs. Temperatura con recta de ajuste.
Las desviaciones de los puntos se miden por las distancias de los puntos a la
recta, y como se miden estas distancias depende del hecho que ambas variables
estén sujetas a error, en el caso del ejemplo resistencia temperatura se supondrá que
el error al leer las temperaturas en la figura (4.1) es despreciable, de modo que todos
los errores estén en la medición de la resistencia, y se usaran distancias verticales,
entonces las desviaciones pueden minimizarse haciendo su suma un mínimo,
considerando el caso de solo dos puntos ver figura (4.2).
109
Resulta evidente que la mejor recta para por cada punto, pero cualquier recta
que pase por el punto medio del segmento que une los puntos tiene una suma de
errores igual a cero.
Figura (4.2). Error asociado a dos datos, respecto a recta de ajuste.
Además de proporcionar uri resultado único para un conjunto de datos, el
método de mínimos éuaaradós también coincide con el principió de máXima probabilidad de estadística.
Si los errores de medición poseen una distribución denominada normal y si la
desviación estándar es constante para todos los datos, entonces puede demostrarse
que la recta determinada al minimizar la suma de los cuadrados tiene valores de
pendiente y ordenada al origen con máxima probabilidad de ocurrencia.
4.2 Regresión lineal
El ejemplo más simple de una aproximación por mínimos cuadrados es mediante
el ajuste de un conjunto de pares de observaciones; así, sea Y¡ un valor experimental,
y sea y¡ un valor de la ecuación:
y¡ =ax¡ +b (4.1)
Donde X¡ es un valor particular de la variable que se supone libre de error. Quiere
determinarse los mejores valores para a y b de modo que las y predigan los valores de
la función que corresponden a los valores de x. Sea e¡ = Y¡- y¡. El criterio de mínimos
cuadrados requiere que:
1"10
N N
S = e; +e; + ....... + e~ = Le; = L (Y¡ - ax¡ -bY (4.2) i=l i=l
La ecuación (4.2), sea mínima. N es el numero de pares (x,Y). Se alcanza el mínimo
al elegir adecuadamente los parámetros a y b, de modo que sean las "variables" del
problema. En el mínimo para S, ambas derivadas parciales astaa y astab son cero.
Por tanto, recordando que las X¡ y las Y¡ son puntos de datos no afectados por la
elección de los valores de a y b, se tiene:
as N -=O= ¿2(Yi -axi- b)(-xJ aa i=l
as N -=O= ¿2(Y¡ -ax¡- b)(-1) oh i=l
(4.3)
Al dividir entre -2 cada una de estas ecuaciones y desarrollar la sumatoria, se obtienen
las denominadas ecuaciones normales.
i=l i=l i=l
N N (4.4a)
aixj +bN= IY¡ i=l i=l
Al resolver simultáneamente estas ecuaciones se obtienen los valores para la
pendiente y la ordenada al origen a y b, respectivamente. Para ello emplearemos las
siguientes ecuaciones:
N N
N Ix¡IY¡ "'x. y - i=l i=l ¿ 1 1 N. i=l a=---------
(Ix·J2 fx;- i=1N1
i=l
(4.4b)
N N
IY¡ -aix¡ b = _i=_l ___ i_=l __
N
111
Para los datos mostrados en la figura (4.1), se encuentra que:
N=5;LT¡ =273.l;LT¡2 =18607.27;LR¡ =4438,
I T¡R¡ = 254932.5
Luego las ecuaciones normales son:
18607.27a + 273.lb = 254932.5
273.la + 5b = 4438
A partir de lo anterior se encuentra a = 3.395, b = 702.2 y así, la ecuación se escribe
como:
R = 702+ 3.39T
De esta ecuación que relaciona las variables resistencia y temperatura, es
posible predecir datos más allá de los obtenidos experimentalmente.
Ejemplo:
Usando el método de mínimos cuadrados para regresión lineal, ajuste la
siguiente tabla de datos experimentales, y determine la relación entre las dos
variables.
· x f(x)
·•-·. o;1o 5.3o
0:20 5.30 .·
·. 0.30. 5.60
.0.40 .· .5.76
: 0,50 6.00
.· 0~60 ·. 6.32 ·:.:. ·.· ... · .
0.70 . 6.61
0.80 6.60
ü.·so •••· e.8o. ·. •·· J.OO · TOO
1.10·.·.· 6.20
120 •.. ·.· 7.76 .-
1.30 7.60 · ..... ·
f4ó 7.80 . ·.:· .... :·.
1:50 8.30
9.orn---·-················-----·---·-------·--··--··························----------·-·························································
8.0
7.0
6.0
5.0
4.0
3.0
2.0
0.0 0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60
112
La solución computacional arroja los siguientes resultados:
AJUSTE LINEAL MÍNIMOS CUADRADOS
INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100)) 15
INGRESE PARES UNO POR UNO INGRESE PAR NRO. 1 X E y 0.1 5.3 INGRESE PAR NRO. 2 X E y
0.2 5.3 INGRESE PAR NRO. 3 X E y
0.3 5.6 INGRESE PAR NRO. 4 X E y
0.4 5.76 INGRESE PAR NRO. 5 X E Y e. s 6 INGRESE PAR NRO. 6 X E y
0.6 6.32 II\JGRESE PAR NRO. 7 X E y 0.7 6.61 INGRESE PAR NRO. 8 X E y
0.8 6.6 INGRESE PAR NRO. 9 X E Y 0.9 6.8 1
INGRESE PAR NRO. 10 X E y 1 7 INGRESE PAR NRO. llX E y
1.1 6.2 INGRESE PAR NRO. 12 X E y
1. 2 7. 76 INGRESE PAR NRO. 13X E y
1.3 7.6 INGRESE PAR NRO. 14 X E y
1.4 7. 8 INGRESE PAR NRO. 15 X E Y 1.5 8.3
RESULTADOS
PENDIENTE = 2.0054 INTERSECCION CON EL EJE Y = 4.9924
N X Y(AJUSTADO) 1 .1000 5.1929 2 .2000 5.3935 3 .3000 5.5940 4 .4000 5.7945 5 .5000 5.9951 6 .6000 6.1956 7 .7000 6.3961
113
8 .8000 6.5967 9 .9000 .6. 7972 9
10 1.0000 6.9977 11 1.1000 7.1983 7 12 1.2000 7.3988 6
13 1.3000 7.5993 14 1.4000 7.7999 4 . 15 1. 500@ 8.0@@4
3 ..
2
.... ···--
o o 0.2 0.4 0.6 0.8
Por lo tanto la relación entre las dos variables según el ajuste es:
y= Sx +b
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM REGRESION LINEAL
REAL(4) X(100),Y(108)JN,Y2(100)
WRITE(*,*)' AJUSTE LINEAL MINIMOS CUADRADOS' WtlTTC/* *) • 1
1"'\..1. I·L.-\ J
1.2
WRITE(*J*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (108))' READ(*J*)N WR!TE(*,*)' ING~ESE PARES UNO POR UNO' DO I=1,N WRITE(*J*)'INGRESE PAR NRO. 'JI,' X E V' READ(*, *)X(I), V(I) END DO SUMA1=8 SUMA2=0 SUMA3=0 SUMA4=0 DO I=1JN SUMAl=SUMAl+X(I) SUMA2=SUMA2+Y(I) SUMA3=SUMA3+X(I)*X(I) SU~A4=SUMA4+X(I)*Y(I) END DO A=(SUMA4-(SUMA1*SUMA2)/N)/(SUMA3-(SUMA1*SUMA1)/N) B=(SUMA2-A*SUMA1)/(N) WRITE(*,*) ' RESULTADOS'
114
1.4 1.6
WRITE(*J15)A WRITE(*J16)8 WRITE(*J*) N X Y(AJUSTADO)' ! REEVALUACION DE LA FUNCION OPEN (1JFILE~'REGLIN.TXT') DO I=1JN Y2(I)=A*X(I)+B WRITE(*,10)I,X(I),V2(I) WRITE(1,10)IJX(I),Y2(I) END DO 10 FORMAT(1XJI3J2(F8.4,1X)) 15 FORMAT(1XJ' PENDIENTE ='JF8.4) 16 FORMAT(1X,' INTERSECCION CON EL EJE V ='JF8.4) END
4.3 Ajuste polinomial
Si consideramos el caso de datos cuya tendencia no es lineal, es necesario
determinar parámetros de ajuste correspondientes a funciones no lineales; sin
embargo, el método de mínimos cuadrados sigue siendo aplicable dado que para esta
situación las ecuaciones normales siguen siendo lineales. En el desarrollo, n se usa
como el grado del polinomio, y N como el número de pares de datos. Resulta evidente
que cuando tenemos que N = n +1; entonces el polinomio pasa exactamente por cada
punto, de modo que en lo sucesivo siempre se tendrá que N > n+1. Se supone la
relación funcional:
(4.5)
Con errores definidos como:
(4.6)
Nuevamente se usa Y¡ para representar el valor observado o experimental
correspondiente a X¡ con X¡ libre de error. Se minimiza la suma de los cuadrados.
(4.7)
115
En el mínimo, todas las derivadas parciales 8S/8a0, 8S/8a1, BS/Ba2 , ... ....... , BS/Ban son
iguales a cero; al escribir, las ecuaciones para lo anterior se obtienen n+1 ecuaciones:
(4.8)
Al dividir entre -2 y reordenando se obtienen n + 1 ecuaciones normales a resolver
simultáneamente:
a 0N +a1 LX; +a2 Ix~ + ......... +anix~ = LY; aoLX; +a¡Ix~ +azix~ + ......... +anixtl = Ix;Y;
a 0 Ix~ +a1 LX~ +a2 Ix~ + ......... +anix~+2 = ¿x¡Y; (4 .. 9)
!'1 '"' n '"' n+l '"' n+2 '"' v 2n _ "\' V ny ~aL.., X; +a¡.L.,X; +az.L.,X; + ......... +an.L.."~; ~L..."~; i
Al expresar tales ecuaciones en forma matricial se observa un patrón interesante en la
matriz de coeficientes.
N Ix; ¿x; Ix~ Ix~ a o IYi
LX; ¿x; ¿x; Ix~ Ixrl a¡ IxY 1 1
¿x; ¿:x~ ~>t Ix~ L n+2 x. 1 az :¿x;Y; (4.10)
~>~ L:x~+l L:x~+2 L:x~+3 ....... :¿x;n an L:x?Y;
Estas ecuaciones particulares presentan una dificultad adicional en el sentido
de que tienen la propiedad indeseable denominada mal condicionamiento. Su
resultado es que Jos errores por redondeo al resolverlas provocan errores grandes en
las soluciones.
116
La matriz de la ecuación (4.1 O) se denomina matriz normal para el problema de
mínimos cuadrados; para resolver el sistema puede aplicarse eliminación Gaussiana.
Ejemplo:
Usando el método de mínimos cuadrados para regresión cuadrática, ajuste la
siguiente tabla de datos experimentales, y determine la relación entre las dos
variables.
Se emplea en este caso la eliminación de Gauss y sustitución regresiva, ya que
se trata de un sistema de tres ecuaciones con tres incógnitas.
-·.· )(
0.10 3.73 · .. _·-.·~-_ ... : .. ·~-<-·-.-0~20 4:4a···_-_-...... ·. 0.30··.-. 6.40
'o.-48 6 60
()_~(} 7:00 .
O.~()i 9.60 -.... :
().70 11.40
o.so. t4.fo o.9b 15.60
t:óo 1á.áo•-·
20.00
18.00
16.00
14.00
12.00
10.00
8.00
-¡ i
l ¡ 1 1
6.00 1 i i 4.00 - -- (
1 200 . i i 0.00 +-------,-----,-------¡------r--------r---11
0.00 0.20 0.40 0.60 0.80 1.00 1.20
Los resultados obtenidos con el programa en Fortran son los siguientes:
AJUSTE CUADRATICO MINIMOS CUADRADOS
INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100)) 10
INGRESE PARES UNO POR UNO INGRESE PAR NRO. 1 X E y
0.1 3.73 INGRESE PAR NRO. 2 X E y
0.2 4.4 INGRESE PAR NRO. 3 X E y
0.3 6.4 INGRESE PAR NRO. 4 X E y
o. 4 6.6 INGRESE PAR NRO. 5 X E Y 0.5 7 INGRESE PAR NRO. 6 X E y
117
o. 6 9. 6 INGRESE PAR NRO. 0.7 11.4 INGRESE PAR NRO. 0.8 14.1 INGRESE PAR NRO. 0.9 15.6 INGRESE PAR NRO. 1.0 18.3
RESULTADOS
SUMATORIAS
SUMA1 EX (I) SUMA2 EX(I)**2 SUMA3 EX(I)**3 SUMA4 EX(I)**4 SUMAS EY(I) SUMA6 EY (I) *X (I) SUMA7 EY(I)*X(I)**2
MATRIZ NORMAL
7 X E Y
8 X E Y
9 X E Y
10 X E Y
5.500000 3.850000 3.025000 2.533300 97.130000 66.673000 52.597300
10.0000 5.5000 3.8500
5.5000 3.8500 3.0250
3.8500 97.1300 3.0250 66.67_30 2.5333 52.5973
A 11. 8484 B ~ 3.0292 e 3.4853
N X Y (AJUSTADO) 1 .1000 3.9067 2 .2000 4. 5651 3 .3000 5.4604 4 .4000 6. 5927 20
5 .5000 7. 9620 18
6 .6000 9.5683 16
7 .7000 11. 4115 14
8 .8000 13.4916 12
9 .9000 15.8088 10
10 1.0000 18. 3\5.2_9 8
6
4
2
o o 0,2 0.4
118
0,6 o.~
Codificación:
La codificación que genera estos resultados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM REGRESION_CUADRATICA
REAL(4) X(100),Y(100),N,Y2(100),A(100,100),A1(100,100),XSOL{100)
WRITE(*,*)' AJUSTE CUADRATICO MINIMOS CUADRADOS' WRlH(*, *)'' WRITE(*,*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))' READ(*,*)N WRITE(*1 *)' INGRESE PARES UNO POR UNO' DO I=l,N WRITE(*, *)' INGRESE PAR NRO.', I,' X E V' READ(*,*)X(I),Y(I) END DO SUMA1=0 SUMA2=0 SUMA3=0 SUMA4=0 SUMA5=0 SUMA6=0 SUMA7=0
CALCULANDO SUMAS DO I=1 1 N SUMA1=SUMA1+X(I) SUMA2=SUMA2+X(I)*X(I) SUMA3=SUMA3+X(I)*X(I)*X(I) SUMA4=SUMA4+X(I)*X(I)*X(I)*X(I) SUMAS=SUMAS+Y(I) SUMA6=SUMA6+X(I)*Y(I) SUMA7=SUMA7+X(I)*X(I)*Y(I) END DO WRITE(*,*) RESULTADOS' WRITE(*,*)'' WRITE(*,*) SUMATORIAS' WRITE(*,*)'SUMAl = EX(I) ',SUMAl WRITE(*, *) 'SUMA2 = EX(I)**2 ',SUMA2 WRITE(*,*)'SUMA3 = EX(I)**3 ',SUMA3 WRITE(*,*)'SUMA4 EX(I)**4 ',SUMA4 WRITE(*,*)'SUMAS = EY(I) ',SUMAS WRITE(*,*)'SUMA6 = EY(I)*X(I) ',SUMA6 WRITE(*,*)'SUMA7 = EY(I)*X(I)**2',SUMA7
119
INGRESANDO EN MATRIZ ML:;3 A(1,1)=N A(1, 2).=SUMA1 A(1;3)=SUMA2 A(1,4)=SUMAS A(2,1)=SUMA1 A(2,2)=SUMA2 A(2,3)=SUMA3 A(2,4)=SUMA6 A(3,1)=SUMA2 A(3,2)=SUMA3 A(3,3)=SUMA4 A(3,4)=SUMA7 WRITE(*,*)'' WRITE(*,*) MATRIZ NORMAL' WRITE(*, *)'' DO 1=1,3 WRITE(*,38)(A(I,J),J=1,4) END DO
COPIANDO EN LA MATRIZ DE PASO 28 LP=2
LN=LP-1 DO I=1JM1 DO J=1,M1+1 Al(I,J)=A{I,J) END DO END DO FIN DEL COPIADO HACIENDO LA ELIMINACION
21 DO I=LP,Ml WPAS01=A1(I,LN) WPAS02=A1(LN,LN) DO J=1,M1+1 A1(I,J)=A1(I,J)-(WPAS01/WPAS02)*A1(LN,J) END DO END DO FIN DE LA ELIMINACION REPITIENDO EL PROCESO LP=LP+1 LN=LP-1 IF (LP.GT.Ml)THEN NK=M1 GOTO 27 ELSE GOTO 21 END IF
FIN DE REPETICION SUSTITUCION REGRESIVA
27 SU~1A=8
DO J=l,Ml SUMA=SUMA+Al{NK,J)*XSOL(J) END DO
120
XSOL(NK)=(A1(NK,M1+1)-SUMA)/A1(NK,NK) NK~NK-1
IF (NK.LE.0) THEN GOTO 28 ELSE GOTO 27 END IF FIN DE SUSTITUCION REGRESIVA
28 C=XSOL ( 1) B=XSOL(2) AA=XSOL(3) !PRESENTANDO WRITE(*,15)AA WRITE(*,16)B WRITE(*,17)C WRITE(*,*) N X Y(AJUSTADO)' REEVALUACION DE LA FUNCION Y SALIDA POR ARCHIVO OPEN {1,FILE::::'REGCUA.TXT') DO I=1,N Y2(I)=AA*X(I)**2+B*X(I)+C WRITE(*,10)I,X(I),Y2(I) WRITE(1,10)I,X(I),Y2(I) END DO
30 FORMAl (1XJ4(F8.4J1X)) 10 FORMAT(1XJI3J2(F8.4,1X)) 15 FORMAT(1X,' A =',F8.4) 16 FORMAT(1X,' B =',F8.4) 17 FORMAT(1X,' C =',F8.4)
END
4.4 Linearización de funciones
Las técnicas de regresión no lineal, son apropiadas para ajustar ecuaciones a
datos experimentales dé mañera directa. Sin emoargo, una alternativa simple es usar manipulaciones matemáticas para transformar las ecuaciones en una forma lineal.
Después, se puede emplear la regresión lineal simple para ajustar las ecuaciones a
datos reales; en esta ocasión, nos centraremos en la linearización de formas
conocidas en ciencias como las funciones exponenciales y potenciales.
121
Funciones potenciales y exponenciales
La función potencial, es aquella en que la variable dependiente está
relacionada con la variable independiente, mediante una potencia de ésta. Muchas
leyes en física trabajan con este tipo de funciones, su ecuación matemática es: ·
(4.11)
Se pueden considerar algunos casos especiales:
a. Si n = 1, se obtiene: y = kx, que viene a ser la ecuación de una recta que pasa
por el .origen.
b. Si n = 2, se obtiene: y = lo2, llamada función cuadrática, correspondiendo su
grafica a una parábola.
c. Si n = 3, se obtiene y= kx3, llamada función cúbica.
d. Si n = -1, se obtiene y = klx, llamada función hiperbólica, correspondiendo su
gráfica a una hipérbola.
e. Si n = -2, se obtiene y = klx2, que también es una función hiperbólica,
denominándose su gráfica hiperbólica cuadrática.
La función exponencial, es aquella en que la variable dependiente se relaciona
exponencialmente con la variable independiente. La ecuación matemática que rige
esta función es:
y= Kanx (4.12)
Técnica de linearización
La forma científica de relacionar las variables en estudio es expresándolas
mediante una ecuación matemática. Para determinar esta ecuación debemos
considerar lo siguiente:
1. En la toma de datos respecto a algún fenómeno obtenemos pares de datos con
cierta variabilidad (grande ó pequeña); estos conforman la nube de puntos, en
primera instancia una inspección visual sugiere una posible relación entre x e y.
122
2. La estrategia apropiada es derivar una función aproximada que ajuste la
tendencia general de los datos sin ajustar necesariamente con los puntos
individuales.
Para demostrar la linearización de una ecuación potencial, usaremos como ejemplo la
gráfica de la ecuación (4.12), cuando n > 1.
Ecuacion Potencial [y=2x**2]
250.0 .
200.0 .
150.0 :
>-100.0 .•
50.0 • 4>-
. 4.--4··· 0.0 0 ··•·• .-'$> ··'·' ............. .
0.0 2,0 4.0
Figura (4.3). Grafica de la función y= 2x2.
6.0
X
RO 10.0
El proceso requiere aplicar ellog1o en ambos lados de la ecuación (3.30), así:
Aplicando las propiedades del logaritmo, queda:
log10 y= nlog10 x + log10 k (4.13)
Evaluar esta ecuación y realizar un ajuste sobre los datos linearizados permitirá
conocer los valores desconocidos de n y k en la ecuación potencial. La grafica de la
ecuación (4.13), es una línea recta, tal como se ve en la figura (4.4).
123
Linearizacion logy=21ogx+log2
2.50
2.00
~ 1.50 >-Oí .Q 1.00 -...
0.50
0.00 +-------,-----,----,-------,-----.--------,---------,
02 0.4 0.6
log(x)
Figura (4.4). Grafica de la función potenciallinearizada.
o.a 1.~
Aquí la pendiente nos proporciona el valor de n y la intersección con el eje y
corresponde ai logaritmo de k.
Para demostrar la linearización de una ecuación exponencial, usaremos como ejemplo
la gráfica de la ecuación (4.12), cuando a= e (base del logaritmo neperiano).
400.0
350.0
300.0
250.0
> 200.0
150.0
100.0
50.0
0.0
0.0
ecuacion exponencial y=2.5 e**0.5x
... A---~---4>···-<$-···
2.0 4.0
~
~-.- _. .. 6.0
X
Figura (4.5). Grafica de la función y= 2.5e0·5x.
124
B.O 10.0 12.0
El proceso para este tipo de ecuaciones, requiere aplicar el logaritmo en base a = e,
es decir el logaritmo natural a ambos lados de la ecuación (4.12), así:
loge Y = loge (kenx) => ln y = ln(kenx) (4.14)
Aplicando las propiedades del logaritmo, queda:
lny =nx+lnk (4.15)
Evaluar esta ecuación y realizar un ajuste sobre los datos linearizados nos permitirá
conocer los valores desconocidos de n y k en la ecuación exponencial. La grafica de la
ecuación (4.15), es una línea recta, tal como se ve en la figura (4.6).
Linearizacion lny=nx+lnk
7.0
6.0 • -~ 5.0 • -~· .• -~·.
~-.
>- 4.0 • -·· ••• &:: • -~·. - 30 .,. ••
... . •... ·v
2.0 •• -~ ••• • • 4).
1.0 ~~ ••
0.0+-------~------~--------~------~~----~-------.
0.0 2.0 4.0 6.0
X
8.0
Figura (4.6). Grafica de la función exponenciallinearizada.
10.0 12.0
Aquí la pendiente nos proporciona el valor de n y la intersección con el eje y
corresponde al logaritmo natural de k.
125
Ejemplo a:
Linearizar y ajustar para obtener la relación entre las variables registradas en la
siguiente tabla, si se observa tendencia exponencial:
·:x-···.·.·. •· v < >o.1dÓ··.· .. ·. 12.214
>ó.3oo·• 1s.221
. a.5ba/\ · · 27.183 .: .............. ..
• 8.1ao •-··.·-•·· .· 40;552 · . _., ·.·.·. · ....
...• _ .• __ ._ .•....•.. o.•
1•.•_-.•-•_·····.· __ ·s ___ ·_
1•.-•.-.·.o0···-·····_o
0 ___ .•. _ ....••••... _·_ .•• _ •. ·.·.·._·. ·.·. 60.496
. 90~250>
1.36() 134.637 .......... · .. ·. 1 :soó 200,855
J.7óó 299.641
1~~6() 447:012
500.000 ····-············ .. ·······•············· ··················-····-·--·--·········--·--·-···············"'·······--·-··-····-·····-·-········--·····-··¡
450.000 ...... l ¡
400.000 . i 1
350.000 .... 1 l
300.000 ... 1
250.000 .... "·-· .. .. . ... -· .¡ ¡
WMOO 1 150.000 ....... ¡
':::: ·~······· 1 0.000 +-----..,-------,------,-------ii
0.000 0.500 1.000 1.500 2.000
Los resultados obtenidos con el programa en Fortran son los siguientes:
LINEARIZACION EXPONENCIAL Y=K*EXP(NX)
INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100)) 10 INGRESE PARES UNO POR UNO
INGRESE PAR NRO. 1 X E Y 0.1 12.214 INGRESE PAR NRO. 2 X E y
0.3 18.221 INGRESE PAR NRO. 3 X E y
0.5 27.183 INGRESE PAR NRO. 4 X E y
0.7 40.552 INGRESE PAR NRO. 5 X E y
0.9 60.496 INGRESE PAR NRO. 6 X E y
1.1 90.25 INGRESE PAR NRO. 7 X E Y
1.3 134.637 INGRESE PAR NRO. 8 X E Y 1.5 200.855 INGRESE PAR NRO. 9 X E y
1.7 299.641 INGRESE PAR NRO. 10 X E y
1.9 447.012
126
RESULTADOS
EXPONENTE N 2.0000 COEFICIENTE K 10.0000
N 1 2 3 4 5 6 7 8 9
10
X y (LINEARIZADO Y AJUSTADO) .1000 2.5026 .3000 2.9026 .5000 3.3026 7.00
.7000 3.7026 6.00
.9000 4.1026 1.1000 4. 5 02 6
5.00
1.3000 4. 902 6 4.00-
1.5000 5.3026 3.00
1. 7000 5. 7 02 6 1.9000 6.102 6
2.00
1.00
0.00
0.00 0.50 1.00
Codificación:
La codificación que genera estos resultados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM LINEARIZACION EXPONENCIAL
REAL(4) X(188),Y(188),N,Y2(188),NN,K
WRITE(*,*)' LINEARIZACION EXPONENCIAL Y=K*EXP(NX)' WRITE( *, *)''
1.50
WRITE(*,*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (188))' READ(*,*)N WRITE(*,*)' INGRESE PARES UNO POR UNO' DO I=l,N WRITE(*,*)'INGRESE PAR NRO.' ~I,' X E V' READ(*,*)X(I),Y(I) Y(I)=LOG(Y(I)) END DO SUMA1=8 SUMA2=8 SUMA3=8 SUMA4=8 DO I=l,N SUMAl=SUMAl+X(I) SUMA2=SUMA2+Y(I) SUMA3=SUMA3+X(I)*X(I) SUMA4=SUMA4+X(I)*Y(I) END DO NN=(SUMA4-(SUMA1*SUMA2)/N)/(SUMA3-(SUMA1*SUMA1)/N) K=EXP((SUMA2-NN*SUMA1)/(N)) WRITE(*,*) ' RESULTADOS'
127
2.00
WRITE(*J15)NN WRITE(*J16)K WRITE(*J*) N X Y( LINEARIZADO Y AJUSTADO)' !REEVALUACION DE LA FUNCION OPEN (1JFILE='LINEXP.TXT') DO I=1JN Y2(I)=NN*X(I)+ LOG(K) WRITE(*J10}IJX(I)JY2(I) WRITE(1,10)IJX(I),Y2(I) END DO 10 FORMAT(1X,I3J2(F8.4,1X)) 15 FORMAT(1X,' EXPONENTE N =',F8.4) 16 FORMAT{1X,' COEFICIENTE K ='JF8.4) END
Ejemplo b:
Linea rizar y ajustar para obtener la relación entre las variables registradas en la
siguiente tabla, si se observa tendencia potencial:
X y
0.200 <ó.3ao··· 0.400
0.040
0.320
1 5.000
!4.000 .•.. 0.500·.···.·. 0~625< > 1
0.600 1.080 t 3.000 "'- .....
. . ·. cr:too t.7'1p · 1
0.800 2.560 i 2..000 ().9ob · ._--._ $,64$ < ¡ 1 000 5 000 \ 1000 ~-···~··-~-~·----··-··-
..... ._ .. ___ .. _.: ................ " ... , __ ._._ ....... .-..... : .................... __ 1 .
!
128
Los resultados obtenidos con el programa en Fortran son los siguientes:
LINEARIZACION POTENCIAL Y=K*X**N
INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100)) 10 INGRESE PARES UNO POR UNO
INGRESE PAR 0.1 0.005 INGRESE PAR 0.2 0.040 INGRESE PAR 0.3 0.135 INGRESE PAR 0.4 0.320 INGRESE PAR 0.5 0.625 INGRESE PAR 0.6 1.080 INGRESE PAR 0.7 1.715 INGRESE PAR 0.8 2.560 INGRESE PAR 0.9 3.645 INGRESE PAR 1.0 5.000
RESULTADOS
EXPONENTE COEFICIENTE
N X
1 -1.000
2 -0.699
3 -0.523
4 -0.398
NRO.
NRO.
NRO.
NRO.
NRO.
NRO.
NRO.
NRO.
NRO.
NRO.
N K
3.0000 5.0000
1
2
3
4
5
6
7
8
9
10
X E y
X E y
X E Y
X E Y
X E y
X E y
X E y
X E y
X E y
X E y
Y (LINEARIZADO Y AJUSTADO)
-2.301
-1.398
-0.870 -0.495
··· ····- -o.so?
5 -0.301
6 -0.222
-0.204
0.033 -1.200
/' -1.ooo -o.soo .. -o_~()() .. ·- :o_;O() ,/o~~r; o.oor~_000
7 -0.155
8 -0.097
9 -0.046
"10 0.000
0.234 0.408
0.562
o. 699
129
................ .,. -··---·-~-
. ,.-------·-·-
,, .,·"'
·- -1;000 ·-'
- ~1:500·""
-2.000 _:
Codificación:
La codificación que genera estos resultados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM LINEARIZACION POTENCIAL
REAL(4) X{100),Y(100),N,Y2(100),NN,K
WRITE(*,*)' LINEARIZACION POTENCIAL Y=K*X**N' WRITE(*,*)'' WRITE(*,*)' INGRESE NUMERO DE PARES PARA AJUSTE (MAX (100))' READ(*,*)N WRITE(*,*)' INGRESE PARES UNO POR UNO' DO I=1,N WRITE(*,*)'INGRESE PAR NRO. ',I,' X E V' READ(*,*)X(I),Y(I) Y(I)=LOG10(Y(I)) X(I)=LOG10(X(I)) END DO SUMA1=0 SUMA2=0 SUMA3=0 SUMA4=0 DO I=1,N SUMA1=SUMA1+X(I) SUMA2=SUMA2+Y(I) SUMA3=SUMA3+X(I)*X(I) SUMA4=SUMA4+X(I)*Y(I) END DO NN=(SUMA4-(SUMA1*SUMA2)/N)/(SUMA3-(SUMA1*SUMA1)/N) K=ALOG10((SUMA2-NN*SUMA1)/(N)) WRITE(*,*) ' RESULTADOS' WRITE(*,15)NN WRITE(*,16)K WRITE(*,*) N X Y {LINEARIZADO Y AJUSTADO)' !REEVALUACION DE LA FUNCION OPEN (1,FILE='LINPOT.TXT') DO I=1,N Y2(I)=NN*X(I)+ LOG10(K) WRITE(*,10)I,X(I),V2(I) WRITE(1,10)I,X(I),Y2(I) END DO 10 FORMAT(1X,I3,2(F8.4,1X)) 15 FORMAT(1X,' EXPONENTE N =',F8.4) 16 FORMAT(1X,' COEFICIENTE K =',F8.4) END
130
Problemas de aplicación
Los siguientes problemas pueden resolverse empleando los algoritmos
propuestos para cada método presentado, es indispensable para una solución usando
el computador elaborar programas en el Lenguaje Fortran.
a. El siguiente problema requiere de una regresión lineal por Mínimos
Cuadrados.
Cierto móvil se desplaza con aceleración constante; realizando una medición con un radar se cuenta con veinte (20) datos de su velocidad respecto al tiempo. Se requiere:
a) Calcular el módulo de la aceleración y velocidad inicial.
b) Predecir cuál será su velocidad luego de una hora de haber partido.
e) Realizar una gráfica en Excel de los datos y la recta de ajuste.
· "Be;.n;;·s:·" · ~veYoéi'did" .... ,. ü~m'Pa·······--· veYadiCigCi.,., ... (s)· .·.·.· .. · <ihfs) ·•· .··.· .. · .. ·.· .. ·.·.(s) (rtJ/~)········
ú.56 15,80 5 50 28,80
.. 17;0() . s:aa 31;Jo .·.··•·•
4,5Q ', 5,oo···.·······
20,70
···.······18,38
>.··.i·.. 8,oq .···. · ·. ·.· 34,22 .. . · ... :·
· .. 8,50 34,01
2500 .·· .. ··. ·. ·'· ......
22,90
28,60'··
b. El siguiente problema requiere de una regresión cuadrática por Mínimos
Cuadrados.
... _ ...... . •.•· .. · (m)
. 0,50 17,15
. t,oo · .. ·.·. ··. 26,85·····.
•<1,50 ••... 20,15
54,55 · .. · ... · .···•·· ··· 7b.f5 · .. ·.·· .·
. ················i;¿8 \.··· 78,35
. 4,d6····.
Las mediciones realizadas por un radar indican que cierto móvil se desplaza con aceleración constante; el equipo ha logrado registrar la posición del objeto con respecto al tiempo, tal como se muestra en la tabla adjunta. Se requiere:
a) Calcular la posición de partida del objeto respecto al radar, su velocidad inicial y la aceleración que tiene.
b) Predecir cuál será su posición luego de una hora de haber partido.
e) Realizar una gráfica en Excel de los datos y la curva de ajuste .
131
:'?'~(55'''''''''''''~''81":55'"~----····
. 5.6o·· .. ·.··.· · 1qa,9s . 5,50 ••.. 134,15
·.. -... :.
< 6;QO · · 146,35
·.:.·.·· .. 6 so.· '
1-39,15
·· .... f.ód .. f48;5:f· ;,50:····:. 177,55
8,0()' .··.· i94;1i9 .
á.so i · 226,35
·• ~.óa>· >240.1!) .. ·· .... ::
·. 9,50 257,55
.·. 10,00 . 275;55
c. El siguiente problema requiere de una regresión polinómica de tercer
grado por Mínimos Cuadrados.
-:."·." ·-<::--- .. -_::·.
.· {),!58b. ·.· ... ·. ~.()o{) .•.. · ..
·.· 1.5bo · .. ··· ... 2,000 ... •· 1.soo>··
.· ...... 5.500/',.
6.ooo··· ·
493,810 ...
498,328
·.· ... ·.·492;440: •...• :.·· .. •.· ..
263,538
·· .. ··.·.·• > 28~,9$0•: 171,008
· ·.· .. ,;1o2~.ato···
-1068,713 ·.· · •·.· .. 8;ooo . · .. ·.·.·. ~15$6,oop .·
·•·····. ·····a.sqo·· -2350,343
Las mediciones realizadas por un sensor de campo magnético indican que cierto material varia el módulo de su campo conforme transcurre el tiempo; el equipo ha logrado registrar valores de campo con respecto al tiempo, tal como se muestra en la tabla adjunta. Se requiere:
a) Calcular la relación matemática que relaciona el módulo de campo magnético con el tiempo.
b) Predecir cuál será su magnitud luego de transcurrida una hora.
e) Realizar una gráfica en Excel de los datos y la curva de ajuste.
132
·~·::~;·9-.ooo·::··c·"··~·-·~:2a5T741·a·········~····w·.
9,50Ó . -3052,873
·";·•·~•••:;:_.::::.~,: ..... ;,c,c•: ··~--~~~gK·.i.?gL.:;_:,•;•.•••
d. La Ley de Beer-Lambert explica que hay una relación exponencial entre
fa transmisión de luz a través de una sustancia y fa concentración de fa
sustancia, así como también entre la transmisión y la longitud del cuerpo
que fa luz atraviesa. Si conocemos 1 (distancia que la luz atraviesa por el
cuerpo) y a (coeficiente a absorción), el valor de e (concentración de fa
sustancia),. puede ser deducida a partir de fa cantidad de luz transmitida
10, respecto de una luz incidente de intensidad 1, ver figura (4.7).
Es posible calcular el coeficiente de absorción a., utilizando:
47tK a.=--
A
Donde 'A, es la longitud de onda del haz incidente y K es el coeficiente de
extinción; dado esto, para cierta sustancia se consiguió los siguientes datos:
·intei15'iéiaa··¡·················¡·r9oa···4-.2s3···:··a:2s4·····a.os1·······~·.:•a.oo4·--s:9á9x1·cf4 ·--·s:330xfo:s·
~~~~etracrónT~t~;'oo~ ~ ~2·oso-+sj3403_ :roso· ,~;f4Í{- so¡o···· · ·· 7:120 · ~ (cm)
.. -..... , ..................... , . .., .... , ................... ,., .. , ............ ~- ................ :_,.;:.· :·.;, .-.. ~~;~~( ..... ;~~.:.~--~~---~: .. ;~ ....... , ... _ ......... ·''' ................ -... ~~ :.: .,.~~--~~-~-_: .... :~: ·.:-.--~---~'"·'""''· ............. _. .... , ......... :~~-~-.-: ...... ·::...,: -:~--~.- .. :~ ___ ·;:.:·,,:.,..,, .. ·.·-·· ,, .... ._,,,, .. _,..,...._,, ... _._,,._ ....... •····--~·-~~-.~"'"" .·.·.~·.-· •.. ,, ~ '"""·' .~,-~··"''""•
133
. . · .. · .. ' ·-~ ..... - ":-+~-,~,···:-:
~,.·. ¿•,'--:· .( \¡·:t:.;: ·.;·~-~ /'- ........ ,·~· .'.:/:
' " ·t~ _._.¡
" e-- '"" -~ •" , ... "" \"
- .~ ... l
~· --- -~" - ...........
pd ...
lo Jl
Figura (4. 7). Diagrama de la absorción de un haz de luz atravesando una
cubeta de ancho l.
Con los datos de la tabla y mediante una linearización calcule la intensidad
liiminosa lntidente 10 y la concentración de la sustancia e, si se sa:be que el coeficiente
de absorción de la muestra liquida es 0.4 cm·1.
e. Según la Ley de Decaimiento Exponencial, la actividad inicial Ao de un
isótopo cualquiera disminuye según la ecuación:
Dónde: A, es la actividad en un tiempo t dado y medida en Becquerelios
(1 Bq = 1 desintegración/segundo); le es la constante de decaimiento en
unidades de años·1 y está relacionada con el tiempo de vida media por
t112 = 0.693//c; mediante una linearización determine la actividad inicial Ao
y el tiempo de vida media en años de los isótopos 1921r y 22Na, si
conocemos los siguientes datos de actividad y tiempo.
lsotopo 1921r ......................... '"5""'""'" ............. .- .• ,
A (x10 Bq) .· 115 .. 183 5.333 >0.247 0.011 ··~·.····· "'• .,, .-.•M· .,._, .• ,J."• ·."· ~ •.-• ., • ., • .-... ·•· .-..,. .......... :::-.:~·;,:..;:.~w-.-.~· .. ~ <·.: .-: -:~;:.-.~: ·.: ~:,: : ••.• ~ ''"'" .,, .,,..,_._. ., .. , .• ._ • ._ • .,..~~,-:;: ~~:~ ... :.: :: ··'•· .: ... :;:;: .;:~:~: .. ~:~,:: , .. , ... , ., . .,,._..•M•••·.w ., ..... , .......... •'• . ..,._. -<-•.-.., •• ,,._. ··••'" ,,.,
0.001
t (años) f ......... ·-~--..................................... '"'"'";:·-...·.,:·.·.-~:·;::;<_":":·. :·:.:~:~ ........ , ................... , ........ ,.~_:,_, .. :·~i";:_···:~.:~-~;-~ .. -:.·· .. <_·;:(· ......................... ·····-----·--··· ................ .
1.9 3.7 4.6
134
lsotopo22Na ,.,., .• ,, .... _._._ .. _,.,tr······---·-·--.. --, .. , .. ._,._,._,.,.,,_ .. :,··-·-:··· .. ·· ., .. "_,.,.,._., .. , ... ,-.. "···"··· .. , .... , ... , .... _,,.,._ ....... ._, . ._,_ .. ,.,, .. , ... _,., ....... ,.,,, ...... ,,,,.,,.,,, . .-.,., .. " ..
A (x10 ~q) :~1}.E)35 182.698 107:107 77.745 62.792
_ --·--w·-- . -• LY __ > __________ " _________________________ _ 16
-f. Calcular por el método de Eliminación de Gauss y sustitución Regresiva
las intensidades que circulan por cada una de las mallas del siguiente
circuito:
14V
40hm
60hm
1-------1 ~/ lOV ~
Il
20h1U
Figura (4.8). Circuito con dos mallas.
g. En el siguiente gráfico se presenta un sistema de cinco poleas y una
barra en equilibrio. Calcular mediante el método de descomposición LU,
las tensiones en las cuerdas teniendo como dato que el peso de la barra
suspendida es 1 OON y la masa de las poleas A, B, e es: 1 Kg, · D es: 2 Kg
y E es: 3Kg.
Figura (4.9). Configuración de poleas.
135
h. Los parámetros registrados por dos sensores uno de presión y otro de
temperatura para cierto gas se muestran en la tabla (3.1 ), calcule
mediante una linearización cuál es la relación entre las variables
involucradas.
Tabla (4.1), datos de presión y temperatura.
·····~-~fé'mi:l~railira:··:--·········F>r:esió·r:r··-················:··ra·;;,l:ia·¡.aiur-a:··.····--········-···rrésióñr·········--
·. (°C) . ·. (Pa) . (°C) . (pa)
· ..•.•. topoo
1.1000 . . .-.
·1.2000
. 1~3000 . . . · ..... .
1Aaoa · 1.5000
·1.6006 .. ·.· ..
5.0000
6~6550 .· .. ·
8.6400
1ó.985o· .··.: ....
13.7200
·. 16.8150 ..
··.·.· .. ·.·. t:ioób .··· 1:aoob ·· .. ·.· .. · ·
20.4800
24;p650
29.1600
. ·. ·.·.
2.0000··. ;_Ho()fu.··.:·.··.· 2:2000····· .. ·
2,3000:• .•. ·.:·.·.·.··
2.400Q .
·.· 2~5ooo·•·•·
.·.· ·. 34~2950 .•
40.0000
3,§ooo ·•···
. 3:6000
46:3o5o>·••····.···.· 3.7ooo·.· .. · ... ·.·.
s3.24oo · .. · .. ·.··< á.aodo · ..... 60.8350 .· ··••·• 3~9000
69.1200 · .. ··.··.·.·.·.·.·.··.·.·.·.· ... ·4:0000·. · .. ·
·. 78J2SO .. •'·''·'~ ···--~ --~~- .. ,.., ..... , .. , ,_,,,,,:.,: .... ¿,_ ~:·.;, .. , ., ....... ,. , ... · .. : .... ,.~ .. ,.-:. ,., .......... .; . .,.
87.8800
98;4150
109.7600
•·.··· 121.9450. 135.0000
148.9550.
163.8400
·179.6850:
196.5200
214:3750 .
233.2800
253:2650'.
274.3800
· .. 296:5950·.
320.0000
i. El crecimiento de una población de bacterias medido en número vs.
tiempo muestra los datos presentados en la tabla (4.2), utilice una
!inearización para determinar cuál es la tasa de ereeimiente par mes.
136
Tabla (4.2), numero de bacterias vs. Tiempo .
. ·. . :. <e ~·:·T:"~;,·:e·:·:··m:: ... ·:p·.·:·:a· e>· .. · .. ·. : .. , ?';··:p··a::.:.·b·:··,··a:~·:·C·:::I:O;~··n·:· '-' .. , .. ,. ., ·•.· ·.·.· .. ·T: ... ;,· .. ·e:.:· ... m·.·. ·p····.·a·····.·~.;·. ::::·· ---~··· ..... p., ... a."'b"''l'a:::·C:··. :I:O·;··n--::·~ ·······~:··: . . . ,·.:·:<·::.:: .....•.. ·. ·' ........ ·.·.··
.· .. · .•••... (s) ... .... · (~HI~ne~r'·•· .. ·.·.· .. · <.(~)···:·.·.. ..<><· (~illbn~s)\ .
·•·•··· o.bóó .. ·. 2.5oo .··.·. · · ... ··: '>< 1:600··.· .. ·.· ... ···. 3348.577
·.•·•:··•.·:.··.·.··•········ &too >••·•···.·.· .. •·•·.•··.
.···.·.···.····,•···•·.· h.ioó····· a~921·•: · ·.·.· ......... 1."7o6 > i .. 5251$.14·
6.149 ·.··. :. f.soo··· 8236.í70 .·.··:····· >· \ •.•. ·.··();~~h··i .............. ···.
. •···.··•···••···.··•·•··.· .. i .•••••..•..• t.~dd•· ............ · .. ·: } ) ·•·· .. ··.·········••12~16\886 . 2.()00 .•. 20257.710
. · .•. ~;644
(l.-40(}····· .. :·.·. 15.124
>••/·.•·• .... · o.~ao'<····•·· · ..... 23a)g• ... ···.·••··.·.· ... ·. ·.·.i .... 1.1ó()~ x ......... · ..................... · ...• ·•s1r7oA13
b.s~$i 37.199 ·· · ;.260</ ...... ·.·· 49825.926
·. ··.··.·. · O:ió() .. ·•.•·.·.···.·.·· .. ·.. 58:~40< · >..... >i.~Ób <' .. ··•··· .. · .... ··•····•1á142.sor>
··················••••• .. ·•••••········ .• a.Sqo•••·•>·:r··· •... · •. · ... ·· .. ··.·.·. 91.496 ···•••··.•>)ik.4óo• .. ·••········.··.·· 122552.003 ·· .. · .. ··.·.· .. ·... 6.900 > .:.·.· .. ·.·.· ·' 143~494 •', .·.·.· .. ·.· .. ··.· ....• 2:500 > t$2199)99···.·: .. · ..
\ /i \.¿od i .. . ........... · ·. 225.043 ...•.... · .. ·..••.. / /2.~cJ6 3o 1429.287
<<r.1aa<·. ·.· .. ··· 352.$37 ·.·.·... 2_¿¿¿····· ·.·.· ............. ·· .. ·.·.· 472135,225· ... ··.•· >.. 1.260· 553.516 ··.· .. ·... k.éb()····.·· 741396.413
'<• ?; \.~~% ¿(i... 1a::1o::o >; 2 c;;~-g~~i;0> > • .. ;:::·:: •····
137
6.5 Capítulo V
5. Interpolación Polinomial
En el análisis numérico, se denomina interpolación a la construcción de nuevos
puntos partiendo del conocimiento de un conjunto discreto de puntos. En ingeniería y
otras ciencias es frecuente disponer de un cierto número de puntos obtenidos por
mue~tr~o Q a. partir <;le un registrQ o experim~nto y pr~ten<;ler constrl!ir un~ func;ión qu~
los ajuste.
5.1 Polinomio interpolante de Lagrange
En el método de Lagrange, se utiliza una ecuación que aunque se va alargando
conforme más puntos se quieran unir, es siempre dei mismo tamaño y de la misma
forma por lo que una de sus ventajas es que es más claro y fácil de hacer.
Supongamos que x0 , x1, ..... , Xn son n+ 1 puntos distintos del eje real y que f(x)
es una función de valor real definido sobre algún intervalo [a, b] que contiene estos
puntos. Queremos construir un polinomio p(x) de grado ::::: n que interpole f(x) para los
puntos dados, esto significa que satisface:
(i = 0,1, 2, ...... , n)
Se busca un polinomio de grado ::::: n que se anule en todos los X¡, este polinomio de
orden n que pasa a traves de los n+1 puntos se puede escribir en una serie de
potencias como:
(5.1)
138
Donde los a¡ son coeficientes indeterminados; si evaluamos (5.1) en los n+1 puntos
distintos del eje real dados anteriormente se obtiene:
La solución de este sistema por los métodos computacionales ya estudiados puede
ser poco práctica ya que las potencias de los X¡ pueden ser números muy grandes y
podrían incrementar el error por redondeo.
La idea de Lagrange para evitar esto es representar el polinomio (5.1) por el
producto de factores, es decir una función g(x) tal que:
Este es un polinomio de orden n que se anula en x = X1, x2 •..... , Xn y puede escribirse
como:
n
g(x) = IJ (x- x¡) (5.2) i=l
Cuando g(x) se divide entre g(Xo), la función resultante, conocida como función de
Lagrange lo (x) seria:
lo(x) = (x -X1)(x -x2)(x -x3)(x -x4) .... (x -xn)
(x 0 -x1)(x0 -xJ(x0 -x3)(x 0 -x4) .... (x 0 -xn)
Esta función toma el valor de 1 para x = Xo y O para x = x1, x2 .••••. , Xn y su
generalización es:
lk (x) = (x- X1 )(x- x 2)(x- x3 )(~- x 4) .... (x- xn) (xk -x1)(xk -x2)(xk -x3 )~xk -x4) .... (xk -xn)
139
Donde el numerador no incluye (x- xk) y el denominador no incluye (xk- x), la función
lk(x) es un polinomio de orden n y toma el valor de 1 cuando x = Xk y de cero en x = Xj, j
* k, dado esto se puede hacer:
(5.3)
Si multiplicamos los 10(x), 11(x), b(x), ...... , ln(x) por la función evaluado en los puntos
dados f0 , f1, f2 , ....... , fn y las sumamos, el resultado será un polinomio de orden a lo
más n e igual a fk para cada k= O hasta k= n.
Este polinomio se denomina Forma interpolante de Lagrange y es de grado ::::; n,
pudiendo ser representado por la ecuación:
n
p(x) = ¿ f(xk)lk (x) (5.4) k=O
La ecuación (4.4) es equivalente a la solución del sistema de ecuaciones lineales visto
al inicio.
Ejemplo:
Suponiendo los siguientes datos para la densidad del sodio en función de la
temperatura, mostradas en la siguiente tabla:
Tabla (5.1), Densidad del Sodio en función de la temperatura.
Buscaremos aplicar el polinomio interpolante, para calcular la densidad a una
temperatura de 251 °C.
140
Usando la ecuación (5.4) tendríamos que obtener una forma de Lagrange de
orden n = 2, para x = 251 por lo cual, ser debe calcular:
2
p(x) = Lf(xk)lk (x) = f(x 0 )1 0 (x) + f(x 1)1 1 (x) +f(x 2 )1 2 (x) k=O
Entonces las funciones de Lagrange en este caso son:
La forma interpolante que corresponde es por consiguiente:
Reemplazando datos se tiene:
(251) = (T) = (929) (251-205)(251-371) +(902) (251-94)(251-371) + p p (94- 205)(94- 371) (205- 94)(205- 371)
(860) (251- 94)(251- 205) = 890.5 (371- 94)(371- 205)
Luego según lo obtenido, la densidad del Sodio a la temperatura solicitada es 890.5
Kg/m3.
Los resultados computacionales para la solución de este problema son los
siguientes:
PROGRAMA INTERPOLACION DE LAGRANGE
INGRESO DE DATOS
INGRESE NUMERO DE PARES DE DATOS 3 PARES DE DATOS 94 929 205 902 371 860
141
INGRESE EL PUNTO A INTERPOLAR X 251 ================================ RESULTADO INTERPOLACION ======================== 890. 55 620 ======================== PUNTOS EVALUADOS: 3.0000
Codificación:
La codificación que genera los resultados mostrados anteriormente es la
siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM INTERPOLACION LAGRANGE
WRITE(*, *)'' WRITE(*,*)' PROGRAMA INTERPOLACION DE LAGRANGE' WRITE(*¡*)' ================================== WRITE(*,*)'' WRITE(*,*)' INGRESO DE DATOS ' WRITE(*)*)' ================= WRITE(*,*)' INGRESE NUMERO DE PARES DE DATOS' READ(*J*)N WRITE(*,*)' PARES DE DATOS' DO I=0,N-1 READ (*J*)X(I)~F(I) END DO WRITE(*J*)' INGRESE EL PUNTO A INTERPOLAR X' READ{*J*)XX WRITE(*,*)' ===================================== FX=0 DO I=0,N-1 Z=F(I) DO J=0,N-1 IF {!.NE. J) Z=Z*(XX-X(J) )/(X(I) -X(J)) . END DO FX=FX+Z END DO WRITE ( * , * ) ' ' WRITE(*,*)' RESULTADO INTERPOLACION' WRITE(*,*)' ======================== WRITE(*,10)FX WRITE(*,*)' ======================== WRITE(*,15)N
10 FORMAT{3X,F9.5) 15 FORMAl(' PUNTOS EVALUADOS: ',F8.4)
END
142
Observaciones:
• Si una función se aproxima mediante un polinomio de interpolación no hay
garantía de que dicho polinomio converja a la función exacta al aumentar el
número de datos.
¡¡ No existiendo un criterio para determinar el orden óptimo del polinomio se
recomienda utilizar uno con orden relativamente bajo en un pequeño rango de x.
• El polinomio de error e(x) asociado a este método es:
e(x) ~ L(x)f(n+l) (xm) (5.6)
Donde Xm es el punto medio entre los extremos del intervalo de dominio [a, b],
por lo cual e(x) es aproximadamente proporcional a L(x), dada por la ecuación:
( ) _ (x- x 0)(x- x 1)(x- x 2 ) ...... (x- xn)
LX- .. · (n + 1)!
(5.7)
5.2 Interpolación con diferencias finitas
Si usamos los polinomios de interpolación de Lagrange, uno de los
inconvenientes es que no hay reiación entre la construcción del polinomio de orden n y
la del polinomio de orden n-1; cada polinomio debe construirse individualmente y el
trabajo necesario para construir polinomios de grado elevado requiere hacer muchas
operaciones. El método de Newton tiene ventajas debido a que profundiza en el
Gomportamiento de las diferentes fórmulas de orden superior. De esta forma desde el
punto de vista de cálculo, a menudo, se prefiere el método de Newton. Cuando se va a
llevar a cabo sólo una interpolación, ambos métodos, el de Newton y el de Lagrange,
requieren de un esfuerzo de cálculo similar. Sin embargo, la versión de Lagrange es
un poco más fácil de programar. También existen casos en donde la forma de Newton
es más susceptible) a los errores de redondeo. Debido a esto y a que no requiere
calcular y almacenar diferencias divididas, la fórmula de Lagrange se usa, a menudo,
cuando el orden del polinomio se conoce a priori.
143
El desarrollo de las fórmulas de interpolación polinomial, requiere la aplicación
de las diferencias finitas, por lo cual es necesario definirla forma matemática de estas
en cada una de sus variantes.
Diferencias Finitas
Sea f(x) una función que depende de una variable, y siendo que los valores de
dicha función son discretos y _equidistantes:
La cantidad:
(5.8)
Es llamada diferencia hacia delante, repitiendo esta operación podemos obtener
diferencias de orden superior:
~ zfk = Mk+l - Mk = fk+2 - 2fk+l + fk
~3fk = ~ 2fk+l - ~ 2fk = fk+3- 3fk+2 + 3fk+l - fk
Los coeficientes de los términos son los coeficientes binomiales, los cuales permiten
generar la siguiente formula recursiva:
(5.9)
Las diferencias hacia atrás, están definidas por:
(5.10)
Las diferencias hacia tras de orden superior, se obtienen por aplicaciones sucesivas,
por ejemplo:
144
En general:
vrfk = :t (-1)1(r \k-r+t t=O tf
(5.11)
Las diferencias centrales, las cuales son simétricas con respecto a xk, las definimos
como:
Las diferencias centrales de orden superior:
o2fk = fk+l - 2fk + fk-1
o3fk = fk+3/2- 3fk+ll2 + 3fk-112 - fk-3/2
o4fk = fk+Z - 4fk+l + 6fk - 4fk-l + fk-2
(5.12)
La característica de este tipo de diferencias es que se requieren términos con índices
fraccionarios para las diferencias de orden impar, así:
órfk = i:C-1Y(rJf r t k+--t
t=O 2
(5.13)
Para poder trabajar con diferencias centrales de orden impar, es necesario definir el
promedio central, tal que:
1 ~k = 2[fk+l/2 + fk-112]
2 1 ¡.t fk = 2[,ufk+ll2 + ~k-112]
1 =¡[fk+l +2fk +fk_¡]
145
Aplicando el promedio central a las diferencias centrales de orden impar tenemos que
se requieren datos con índice entero.
1 ~of k =
2 [of k+1,.7 + of k-1'.7 1
1 = 2[f k+1 - fk-1]
(5.14)
Aplicando el Promedio Central a la diferencia central de orden 3, para obtener sub
índices enteros.
Suponiendo que las abscisas de los datos tienen una separación similar h, usando la
información de las diferencias es posible elaborar una tabla, donde cada renglón
proporciona un conjunto de diferencias hacia delante para los puntos interpolados,
dicho ordenamiento para el caso de cinco pares de datos, sería el mostrado en la tabla
(5.2).
Los coeficientes binomiales, están dados por:
( ~) = 1; G) = s; ( s) = ~s(s -1)(s- 2) 3 3!
En general: ( s) = _.!_s(s -1)(s- 2) ........ (s -n + 1) n n!
146
Tabla (5.2), Diferencias divididas hacia adelante
""'' o ,., .. ,,,,,,,,.,,.i~''''' '"" '"' '"'"~(~'''""'' ,,, ···-~2j~''""'' ··············,;ji~''"" ,,,,,,,,,,;&4(~' ,,,, ...... ,,,, ''"~5(~''·'''''"""'""'"'···········-
2
3
4
5
Ejemplo;
L~?f1 i13f1 .!14
f1
Construir la tabla de diferencias Progresiva y Regresiva del siguiente conjunto
de datos de intensidad luminosa en Candelas vs. Penetración en cm.
(Cd)
Penetración 1
(cm)
Tabla (5.3), Intensidad luminosa vs. Penetración.
0.36
Los resultados computacionales para este ejemplo _son los siguientes:
TABLA DE DIFERENCIA PROGRESIVA
PROGRAMA PARA REALIZAR LA TABLA DE DIFERENCIA PROGRESIVA ========================================================
MENU PRINCIPAL
INGRESO DE DATOS POR ARCHIVO [1] INGRESO DE DATOS POR TECLADO [2] SALIDA POR PANTALLA [3] SALIDA POR IMPRESORA [4] SALIR DEL PROGRAMA [5]
I-NGR-ES-E s0 6-PCi oN [ 1-5 J 2
147
INGRESO DE DATOS POR TECLADO ===================================== INGRESE EL NUMERO DE PUNTOS A EVALUAR 7 INGRESE: X 1 SU IMAGEN: FX 1
0.0 5 INGRESE: X 2 SU IMAGEN: FX 2
0.06 4.985 INGRESE: X 3 SU IMAGEN: FX 3
0.12 4.970 INGRESE: X 4 SU IMAGEN: FX 4
0.18 4.955 INGRESE: X 5 SU IMAGEN: FX 5
0.24 4.940 INGRESE: X 6 SU IMAGEN: FX 6
0.3 4.926 INGRESE: X 7 SU IMAGEN: FX 7
0.36 4.911
DESEA MODIFICAR LOS DATOS [S o N] : n
PROGRAMA PARA REALIZAR LA TABLA DE DIFERENCIA PROGRESIVA
MENU PRINCIPAL
INGRESO DE DATOS POR ARCHIVO INGRESO DE DATOS POR TECLADO SALIDA POR PANTALLA
-------SAL~DA POR TMPRESORA SALIR DEL PROGRAMA
INGRESE SU OPCION [1-5] 3
[ 1]
[2] [3]
[ 4J [5]
RESULTADOS TABLA DE DIFERENCIAS PROGRESIVA
N X DD O DD 1 DD 2 DD 3 DD 4
1 .000 5.000000 -.015000 .000000 .000001 -.000001 2 . 060 4.985000 -.015000 .000000 .000000 .001000 3 .120 4. 970000 -.015000 .000000 .001000 -.003000 4 .180 4.955000 -.015000 .001000 -.002000 5 .240 4.940000 -.014000 -.001000 6 .300 4. 926000 -.015000 7 .360 4. 911000
[S] PARA SALIR / CUALQUIER TECLA PARA CONTINUAR
148.
DD 5 DD 6
.001002 -.005002 -.004001
Codificación:
La codificación que genera los resultados mostrados se presenta a
continuaci6n:
AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM TABLA DE DIFERENCIA DIVIDIDA PROGRESIVA - - - -
COMMON H,J,X(100),FX(100),DD(100,100) CALL PRINCIPAL END
SUBROUTINE PRINCIPAL COMMON H,J,X(100),FX(100),DD(100,100) CHARACTER(50) RESP1,ARCHI
1 WRITE(*,*)'' WRITE(*,*)'PROGRA~~ TABLA DE DIFERENCIA PROGRESIVA' WRITE(*,*)'================================================' WRITE ( *, *) ' ' WRITE(*¡*)' MENU PRINCIPAL' WRITE(*,*)' ===================================== WRITE ( *, *)' INGRESO DE DATOS POR ARCHIVO [ 1]' WRITE(*J*)' INGRESO DE DATOS POR TECLADO [2]' WRITE(*,*)' SALIDA POR PANTALLA [3]' WRITE(*, *)' SALIDA POR IMPRESORA [ 4]' WRITE(*,*)' SALIR DEL PROGRAMA [5]'
· WRITE(*,*)' ===================================== WRITE(*,*)' INGRESE SU OPCION [1-5]' READ(*,*)RESP1 SELECT CASE (RESP1) CASE (' 1') J=0 IDtNT=1 WRITE(*,*)' INGRESO DE DATOS POR ARCHIVO' WRITE(*,*)' ===================================== WRITE(*,*)' INGRESE NOMBRE Y RUTA DEL ARCHIVO DE' WRITE(*,*)' ENTRADA' READ(*,*)ARCHI OPEN (1¡FILE=ARCHI) DO I=1,100 READ (1,*,END=2)X(I),FX(I) J=J+1 END DO
2 WRITE(*,S)J S FORMAT(' NUM DATOS INGRESADOS CORRECTAMENTE:',I3)
WRITE(*,*)' PULSE CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 S~OSE(1) GOTO 1
149
CASE (' 2') IDENT~1
WRITE(*J*)' INGRESO DE DATOS POR TECLADO' WRITE(*J*)' ===================================== WRITE(*;*)' INGRESE EL NUMERO DE PUNTOS A EVALUAR' READ(*J*)J DO I=1JJ WRITE(*J3)IJI READ(*J*)X(I),FX(I) END DO WRITE(*J*)' =====================================
3 FORMAT(' INGRESE: X',I3J' SU IMAGEN: FX' JI3) WRITE(*,*)' DESEA MODIFICAR LOS DATOS [S o N]' READ(*,*)RESP1 SÉlÉét éASE (RESPi) CASE ('S') GOTO 1 C~SE (' s') GOTO 1 CASE DEFAULT GOTO 1 END SELECT CASE (' 3') IF (IDENT.NE.1)GOTO 1 CALL CALCULO CALL PRESENTACION GOTO 1 CASE ('4') IF (IDENT.NE.1)GOTO 1 CALL CALCULO tALL íMPRi:síON GOTO 1 CASE (' 5') WRITE(*, *)'' WRITE ( * J *) ' STOP
GRACIAS POR USAR EL PROGRAMA'
CASE DEFAULT GOTO 1 END SELECT
RETURN END
150
SUBROUTINE CALCULO COMMON H,J,X(100),FX(100),DD(100,100)
DO I=l,J DD(l,I)=FX(I) END DO DO M=l,J-1 DO I=l,J-M DD(M+l,I)=DD(M,I+l)-DD(M,I) END DO END DO
48 RETURN END
SUBROUTINE PRESENTACION COMMON H,J,X(100),FX(100),DD(100,100) CHARACTER RESPl
IN=8 WR;HJ~(* ;*),' WRITE(*,*)' RESULTADOS TABLA DE DIFERENCIAS PROGRESIVA' WRITE(*,*)'====================================================' WRITE(*,SS)IN 1 IN+1 1 IN+2 1 IN+3 1 IN+4,IN+5 1 IN+6 WRITE(*,*)'====================================================' L=0 IF (J.LT.7)THEN NM=8 ELSE NM=J-7 END IF DO I=l,J L=L+l WRITE(*,50)I,X(I),(DD(K,I);K=1;(~-NM)-(~-l)) IF(NM.GT.0)THEN NM=NM-1 END IF END DO WRITE(*,*)'====================================================' WRITE(*,*)'(SJ PARA SALIR/ CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 SELECT CASE (RESPl) CASE ('S') Gótó iéé CASE (' s') GOTO 188 END SELECT IN=l
45 IF(J.GT.7+(IN-1))THEN IN=IN+7 NM=J-(IN-1) IF(NM.GT.7)THEN NN=NM-7 KK=(IN-1)+NM
151
ELSE NN=0 KK=J END IF L=e WRITE(*,60)IN-1,IN,IN+l,IN+2,IN+3,IN+4,IN+S WRITE(*,*)'===================================================='
DO I=1,NM L=L+1 WRITE(*,65)I,(DD(K,I),K=IN,(KK-NN)-(L-1)) IF(NN.GT.0)THEN NN=NN-1 END IF END DO WRITE(*,*)'====================================================' WRITE(*,*)'[S] PARA SALIR/ CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 SEL~CT CASE (RESPl) CASE ('S') GOTO 100 CASE ('s') GOTO 100 END SELECT GOTO 45 END IF WRITE(*,52)J
50 FORMAT(I3,F6.3,10F10.6) 52 FORMAT(' PUNTOS EVALUADOS:',I3) 55 FORMAT(' N X DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3) 60 FORI\1AT(' N DD' ,B,' DD' ,B,' DD' ,B,' DD' I3 ' DD' I3 ' DD' I3) J J J J J .
65 FORMAT(I3,10F10.6) 100 WRITE(*;*)''
RETURN END
SUBROUTINE IMPRESION COMMON H,J,X(100),FX(100),DD(100,100)
IN=0 OPEN (1,FILE='LPT1') WRITE(1, *)''
DD', 13, '
DD',I3,'
WRITE(1,*)' RESULTADOS TABLA DE DIFERENCIAS PROGRESIVA' WRITE(1,*)'====================================================' WRITE(1,550)IN,IN+1,IN+2,IN+3,IN+4,IN+S,IN+6 WRITE(1,*)'================p===================================' L=0 IF (J. L T. 7)THEN NM=0 ELSE NM=J-7 END IF
152
DO I=1;J L=L+1 WRITE(1,500)I,X(I),(DD(K,I),K=1,(J-NM)-(L-1)) IF(NM.GT.0)THEN NM=NM-1 END IF END DO WRITE(1,*)'====================================================' IN=1
45 IF(J.GT.7+(IN:1))THEN IN=IN+7 NM=J-(IN-1) IF(NM.GT.7)THEN NN=NM-7 KK=(IN-1)+NM ELSE NN=0 KK=J END I.F L=0 WRITE(1,600)IN-1,IN,IN+1JIN+2,IN+3,IN+4,IN+5 WRITE(1,*)'===================================================='
DO I=l,NM L=L+1 WRITE(1,650)I,(DD(K,I),K=IN,(KK-NN)-(L-1)) IF(NN.GT.0)THEN NN=NN-1 END IF END DO WRITE(1,*)'====~===============================================' GOTO 45 END IF WRITE(1,520)J
500 FORMAT(I3,F6.3,10F10.6) 520 FORMAT(' PUNTOS EVALUADOS:' ,I3) 550 FORMAT(' N X DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3) 600 FORMAT(' N DD' ,I3,' DD' ,I3,' DD' ,I3,' DD',I3,' DD',I3,' DD',I3) 650 FORMAT(I3,10F10.6)
WRITE(*, *)'' 1000 WRITE(*,*)' IMPRESION DE DATOS TERMINADA'
CLOSE(1) RETURN
END
153
DD',I3,'
DD',I3,'
TABLA DE DIFERENCIA REGRESIVA
PROGRAMA PARA REALIZAR LA TABLA DE DIFERENCIA REGRESIVA ========================================================
MENU PRINCIPAL
INGRESO DE DATOS POR ARCHIVO [1] INGRESO DE DATOS POR TECLADO [2] IMPRIMIR EN PANTALLA [3] SALIDA POR IMPRESORA [4] SALIR DEL PROGRAMA [5] ===================================== INGRESE su OPCION [1-5] 2 INGRESO DE DATOS POR TECLADO ===================================== INGRESE EL NUMERO DE PUNTOS A EVALUAR 7 INGRESE: X 1 su IMAGEN: FX 1 0.0 5.0 INGRESE: X 2 su IMAGEN: FX 2 0.06 4.985 INGRESE: X 3 su IMAGEN: FX 3 0.12 4.970 INGRESE: X 4 su IMAGEN: FX 4 0.18 4.955 INGRESE: X 5 su IMAGEN: FX 5 0.24 4.940 INGRESE: X 6 su IMAGEN: FX 6 0.30 4.926 INGRESE: X 7 su IMAGEN: FX 7 0.36 4. 911
DESEA MODIFICAR LOS DATOS [S o N] ; n
PROGRAMA PARA REALIZAR LA TABLA DE DIFERENCIA REGRESIVA
MENU PRINCIPAL
INGRESO DE DATOS POR ARCHIVO [1] INGRESO DE DATOS POR TECLADO [2] IMPRIMIR EN PANTALLA [3] SALIDA POR IMPRESORA [4] SALIR DEL PROGRAMA [5]
INGRESE SU OPCION [1-5] 3
154
RESULTADOS TABLA DE DIFERENCIAS REGRESIVA
N X DD O DD 1 DD 2 DD 3 DD 4 DD 5 DD 6
1 .000 5.000000 2 .060 4.9S5000 -.015000 3 .120 4.970000 -.015000 .000000 4 .180 4.955000 -.015000 .000000 .000001 5 .240 4.940000 -.015000 .000000 .000000 -.000001 6 .300 4. 926000 -.014000 . 001000 .001000 .001000 .001002 7 .360 4. 911000 -. 015000 -.001000 -.002000 -.003000 -.004001 -. 005002
Codificación:
La codificación que genera los resultados mostrados se presenta a
continuación:
AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM TABLA DE DIFERENCIA DIVIDIDA REGRESIVA - - - -
COMMON H,J,X(100),FX(100),DD(10@,1@@) CALL PRINCIPAL END
SUBROUTINE PRINCIPAL COMMON M,J,X(100),FX(100),DD(10@,1@@) CHARACTER(50) RESP1,ARCHI
1 WRITE(*,*)'' WRITE(*,*)' PROGRAMA TABLA DE DIFERENCIA REGRESIVA' WRITE(*,*)' ============================================ WRITE(*,*)'' WRITE(*,*)' MENU PRINCIPAL' WRITE(*,*)' ===================================== WRITE(*,*)' INGRESO DE DATOS POR ARCHIVO [1]' WRITE(*,*)' INGRESO DE DATOS POR TECLADO [2]' WRITE(*,*)' IMPRIMIR EN PANTALLA [3]' WRITE(*,*)' SALIDA POR IMPRESORA [4]' WRITE(*, *)' SALIR DEL PROGRAMA [5]' WRITE(*,*)' ===================================== WRITE(*,*)' INGRESE SU OPCION [1-5]' READ(*,*)RESP1 SELECT CASE (RESP1) CASE (' 1') J=@ I=@ IDENT=1 WRITE ( *, *) ' WRIH(* ,*)' WRITE ( *, *) ,· WRITE ( * , * ) '
INGRESO DE DATOS POR ARCHIVO' ===================================== INGRESE NOMBRE V RUTA DEL ARCHIVO DE' ENTRADA'
155
READ(*,*)ARCHI OPEN (1,FILE=ARCHI) DO I=1,100 READ (1,*,END=2)X(I),FX(I) ]::::;]+1
END DO 2 WRITE(*,5)J 5 FORMAT(' NUM DATOS INGRESADOS CORRECTAMENTE:' 1 I3)
WRITE(*,*)' PULSE CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 CLOSE(1) GOTO 1 CASE (' 2') IDENT=1 WRITE(*,*)' INGRESO DE DATOS POR TECLADO' WRITE(*,*)' ===================================== WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS A EVALUAR' READ(*,*)J DO I=1,J WRITE(*,3)I,I R~AD(*,*)X(I),FX(I) END DO WRITE(*,*)' =====================================
3 FORMAT(' INGRESE: X',I3,' SU IMAGEN: FX' ,I3) WRITE(*,*)' DESEA MODIFICAR LOS DATOS [S o N]' READ(*,*)RESP1 SELECT CASE (RESP1) CASE ('S') GOTO 1 CASE (' s') GOTO 1 CASE DEFAUL T GOTO 1 ~ND SELECT CASE (' 4') IF (IDENT.NE.1) GOTO 1 OPEN (1,FILE='LPT1') CALL CALCULO CALL IMPRESION GOTO 1 CASE (' 3') IF (IDENT.NE.1) GOTO 1 CALL CALCULO CALL PRESENTACION GOTO 1 CASE ('5') WRITE(*, *)'' WRITE(*,*)' STOP
GRACIAS POR USAR EL PROGRAMA'
CASE DEFAUL T GOTO 1 END SELECT RETURN END
156
SUBROUTINE CALCULO COMMON H,J,X(188),FX(188),DD(l88,188)
DO I=1,J DD(1,I)=FX(I) ENO DO DO M=1,J-1 DO I=1,J-M DD(M+1,I)=DD(M,I+l)-DD(M,I) END DO END DO
48 RETURN END
SUBROUTINE PRESENTACION COMMON H,J,X(188),FX(188),DD(188,188) CHARACTER RESPl
IN=8 WRHE ( *, *) ' ' WRITE(*,*)' RESULTADOS TABLA DE DIFERENCIAS REGRESIVA' WRITE(*,*)'====================================================' WRITE(*,55)IN,IN+1,IN+2,IN+3,IN+4,IN+5,IN+6 WRITE(*,*)'====================================================' NM=J DO I=l,J WRITE(*,58)I,X(I),(DD(K+1,I-K),K=8,J-NM) IF (I.GT. 6)THEN NM=J-6 ELSE NM=NM-1 END IF END DO WRITE(*,*)'====================================================' WRITE(*,*)'[S] PARA SALIR/ CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 SELECT CASE (RESP1) CASE ('S') GOTO 188 CASE (' s') GOTO 188 END SELECT IN=1
45 IF(J.GT.6+IN)THEN IN=IN+6 NM=IN+1 WRITE(*,68)IN,IN+1,IN+2,IN+3,IN+4,IN+S,IN+6 WRITE(*,*)'====================================================' DO I=NM,J WRITE(*,65)I,(DD(K+1,I-K),K=IN,(2*IN+1)-NM) IF (I.GT.IN+6)THEN ELSE NM=NM-1 END IF END DO
157
WRITE(*,*)'====================================================' WRITE(*,*)'[S] PARA SALIR/ CUALQUIER TECLA PARA CONTINUAR' READ(*,*)RESP1 SELECT CASE (RESP1) CASE ('S') GOTO 100 CASE (' s') GOTO 100 END SELECT IN=IN+1 GOTO 45 END IF WRITE(*,52)J
50 FORMAT(I3,F6.3,100F10.6) 52 FORMAT{' PUNTOS EVALUADOS:' ,I3) 55 FORMAT(' N X DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3) 60 FORMAT(' N DD' ,!3,' DD' ,!3,' DD' ,!3,' DD' I3 ' DD' I3 ' DD' I3) J J J J J
65 FORMAT(I3,100F10.6) 100 WRITE ( *, *) ' '
RETURN END
SUBROUTINE IMPRESION COMMON H,J,X{100),FX{100),DD(100,100)
IN=0 WRITE(1,*)''
DD',I3,'
DD',I3,'
WRITE(l,*)' RESULTADOS TABLA DE DIFERENCIAS REGRESIVA' WRITE(1,*)'====================================================' WRITE(1,550)IN,IN+1,IN+2,IN+3,IN+4,IN+5,IN+6 WRITE(1,*)'====================================================' NM=J DO I=1,J WRITE(1,500)I,X(I),(DD(K+1,I-K),K=0,J-NM) IF (I.GT. 6)THEN NM=J-6 ELSE NM=NM-1 END IF END DO WRITE(1,*)'====================================================' IN=1
450 IF(J.GT.6+IN)THEN IN=IN+6 NM=IN+1 WRITE(1,600)IN,IN+1,IN+2,IN+3,IN+4,IN+S,IN+6 WRITE(l,*)'===================================================='
DO I=NM,J WRITE(1,650)I,(DD(K+1,I-K),K=IN,(2*IN+1)-NM) IF (I.GT.IN+6)THEN
158
ELSE NM=NM-1 END IF END DO WRITE(l,*)'====================================================' IN=IN+1 GOTO 458 END IF WRITE(1,528)J
588 FORMAT(I3,F6.3,18F18.6) 528 FORMAT(' PUNTOS EVALUADOS: ',!3) 558 FORMAT(' N X DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3,' DD',I3) 688 FORMA T ( ' N DD' , I3, ' DD' , I3, ' DD' , I3, ' DD',I3,' DD',I3,' DD',I3) 659 FORMAT(I3,19F19.6) 1eee WRITE(1,*)''
CLOSE(1) RETURN END
Interpolación NGF (Newton - Gregory Forward)
DD' ,I3,'
Para evaluar la Fórmula lnterpolante de Newton hacia adelante, se asumen
que los puntos xk son equidistantes, es decir se ubican a intervalos regulares, esto
impone emplear un intervalo de paso fijo, así: definimos a L)x (ancho de paso) como
una constante y a xk como algún punto particular de la tabla (xk, fk; k = 1, 2, 3, ... ).
Ahora para medir la distancia entre un punto arbitrario en el eje x y el punto xk
usaremos la cantidad normalizada:
x-x U=--k
me (5.15)
Es posible obtener el polinomio interpolante Fm (u) de orden m para valores
tabulados de una función con m + 1 puntos; en este caso, usaremos puntos del
dominio a la derecha de Xk incluyendo a Xk, este polinomio se escribe en términos de
diferencias hacia adelante como:
(5.16)
159
Que al desarrollarse queda:
(5.17)
Para el caso de m = 2, el polinomio de interpolación de Newton hacia adelante, con el
desarrollo de las diferencias es:
En este caso solo son necesarios 3 pares de datos para interpolación y el valor de x
(punto a interpolar) debe estar dentro del dominio dado.
Para el caso de m = 3, el polinomio de interpolación de Newton hacia adelante es:
(5.19)
En este caso son necesarios 4 pares de datos para interpolación.
El error asociado a la fórmula de interpolación de Newton está dado por el término
siguiente que se ha truncado en el desarrollo en serie de la ecuación (5.17) ajustada a
m+1 puntos.
No obstante, es· posible ajustar la fórmula de interpolación de Newton a
cualquier número de pares de puntos, esto es poco práctico cuando es muy grande, ya
que la función puede cambiar drásticamente, por ello es necesario aplicar como
máximo las formulas (5.18) y (5.19) en una vecindad que contenga al punto que se
desea interpolar.
160
Ejemplo a:
El mástil de un barco se construye de una aleación de aluminio experimental.
Se llevan a cabo pruebas para definir la relación entre esfuerzo (fuerza por área)
aplicada al material y deformación (deflexión por unidad de longitud). Los resultados
de estas pruebas se resumen en la tabla (5.4).
Tabla (5.4). Datos de esfuerzo-deformación.
Es necesario calcular la deformación para un esfuerzo de 7.8 lb/pulg2.
El valor de fix es en este caso igual a 0.2, por lo cual el valor de u es: 2.5 si
consideramos k= O, es decir Xo = 7.3.
Desarrollando la ecuación (5.19), se tiene:
Reemplazando valores, obtenemos:
F3 (2.5) = (0.02) + (2.5)(0.045- 0.02) + 2·5(2
·5
-1) (0.06- 2(0.045) + 0.02) +
2 2·5(2.5 - 1)(2·5 - 2) (0.073- 3(0.06) + 3(0.045)- 0.02) = 0.06625
6 .
161
Los resultados computacionales para este ejemplo son los siguientes:
INTERPOLACION FORMA DE NEWTON ADELANTE
ESPACIAMIENTO UNIFORME ORDEN=3 INGRESE NUMERO DE PARES DE DATOS (MAX (4))
4 INGRESE EL PUNTO A INTERPOLAR X 7.8 INGRESE PARES DE DATOS PUNTO 1 7.3 0.02 PUNTO 2 7.5 0.045 PUNTO 3 7.7 0.06 PUNTO 4 7.9 0.073 RESULTADOS
X FX
7.80000 .0662500
PUNTOS EVALUADOS: 4.0000
Codificación:
La codificación que genera los resultados mostrados se presenta a
continuación:
5
113
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM INTERPOLACION FORMA DE NEWTON ADELANTE
WRITE(*, *)'' WRITE(*,*)' WRITE(*,*)' WRITE(*,*)' WRITE(*, *)'' WRITE(*,*)' WRITE(*,*)' READ(*,*)N IF (N.GT.4) WRITE(*,*)' READ(*,*)XP
- - - -
INTERPOLACION FORMA DE NEWTON ADELANTE' --------------------------------------~~~~~~-~---~~---~------------------~~~
ESPACIAMIENTO UNIFORME ORDEN 3'
INGRESE NUMERO DE PARES DE DATOS (MAX (4))' ==========================================
GOTO 5 INGRESE EL PUNTO A INTERPOLAR X'
162
WRITE(*,*)' INGRESE PARES DE DATOS' DO I=l,N WRITE(*,*)'PUNTO 'JI READ (*,*)X(I),FX(I) END PO H=X(2)-X(1) S=(XP-X(l))/H IF((XP.GE.X(4)).0R.(XP.LE.X(1)))THEN WRITE(*,*)' PUNTO A INTERPOLAR FUERA DE DOMINIO' WRITE(*,*)' INGRESE NUEVAMENTE EL PUNTO A INTERPOLAR' GOTO 10 END IF FXP=FX(1)+S*(FX(2)-FX(1))+0.5*S*(S-1)*(FX(3)-2*FX(2)+FX(1))+S*(0.166666)*(S-1)*(S-2)*(FX(4)-3*FX(3)+3*FX(2)-FX(1)) WRITE(*,*)' RESULTADOS' WRITE(*,*)' ======================== WRITE(*,*)' X FX' WRITE(*,*)' ======================== WRITE(*,15)XP,FXP
15 FORMAT(6X,F10.5,3XJF12.7) WRITE(*,*)' ======================== WRITE(*,20)N
20 FORMAT(' PUNTOS EVALUADOS: ',F8.4) END
Ejemplo b:
Calcular el logaritmo en base 1 O de 1. 7, haciendo uso de la interpolación NGF,
para los siguientes datos tabulados:
Tabla (5.5), datos tabulados para Log10
Usando la fórmula del polinomio para los puntos mostrados en la tabla (5.4),
con m= 2, es:
163
Ahora, como x0 = 1.0, t1x. = 0.5 y x = 1.7, entonces u = 1.4; luego, considerando el
desarrollo de los coeficientes binomiales, tendremos que él polinomio queda como:
En este punto evaluamos las diferencias divididas hacia adelante, donde r, va desde 1
hasta 2.
Introduciendo estas expresiones, el polinomio se transforma en:
Reemplazado los valores correspondientes a u y fk, tendremos:
F2 (1.7) = 0.0 + 1.4[0.17609] + 1.4
(1.4
-1) [0.3010- 2(0.17609)+ 0.0]
2! Finalmente resolviendo, se obtiene:
F2 (l. 7) = 0.23219
Este valor es aproximadamente igual allog (1.7), con un error absoluto de ±1.74x10-3 y
un error porcentual de 0.7%.
164
Problemas de aplicación
Los siguientes problemas y cuestiones pueden resolverse empleando los
algoritmos propuestos para cada método presentado; para una solución usando el
computador, se recomienda elaborar programas en el lenguaje Fortran.
a. Calcule con la fórmula de interpolación de Lagrange el valor de Log(2.5)
basado en los datos de la siguiente tabla:
X Lag X ··•·"·"-···---·~·····-~-~--- ·····-·· ············~····"·"""'""'"''''·"•··-··············
1.0 0.0
1.5 0.17609
2.0 0.30103
3.0 0.47712
3.5 0.54407
4.0 0.60206
b. El volumen V de un gas en una cámara cilíndrica varia con la presión P
aplicada con un pistón como sigue:
Calcule el volumen que corresponde a una presión P de 95 lbf/in2
c. La viscosidad del agua ¡.t. depende de su temperatura, la siguiente tabla
ha sido realizada basándose en observaciones realizadas, calcule la
viscosidad para una temperatura de 35 °C y 75 °C.
d. Los datos de la siguiente tabla provienen de observaciones astronómicas
de un tipo de estrella variable llamada variable cefeida y representan
variaciones de su magnitud aparente con el tiempo, calcule la magnitud
aparente para t = 0.25 seg. y 0.55 seg.
165
0.6
0.579
e. En estudios sobre polimerización inducida por radiación se usó una
fuente de rayos gamma para obtener dosis medidas de radiación. No
obstante, la dosificación varió con la posición en el aparato, donde se
registraron las siguientes cifras:
·-.-,.., •• , •. _ ........ ., •. -..,._ __ ._., •. , ••... ~-'""·'"'"·'"""'"'•''""·'""'''·'"·'•·"'"'""''"''•••"·"······"· -.••.•. ,.. •.••.•.• "''''''' .... "'''''''"'"'''""''"·'''''"'''"., .............................. _.., ..... , ...... , ............. , •. ,,_.,.,., ......... , ••.. h'••"""·'"''•''•'''''•'· ... ····-............ , ...... ~ .... ., .. , ......... ..
Posición a pt,mto base < o Q,Q .·. J.O 1 ,Q >2.0 2.Q ........... _ .... _··-.. . ... · ...... -·... ·.·-::-. -·.:.·.- .. ·-.
(pulg.) \······· dL ............. " .....•. : .. :,.:<.: .................... L~.Li __ ) ...... ., .......... . ··oasíficacióñ; 1o5.'Ra'clsih···---7 1úr < 2.39 •····.·.·. 2;11< 2.98 · .. ·.··.··•······.·3,2· 3.25
Calcule la Dosificación en la posición 2.35 pulg. y 0.25 pulg.
f. Con base en estudios sobre la cinética de evasión de compuestos de
cobre a partir de resinas con intercambio de iones se obtuvieron los
siguientes datos de Normalidad N y difusividad D.
N o;o51> o.1 o28 <m2036 0.4946 o.98S:f 1.9739
Calcule la Difusividad en la Normalidad 0.1 y 3.0
g. Un alambre de acero fue sometido a los ensayos indicados a
continuación. Se le aplicó inicialmente una carga de 2 Kg para
mantenerlo tirante. Se leyó sobre una escala la posición del extremo
inferior del alambre.
Cargas adicionales en Kg
Lectura de la escala en mm
Calcule la Lectura que debe corresponder en la escala para una carga
adicional de 1.5 Kg y 4.85 Kg.
166
6.6 Capítulo VI
6. Aproximación Numérica de la Derivada
La diferenciación numérica, se utiliza para evaluar las derivadas por medio de
valores dados en los püntos de una retícüla. En el tíabajo científico son importantes ya
que facilitan la solución numérica de ecuaciones diferenciales ordinarias y parciales;
por ello, este capítulo trata de !as técnicas para calcular derivadas empleando la
aproximación por diferencias y el desarrollo de Taylor.
6.1 Desarrollo de Taylor
Para una derivada de orden p con el desarrollo de Taylor, el mínimo número de
datos necesario para obtener una aproximación por diferencias es p+1, así una
aproximación por diferencias para la primera derivada de una función necesita al
menos dos puntos. Para f'¡ = f(x¡), utilizamos f¡ = f(X¡) y f¡+1 = f(X¡ +h), los valores de f en
todos los puntos distintos de X¡ se desarrollan en una serie de Taylor. El desarrollo de
Taylor de fi+1 alrededor de X¡ cuando X¡= O es:
f - ~( . h) - f -hf 1 !!~ f 11 ~ f 11 1 .~ 4 f 11 11 i+l - 11 X¡ + - - i -t i + i + i + -¡ + ........ ..
2 6 24 {6, 16)
Despejando f¡, en la ecuación (6.16), tenemos:
(6.17)
La ecuación {6.17), se puede representar mejor si truncamos los valores después del
primer término, es decir:
(6.18)
Donde el error asociado es aproximadamente igual a - ~ hf¡"; el termino O(h),
establece que el error es proporcional al intervalo h de la retícula.
167
Las aproximaciones por diferencias para las derivadas de orden superior se
pueden obtener mediante combinaciones lineales de los desarrollos de Taylor,
aumentando en complejidad conforme se incrementa el número de puntos o el orden
de ia derivada. El algoritmo genérico para obtener una aproximación por diferenclas
de una derivada de un orden dado, utilizando un conjunto específico de puntos en una
ietícula, establece lo siguiente:
Si el número total de puntos en la retícula es L, debe cumplir que: 2p+1 ;::: L;:::
p+1, donde p es el orden de la derivada por aproximar, esto para mantener la
estabilidad y minimizar el error acumulado por redondeo y truncamiento.
Los puntos están numerados con los sub. Índices i = a, f3, y, ......... , 'A las
abSCiSas dé lóS pUntOS dé lá retíCUla son: X¡ = ah, f3h, yh, ......... , 'Ah, es decir
usaremos puntos con separación uniforme.
La aproximación por diferencias de la p-ésima derivada de f(x), utilizando estos puntos
de retícula, se puede escribir de la forma;
cP) aJa. +apfp + ....... +a~.f~. f 0 = P +E
h (6.19)
Dónde: aa. hasta a~., son L coeficientes indeterminados
fo:. = f(Xo:.), fp = f(xp), ...... ,son las coordenadas que se usaran
·E, es el error asociado
Para calcular la primera derivada hacemos que: p=1, L=3, cx.=O, f3=1 y y=2, y usando
la ecuación (6.19), escribimos.
f '= aofo + a¡f¡ + a2f2 +E o h (6.20)
Dónde: a0 , a1 y a2 son tres coeficientes indeterminados.
Xo =O, x1 =x0 + h y x2 =Xo + 2h, son puntos de la retícula que usaremos.
168
Como primer paso sustituimos los desarrollos de Taylor de f1 y f2 alrededor de Xo = O
en la ecuación (6.21) para obtener:
a f a [ h2
h3 l a [ 4h
2 8h
3 l .f-'=____Q_Q_+_!_ f_ +hf-'+-L"+-L"'+ +---.2. L +2hL'+-L"+-L"'+ .. +F. u h h u u · 2 -u 6 -u · ··J · h ·u --u · 2 ·u ·· 6 ·u """"j ~ ~
(6.22)
Reagrupando términos tenemos:
La ecuación (6.23), tiene tres coeficientes indeterminados, los cuales se
pueden encontrar si hacemos los coeficientes de fa, fa' y fa" iguales a O, 1 y O, en la
ecuación (5.1 O), esto debido a que se debe conservar el balance de la ecuación, dado
esto se forma el siguiente sistema:
a 0 +a1 +a2 =O
0+a1 +2a2 =1
0+a1 +4a2 =O
Al solucionarlo se tiene que: aa = -3/2, a1 =2 y a2 =-1/2
Reemplazando estos valores en la ecuación (6.20), se obtiene:
f '= _!_ [- ~ f + 2f - _!_ f ] + E oh 20 1 22
Dónde:
(6.24)
La fórmula (6.24), es la solución al desarrollo de Taylor para la aproximación por
diferencias de la primera derivada.
169
Para calcular la segunda derivada utilizamos: p=2, L=3 (cumple que: L ~ p+1),
entonces nuevamente a= O, f3 = 1 y y= 2, y según la ecuación (6.20), tenemos que:
Sustituimos los desarrollos de Taylor de f1 y f2 alrededor de XQ=O en la ecuación
anterior para obtener:
f "= aofo ~~f llf 1 hz f" ~f 111 l ~[f 2llf 1 4hz f" 8h3 f 111 l E o - + - 1 o + o + o + o +.. + 2 o + o + o + o +..... +
h" h" L ~ 2 6 J 11 ~ 2 · 6 J
Factorizando y agrupando tenemos:
f 0 "=f0 [a0 +a1 +~2]~+f0 1 [Ü+a1 +2a2 ]_!_+f0 "[0+~+2a2 ]+ ..... +E h h 2
Nuevamente se tienen tres coeficientes indeterminados, los cuales encontramos si
hacemos los coeficientes de fa, fa' y fa" iguales a O, O y 1, en la ecuación anterior esto
permitirá conseNar el balance de la ecuación, debido a esto se forma el siguiente
sistema:
a0 + a1 -+- a 2 =Ü
O+a1 +2a2 =0 a
0+-1 +2a2 =1 2
Al solucionarlo se tiene que: aa = 1, a1 = -2 y a2 = 1
Reemplazando estos valores, se obtiene:
f 0 "=-\-[f0 -2f1 +f2 ]+E h
(6.25)
La fórmula (6.25), es la solución al desarrollo de Taylor para la aproximación por
diferencias de la segunda derivada.
170
La tercera derivada requiere que: p = 3, L = 4 (cumple que: L ~ p+1), entonces ahora:
cx.=O, ~=1, y=2 y 8=3, y según la ecuación (6.20), tenemos que:
Sustituimos los desarrollos de Taylor de f1, f2 y h alrededor de Xo=O en la ecuación
anterior para obtener:
f_ "'= ~+-1 f_ + hf_ '+-f- "+-L "'+ +-2 1 f_ +?.hf_ '+-L "+-L "'+ a f a [ h
2 h
3 l a 1 4h2
8h3 l
-u h3 h3 -u · -u 2 -u • 6 -u · ""j · h3 L-u ·· ---u · 2 -u 6 -u •»nj
a 3 ff 3hf , 9h2
f , 27h3
f ,, ] E +-¡ o+ o+- o +-- o +. .... + h 3
L 2 6
Factorizando y agrupando tenemos:
f 0 "'=f0 [a0 +a1 +a2 +a3]~+f0 '[0+a1 +2a2 +3a3]~+f0 "[0+~+2a2 +2_a3 ]_!_ h h 2 2 h
En este caso se tienen cuatro coeficientes indeterminados, los cuales encontramos si
hacemos los coeficientes de f0 , f0', f0" y f0"' iguales a O, O, O y 1, en la ecuación anterior
esto permitirá conservar el balance de la ecuación y formar el siguiente sistema:
a1 9 0+-+2a2 +-a3 =0
2 2 1 4 9
0+-a1 +-a2 +-a3 =1 6 3 2
Al solucionarlo se tiene que: ao = -1, a1 = 3, a2 = -3 y a3 = 1
Reemplazando estos valores, se obtiene:
171
(6.26)
La fórmula (6.26), es la solución al desarrollo de Taylor para la aproximación por
diferencias de la Tercera derivada.
Ejemplo:
Una masa de 1.0 Kg se encuentra unida a un resorte de constante elástica k =
25 N/m y oscila sobre una pista horizontal sin fricción. En t = O, la masa se suelta
desde el reposo en x = -3.0 cm.
·¡ t =o · k= 25 N/m .J-._, :-------1 -~ 1 kg j----------~ : '-- EIQ- 1 ~e
x =-3 cm x =O
Figura (6.2). Masa sujeta a un resorte de k= 25 N/m.
Es decir el resorte se comprime 3.0 cm, encuentre su velocidad y aceleración
con las fórmulas p=1, L=3 y p=2, L=3 para t = n/3 si se sabe que en t =O se cumple:
x(t)=3cos(~~ t+~)
Como: x (t = O) = -3 = 3cos(~) => cos(~) = -1. Entonces: ~ = n, lo cual, junto con el
reemplazo de datos (k y m) permite determinar la ecuación de movimiento.
x = 3cos(5t + n)
Esta ecuación fue sometida a las fórmulas para la primera, segunda y tercera
derivada vistas anteriormente, obteniéndose el siguiente resultado:
DERIVADA POR DESARROLLO DE TAYLOR
INGRESE PUNTO A EVALUAR XO Y H 1.047197 0.007
PRIMERA DERIVADA VELOCIDAD P=1, L=3 -12.9955
SEGUNDA DERIVADA ACELERACIÓN P=2, L=3 39.7162
TERCERA DERIVADA P=3, L=4 323.2205
172
Codificación:
La codificación que genera los resultados mostrados anteriormente es la
siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM DERIVADA TAYLOR P1L3 P2L3 P3L4 - - - -
REAL(4) X{18),Y(18),H
5 WRITE(*, *)' WRITE(*,*)'
DERIVADA POR DESARROLLO DE TAYLOR' P=l, L=3 Y P=2,L=3'
l•JRITE(* _, *)'' WRITE(*,*)' INGRESE PUNTO A EVALUAR X8 Y H' READ(*,*)XS,H !EVALUACION DE FUNCION X(1)=X8 X(2)=X8+H X(3)=X8+2.8*H X(4)=X8+3.8*H Y(l)=F(X(l)) Y(2)=F(X(2)) Y(3)=F(X(3)) Y(4)=F(X(4)) !CALCULO POR FORMULA D13=(1.0/H)*(-1.5*Y(1)+2.8*Y(2)-0.5*Y(3)) D23=(1.8/(H**2))*(Y(1)-2.8*Y(2)+Y(3)) D34=(1.8/(H**3))*(-Y(1)+3.8*Y(2)-3.8*Y(3)+Y(4)) WRITE(*,*)' PRIMERA DERIVADA P=1,L=3' WRITE(*,18)D13 WRITE(*,*)' SEGUNDA DERIVADA VELOCIDAD P=2,L=3' WRITE(*J10)D23 WRITE(*,*)' TERCERA DERIVADA ACELERACIÓN P=3,L=4' WRITE(*,18)D34 WRITE(*J*)'REPETIR LA OPERACION (1JSI/2JNO)' READ(*,*)R IF (R.EQ.l)THEN GOTO 5 ELSE END IF 18 FORMAT(1X,F18.4) END FUNCTION F(X) F=3.8*C05(5.8*X+3.1415926) RETUR!\J END
173
Problemas de aplicación
Los siguientes problemas y cuestiones pueden resolverse empleando los
algoritmos propuestos para cada método presentado; para una solución usando el
computador, se recomienda elaborar programas en el lenguaje Fortran.
a. A partir de la siguiente tabla de valores de f(x) = senh x, hallar f(0.4),
usando h = 0.001 y h = 0.002. ¿Cuál de estos valores es el más
preciso? El resultado correcto es f(0.4) = cosh (0.4) = 1.081072.
X
0.398
0.399
0.400
0.401
0.402
f(x)
0.408591
0.409671
0.410752
0.411834
0.412915
b. A partir dé la siguiénte tablá hallár f(1.4), hallar tamBién f'(1.4). cómpáre
sus resultados con los valores reales f'(1.4) = cosh (1.4) = 2.1509 y
f'(1.4) == senh (1.4)"" 1.9043, que son correctos hasta las cifras dadas.
x f(x)
1.2 1.5095
1.3 1.6984
1.4 1.9043
1.5 2.1293
1.6 2.3756
c. La ecuación de posición respecto al tiempo para una masa de 0.5 Kg.,
sometida a la acción de un resorte de constante elástica k es
x = 5.0senl2.7t, tal como se muestra en la figura (6.3); calcule la
velocidad, aceleración y energía mecánica del sistema luego de 1.34
segundos.
174
k
Figura (6.3). Masa sometida a la acción de un resorte.
d. Se conoce la ecuación de posición para un automóvil con aceleración
variabie, donde ia distancia x ai origen después de t segundos está dada
por x = 192t -16t3; determine, la velocidad y la aceleración luego de 5.
segundos.
e. Un móvil describe un movimiento circular, cuyo arco es función del
tiempo y está dado por S = 7 - 2t + t3, donde S está en metros y t en
segundos. Hallar la aceleración total del móvil, después de 5 segundos
que inicio su movimiento, se sabe que el radio es 2·1·1.6 m.
f. Una partícula describe una trayectoria circular de radio 2.o m, y su
posición angular esta descrita de la siguiente forma: 8(t) = 2t3 - t2 + t + 2
(Radianes). Hallar la aceleración tangencial y centrípeta para t = 3 seg.
175
6.7 Capítulo VIl
7. Integración Numérica
Los problemas de integración numérica, ó cuadratura numérica, consisten en
estima¡ el número 1, tal que:
I = rf(x)dx (7.1)
Este problema surge cuando la integración no se puede realizar exactamente ó
cuando f(x) solo es conocida en un numero finito de puntos. En ciencias e ingeniería
se presenta con frecuencia este tipo de problemas dada la necesidad de integrar una
función que sería, en general, de una de las tres formas siguientes:
.. Una función simple y continua tal como un polinomio, una función exponencial
o una función trigonométriea.
e Una función complicada y continua que es difícil o imposible de integrar
directamente.
• Una función tabulada en donde los valores de x y f(x) se dan en un conjunto de
puntos gi~Gretos, como es el caso a menudo, de o:atos experimentales.
En el primer caso, la integral simplemente es una función que se puede evaluar
fácilmente usando métodos analíticos aprendidos en el cálculo. En los dos últimos
casos, sin embargo, se deben emplear métodos aproximados como los que a
continuación se muestran.
7.1 Regla del trapecio y trapecio extendida
La regla del trapecio es un método de integración numérica que se obtiene al
integrar la fórmula de interpolación lineal, En esencia, la técnica consiste en dividir ei
inteNalo total en inteNalos pequeños y aproximar la cuNa en los diversos inteNalos
pequeños mediante alguna cuNa más simple cuya integral puede calcularse utilizando
solamente las ordenadas de los puntos extremos de los inteNalos.
176
Se puede escribir de la siguiente manera:
rh b-a I = f(x)dx = -_-[f(a)+f(b)]+ E
"• ;¿ (7.2)
Dónde: E, representa el error respecto al valor exacto.
La figura (7.1), muestra gráficamente la integración numérica, denotándola como un
áréá SOmbreada debajo de lá fécia de ifítef'pÓiación, en ei caso dé Ui'i inteNalo [a, b),
de separación h.
f(b)
f(a)~ ·~ . y=t(x)
f 1
1. ,.
b X
Figura (7.1). Integración con método del trapecio para un intervalo.
La ecuación (7.2), se puede extender a varios intervalos y se puede aplicar al caso de
N intervalos con una separación uniforme h. Supongamos el caso de un intervalo [a, b]
dividido en N = 4 sub-intervalos de ancho h, ver figura (7.2).
Figura (7.2). Integración con regla del trapecio, extendida a varios intervalos.
177
En este caso a = Xo y b = X4, el área total será la suma de las áreas de cada sub
intervalo, es decir:
Donde, al aplicar la regla del trapecio a cada sub-intervalo tenemos:
h A 1 ="2[f(a)+f(x1)]
A 2 =~[f(x1 )+f(x 2 )] 2
A 3 = h [f(x 2 )+f(x3 )]
2 ,_
A 4 = ~[f(x3 ) + f(b)] 2
Resolviendo para el área total se tiene:
Pero dado que: x1 = a + h, x2 = a + 2h y x3 = a + 3h, y siendo que está
usándose un ancho de paso constante h, la Regla extendida del Trapecio puede
escribirse como:
b h N-1
Atot = { f(x)dx = -[f(a) + 2Lf(a + jh) + f(b)] +E -" 2 j=l
(7.3)
Dónde: h, es el intervalo de paso y numéricamente igual a (b-a)/N
El error en la regla del trapecio decrece en forma proporcional a h3, siendo el resultado
ae la suma ae los errores eñ tOdos los iñtervalos.
178·
Ejemplo:
Calcular desde 7 hasta 9 la integral de la función: y= xsen 3 (x), emplee un
total de N= 200 sub-intervalos para división del dominio.
Los resultados computacionales arrojan lo siguiente:
INTEGRALES METODO DEL TRAPECIO EXTENDIDO ~=======================================
INGRESO DE DATOS
INGRESE EL LIMITE INF.; LIMITE SUP. [A,B] 7.0 9.0 NUMERO DE INTERVALOS N 200
RESULTADOS
LIM INF: 7.0 LIM SUP: 9.0 ANCHO DE PASO H: 0.01 EL VALOR DE LA INTEGRAL 10.021450
Codificación
La codificación que genera los resultados mostrados anteriormente es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM TRAPECIO EXTENDIDO
REAL(4) A,B,H,AINTEG
S WRITE (*,*)'' WRITE (*,*)' PROGRArA METODO DEL TRAPECIO EXTENDIDO• WRITE (*,*)' =========================================== WRITE (*,*)'' t•JRITE f* *'' \ ) 1 INGRESO DE DATOS' WRITE (*,*)' WRITE (*,*) 1 INGRESE EL LIMITE INF.j LIMITE SUP. [A,B]' READ {*,*)A,B WRITE (*,*) 1 NUMERO DE INTERVALOS N ' READ (*,*)N WRITE (*,*)' WRITE (*,*)'' H=(B-A)/N
179
FA=F(A) FB=F(B) A1=0 DO J=1,(N-1) Al=Al+'F(A+H*J) END DO AINTEG=(0.5*H)*(FA+FB+(2*A1)) WRITE(*, *)' RESULTADOS' WRITE(*,*)' -----------------------WRITE(*,15)A,B,H WRITE(*,*)' EL VALOR DE LA INTEGRAL' WRITE(*,12)AINTEG
12 FORMAT(9X,F9.6) 15 FORMAT(9X, 'LIM INF: ',F9.6,' LIM SUP: ',F9.6,' ANCHO DE PASO
H: ',1"9.4) WRITE(*,*)' -----------------------END
FUNCTION F(X) F=x*(SIN(X))**3 RETURN END
7.2 Regla 1/3 de Simpson
La regla 1/3 de Simpson se basa en la fórmula de interpolación polinomial de
ivewton desarrollada para m = 2, y dada por la ecuación:
Y ajustada a un intervalo [a, b], subdividido en dos sub-intervalos de ancho h, tal como
se muestra en la figura (7.3).
t2 ---=~-y = f(x)
~ii:J~IIII --~..:.==;;;.;.;.;.;..._........,....._..__ X
x0 =a
Figura (7.3). Integración con Regla 1/3 de Simpson para dos sub=intervalos.
180
Para la deducción de la Regla 1/3, asumiremos un ancho de sub-intervalo igual
a la unidad (h = 1) con a= O y b = 2, es decir que: xk = a= O, xk+1 = 1 y, xk+2 = 2, para k
= O; luego, considerando que s = (x- xk)/h se puede hacer lo siguiente:
Por lo cual:
Resolviendo:
1 ds = -d(x-xk) ~ hds = dx
h
12 12 12 12 (s 2 -s) . h F2 (s)ds = hfk ds + (fk+l - fk )h sds + (fk+Z - 2fk+l + fk )h ds
o o o o 2
=h[2fk +2(fk+l -fk)+~(fk+2 -2fk+l +fk)J
=~[6fk +6fk+l -6fk +fk+2 -2fk+l +fk] 3 h h
=3[fk +4fk+l +fk.r2]=3[f(0)+4f(l)+f(2)]
Como se demuestra, la integración de la fórmula de interpolación de Newton
hacia adelante ajustado a tres puntos Xo. x1 y x2, nos proporciona la Regla de Simpson
1/3, que podemos escribir como sigue:
lb h I = f(x)dx = -[f(a) + 4f(< x >) + f(b)] +E
a 3 (7.4)
Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/2
<x>, es el punto medio del intervalo e igual a (a+b)/2; según esto, es posible extender
ia regla 1/3 de Simpson, para N sub-intervalos (donde N es par').
Sea un intervalo [a, b], dividido en N = 6 sub-intervalos de ancho h = (b-a)/N, tal
como se muestra en la figura (7 .4).
181
1 XQ =a X2 X3 X4.X5 X6=b X
xl
Figura (7.4). Integración con Regla 1/3 de Simpson para N= 6 sub-intervalos.
Aquí: a = x0 y b = x6, el área total será la suma de las áreas de cada par de sub
intervalos, es decir:
Al aplicar la Regla 1/3 de Simpson a cada par de sub-intervalos tenemos:
Resolviendo para el área total se tiene:
Pero dado que: x1 =a+ h, x2 =a+ 2h, x3 =a+ 3h, ..... y siendo que está usándose un
ancho de paso constante h, la fórmula recursiva queda como:
h N-1 N-2
A 101 =-[f(a)+4 L f(a+ih)+2 Lf(a+ jh)+f(b)]+E (7.5) 3 i=l j=2
(impares) (pares)
182
El error en la regla 1/3 de Simpson decrece en forma proporcional a h5, donde
nuevamente el error es la suma de los errores en todos los intervalos y puede ser
aproximado por:
üónde: <x> = (b-a)iN
Ejemplo:
Hallar el centroide de la región R limitada por las gráficas de: y = x?, y = 4,
mostrada en la siguiente gráfica:
-2 X 01 X 2 X
Figura (7.5). Región plana entre dos curvas.
Se sabe que el centroide tiene coordenadas definidas por las ecuaciones:
r xC(x)dx u_ a . A- '
AreadeR
r yC(y)dy y = =Cc___ __
AreadeR
Dónde: C(x) y C(y) son secciones transversales de la Región R y toman valores no
negativos.
Además, el área de una región limitada por dos curvas está dada por la fórmula:
Area= r (f(x)- g(x))dx
183
En este caso tenemos que la integral del área es:
Area= f2
(4-x2 )dx=10.66666 ~2
Las coordenadas se calculan resolviendo:
- r~ x(4-x2 )dx X= =--...=ck ___ _
r2 (4-x2)dx
o ---=0 10.66666
y - fy(2-JY )dy 25.6 ,., . y=- = =L4
f/4-xz)dx 10.66666 ·
Finalmente las coordenadas del centroide son: (O, 2.4)
Los resultados computacionales con la Regla 1/3 de Simpson extendido para N = 400
son:
METODO DE SIMPSON UN TERCIO EXTENDIDO
INGRESO DE DATOS
INGRESE LOS LIMITES DE OPERACION [A,B] -2 2 NUMERO DE SUB INTERVALOS 400 RESULTADOS
EL VALOR DE LA INTEGRAL 10.666560 NOTA, FUNCION: F=4-x**2
INGRESE LOS LIMITES DE OPERACION [A,B] -2 2 NUMERO DE SUB INTERVALOS 400 RESULTADOS
EL VALOR DE LA INTEGRAL .000000 NOTA, FUNCION: F=4*x-x**3
INGRESE LOS LIMITES DE OPERACION [A,B] o 4
NUMERO DE SUB INTERVALOS 400 RESULTADOS
EL VALOR DE LA INTEGRAL 25.5997 NOTA, FUNCION: F=y*2*SQRT(y)
184
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM SIMPSON UN TERCIO EXTENDIDO - - -
REAL(4) H,A,B,AREAT
WRITE ( *, *) ' ' WRITE ( *, *) ' l•JRITE(* • *)' WRITE ( *, *)' ' WRITE ( *, *) ' WRITE ( * J *) ' WRITE (*,*)' READ (*,*)A,B WRITE (*,*)' READ(*,*)N WRITE (*,*)' WRITE ( *, *)' ' WRITE ( *, *)' ' H=(B-A)/N FA=F(A) FB=F(B) AREA1=13 AREA2=13
METODO DE SIMPSON UN TERCIO EXTENDIDO' ------------------------------------------~=-=~=~====-=-~====-~-==~===~==g
INGRESO DE DATOS'
INGRESE LOS LIMITES DE OPERACION [A,B]'
NUMERO DE SUB INTERVALOS'
DO J=ljl\1-1,2 AREAl=AREAl+F(A+J*H) END DO DO I=2.,N-2.,2 AREA2=AREA2+F(A+I*H) END DO AREAT=(H*I3.33333)*(FA+FB+(4*AREA1)+(2*AREA2)) WRITE (*,*)N WRITE (*,*)' RESULTADOS' WRITE (*,*)' -----------------------WRITE (*,*)' EL VALOR DE LA INTEGRAL' WRITE (*,12)AREAT 12 FORMAT (9X,F9.6) WRITE (*, *)' WRITE ( *, *)' ' WRITE ( *, *)' ' WRITE ( *, *)' ' END
FUNCTION F(X) !F,..4-X**2 !F=4*X-X**3 F=X*2*SQRT(X) RETURN END
185
7.3 Regla 3/8 de Simpson
En este caso a diferencia de la Regla 1/3, se integra la fórmula de interpolación
polinomial de Newton desarrollada para m = 3, y dada por la ecuación:
Y ajustada a un intervalo [a, b], subdividido en tres sub-intervalos de ancho h, tal como
se muestra en la figura (7.6).
. ~ 1) it:<2)
~~ 1 llfb;~f~f\., ;.~··',::>~ _:-:,~;:,:]
Figura (7.6). Integración con Regla 3/8 de Simpson para tres sub-intervalos.
Para la deducción de la Regla 3/8, asumiremos condiciones similares a las
usadas para la deducción de la Regla 1/3, es decir: el ancho de sub-intervalo igual a
la unidad (h = 1) con a= o y b = 3, lo cual hace que: Xt< =a= O, xk+1 = 1, xk+2 = 2 y Xt<+3 =
3 = b, para k= O; luego, considerando que s = (x- xk)/h se puede hacer:
1 ds =-:- d(x- x,_) ~ hds = dx h . h"
Por lo cual ahora:
186
Resolviendo:
La integración de la fórmula de interpolación de Newton hacia adelante
ajustado g cuatro puntos Xo. x1, x2 y x3, nos proporciona la Regla de Simpson 3/8, que
podemos escribir como sigue:
b 3 ' A= i f(x)dx = -h[f(a) + f(b) + 3f(a + h) + 3f(b- h)]
a 8
Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/3
Es posible extender la regla 3/8 de Simpson, para N sub-intervalos (donde N es
múltiplo de tres), por aplicación repetida de la ecuación anterior.
Sea un intervalo [a, b], dividido en N = 9 sub-intervalos de ancho h = (b-a)/N, tal como
se muestra en la figura (7.7).
Figura [1.7). Integración con Regla 3/8 de Simpson para N= 9 sub-intervalos.
187
Aquí: a = Xo y b = x9 , el área total será la suma de las áreas de cada tres sub
intervalos, es decir:
Al aplicar la Regla 3/8 de Simpson a cada tres de sub-intervalos tenemos:
3 A1 = 8h[f(a) + 3f(x1 ) + 3f(x2 ) + f(x3 )]
3 A 2 = -h[f(x 3 ) + 3f(x 4 ) + 3f(x5 ) + f(x 6 )]
8
A 3 =~h[f(x 6 )+3f(x 7 )+3f(x8 )+f(b)] 8
Resolviendo para el área total se tiene:
Sabemos que: x1 = a+ h, x2 = a+ 2h, X:3 = a + 3h, ..... y siendo que está usándose un
ancho de paso constante h, la fórmula recursiva queda como:
3 N-1,3 N-2,3 N-3,3
A101 =-h[f(a)+3 L f(a+ih)+3 Lf(a+ jh)+2 Lf(a+mh)+f(b)]+E 8 . i=2 j=l m=3
(de3en3) (de3en3) (de3en3)
(7.6)
El error en la regla 3/8 de Simpson decrece en forma proporcional a h5, donde el error
es la suma de los errores en todos los intervalos y puede ser aproximado por:
Dónde: <x> = (b-a)/N
188
Ejemplo:
Calcular el área comprendida entre las curvas y = sen(x) e y = cos(x) en el
intervalo [n/4, n], utilice N = 9.
Figura (7.8). Región plana entre sen(x) y cos(x).
En este caso la integral a resolver es la siguiente:
Area = J~ (sen(x)- cos(x))dx 4
Los resultados computacionales con la regla 3/8 de Simpson sori los siguientes:
CALCULO DE INTEGRALES METODO DE SIMPSON TRES OCTAVOS ~===================================================
INGRESO DE DATOS
INGRESE LOS LIMITES DE OPERACION [A,B] 0.785398 3.141592
INGRESE EL NUMERO DE INTERVALOS MULTIPLO DE 3
H= 0.261799 RESULTADOS
EL VALOR DE LA INTEGRAL 2.414357
189
12 13
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM SIMPSON TRES OCTAVOS
REAL(4) H,N,A,B,AREAT
WRITE (*,*)'' ~~~JRITE (*, *) ' METODO DE SIMPS.ON TRES OCTAVOS' WRITE (*,*)' ========================================' WRITE (*, *) ' ' WRITE (*,*)' INGRESO DE DATOS' WRITE (*,*)' -----------------------------------------' WRITE (*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]' READ (*,*)A,B WRITE (*,*)' INGRESE EL NUMERO DE INTERVALOS MULTIPLO DE 3' READ(*,*)N WRITE (*,*)' ---------------------------------------------' WRITE (*,*)'' WRITE (*,*)'' H=(B-A)/N FA=F(A) FB=F(B) AREA1=0 AREA2=0 AREA3=0 DO J=2,N-1,3 AREA1=AREA1+F(A+J*H) END DO DO I=1,N-2,3 AREA2=AREA2+F(A+I*H) END DO DO M=3,N-3,3 AREA3=AREA3+F(A+M*H) END DO AREAT=(H*0.375)*(FA+FB+3*AREA1+3*AREA2+2*AREA3) WRITE (*,13)H WRITE ~·JRITE
WRITE WRITE FORMAT FORMAT WRITE WRITE WRITE WRITE END
(*,*)' RESULTADOS' 1* *' 1 -----------------------' \ , 1
(*,*)' EL VALOR DE LA INTEGRAL' (*, 12) AREAT (9X, F9. 6) (9X, ' H= ',F9.6)
(* r *) ' (*,*)" (*,*)" (*,*)"
-----------------------'
190
FUNCTION F(X) F;::SIN(X)-COS(X) RETURN END
7.4 Cuadratura de Gauss-Legendre
Las cuadraturas de Gauss-Legendre, son métodos de integración numérica
que utilizan puntos de Legendre (raíces de los polinomios de Legendre). Las
cuadraturas no se pueden utilizar para integrar una función dada con intervalos de
separación uniforme debido a que íos puntos de Legendre no están separados de esa
manera. Se establece que la cuadratura de orden N es exacta cuando se integra un
polinomio de orden menor ó igual a 2N-1, donde los N puntos de la retícula (puntos de
Gauss) se obtienen mediante las raíces del polinomio de Legendre PN(x) = O, donde
PN (x) es e! polinomio de orden N.
La cuadratura de Gauss que se extiende sobre el intervalo [-1, 1], está dada por:
1 N
f. f(x)dx = ). w J(xk) .J-1 . . - . ~-
k=l
(7.8)
Dónde: N, es el número de puntos de Gauss
W¡ son los pesos y las X¡ son los puntos de Gauss.
La tabla (7.1) proporciona valores para los pesos y los puntos x, en este caso los \
signos ±, indican que son pares uno de los cuales es positivo y el otro negativo.
Tabla (7.1), Puntos de Gauss y pesos
W¡ . . ·:·· . ..... -.. -~:,..,,.,.._, ._,,,.,_ ...... ,._,, .. -...... ~,..·· '"'~-. ..-.-.·---····""·'''''"'~"""·"''''''' .......
191
1.0.·····
0.8889
0.5556
·· .. cr6s21·······.····· .. · . ·.···. . ..
·. 6.3479·.· .. ·. ·.
0.5689
0.4786
0.2369
···~····•···~ •• ~-,--~-····.·.·.··o?i~é~§p··;~;:·5·:·?T7"9~4$7~'--············ .. ··. ·.
···•·••·•···•··•·••·•··•·•• ....•. • ... • .•.••••......•.••.•. •.•• .•...•.•.•.•.••.••..•.•..•..•.•.... •.•.·.•·.•.o0 .•. ·.·.•.~.•···69s3••·•·•·•··•21·······25••·••····•0o0o·········. ···.·.· .. ··.·.·.·.·.•· .. • .... • .... · .. •·.• .. ··.·.•·.·• ..... · .. ···••··.•····•:······•·.·•·.···•·•·· ó.366á•·•····· .. ·.··.:.·.••·.··•···········• ()_1"713 i .. : .. • .. ·. a \ < ó.1aj4~ó\·•···.· .. ·.·............... ··.·.··.··.· 0.3627
···•·••· ......................... q_g~s5~d·•.·•·······• \.· .. ·.·. ·•·.·.· .. ·.·•··.· ........•.•••••..• &1~66"ló·•···········.i·.····.·······
·•··• ···•• \ ().~~h~aª \·.·•·•··.
0.3i37
0.??24
0.1213 ···--:¡·a---··"'• : :.;o-.fh·a88~f·.···-~·-' .............. cf2sss·-- ········
\ < ·a>··_\4· ... ··.·•3······· .... 3··.··.· .. 3··.·· .. ··9• ... ·5·.· .. •·· .. ·.•.·· ... ·: .. :.· ..•.. ·· .. ·.· .. ·· 0.2693 ·.--- .. <-.:·.>>:-
. • >'•· 6.éi.s48s·,•··. ;;; o ....... ~.E3~.Ó6. 3.•··.··•. i> · .·· ...... _ :'·.,:_:.-.:.
0.2191
0.1495 .. ().~739()7 .
, .. -~-... _____ .... ___ --~~-:--:~.- :.~-: .. __ ::.L:·uL~·:,~-:·<~~~-;~~ -,~--.... ~_. ,;_·:~~-- ~-0.0667
Si N"" 4, el desarmllo de la ecuación (7.8) pmporciona:
f/(x)dx = 0.3478f( -0.86113) + 0.65214f( -0.33998) + 0.65214f(0.33998)
+ 0.34785f(0.86113)
La fórmula de integración de Gauss, puede aplidarse a cualquier intervalo arbitrario [a,
b], con la transformación: !
1
2z -a~ b X=----
b-a (7.9)
Dónde: z, es la coordenada original en a < z < b y x es la coordenada
normalizada en -1 s; x s; 1.
La transformación de x en z, se realiza mediante:
(b -a)x+a+ b z=-----
2 (7 .1 O)
Por medio de esta transformación la integral se puede escribir como:
fb fl 1b-a~ f(z)dz = f(z)(dz/dx)dx = -- 7. w1 f(z.k)
~ ~ 2 ~ . (7.11)
192
Dónde: dz (b-a)
dx 2
Los valores de Zk se obtienen al sustituir x en la ecuación (7.11), por los puntos de
Gauss, es decir:
Ejemplo:
(b-a)xk +a+ b ZJs: =
2 (7.12)
Hallar usando la cuadratura de Gauss-Legendre el volumen V de un sólido de
Revolución generado al rotar el área ubicada debajo de la gráfica de la curva y = x2,
encima del eje x y limitada por las rectas x = O y x = 1, ver figura (7 .9).
yl 2 f(x.) = "
f(xJ -- --
o V -~
Figura (7.9). Solido de Revolución.
El volumen de este solido según el método del disco, implica la solución de la
siguiente integral:
Los resultados usando la cuadratura de Gauss-Legendre para N=1 O son:
193
CUADRATURA DE GAUSS-LEGENDRE N=10 PERHITE INTEGRAR HASTA GRADO 19
INGRESE LIMITES DE INTEGRACION A,B o 1 PUNTOS DE GAUSS TRANSFORMADOS z(Xk)
.57444
.42556
.71670
.28330
.83970
.16030
.93253
. o 6747
.98695
.01305 PESOS Wk
.29550
.26930
.21910
.14950
.06670 AREA CALCULADA
. 62844
Codificación:
La codificación que genera los resultados mostrados es:
!AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM CUADRATURA_GAUSS_LEGENDRE
REAL(4) X(11),W(6),Z(11)
WRITE(*,*)' CUADRATURA DE GAUSS-LEGENDRE N=18' WRITE(*,*)' PERMITE INTEGRAR HASTA GRADO 19' t.IRTTI=f* *)'' .,, ... 1 L..\ J
WRITE(*,*)' INGRESE LIMITES DE INTEGRACION A,B' READ(*,*)A,B !PUNTOS DE GAU$$ Y PESOS PARA N=le X(1)= 8.148884 X(2)= -8.148884 W(1)= 8.2955 X(3)= 0.433395 X(4)= -8.433395 W(2)= 0.2693 X(5)= 8.679489 X(6)= -8.679489 W(3)= 0.2191 X(7)= 8.865063
194
X(8)= -0.865063 ~·J( 4) = e .1495 X(9)= 0.973907 X(10)= -0.973907 wcs)= e.e667 DO I=1J10 Z(I)=((B-A)*X(I)+A+B)*0.5 END DO UNO=F(Z(l))*W(l)+F(Z(2))*W(l) DOS=F(Z(3))*W(2)+F(Z(4))*W(2) TRES=F(Z(S))*W(3)+F(Z(6))*W(3) CUATRO=F(Z(7))*W(4)+F(Z(8))*W(4) CINCO=F(Z(9))*W(S)+F(Z(10))*W(S) AREA=(B-A)*0.5*(UNO+DOS+TRES+CUATRO+CINCO) WRITE(*J*) 'PUNTOS DE GAUSS TRANSFORMADOS z(Xk)' DO I=1J10 WRITE(*J10)Z(I) END DO WRITE(*J*) 'PESOS Wk' DO I=lJS l•JRITE(*) 10)l•J(I) END DO WRITE(*J*) 'AREA CALCULADA' WRITE(*J10)AREA WRITE(*J*)' LIMITES DE INTEGRACION AJB' WRITE(*J10)AJB
10 FORMAT (2XJF9.5J1XJF9.5) END
FUNCTION F(X) F=3.1415926*X**4 RETURN END
195
Problemas de aplicación
Los siguientes _problemas y cuestiones pueden resolverse empleando los
algoritmos propuestos para cada método presentado; para una solución usando el
computador, se recomienda elaborar programas en el lenguaje Fortran.
a. Hallar el área A de la región que se encuentra fuera de la cardioide r =
2(1+cose) y dentro de !a circunferencia· r;;; 6cose, ver figura (7.10).
y¡ r.:: 2(1 + COS8"__....,.._...._
Figura (7.10). Región entre dos curvas polares.
b. Hallar el volumen del sólido generado por la región plana encerrada por
la curva y = 6x - x2 - 8 y el eje x al girar alrededor del eje y, ver figura
(7.11).
Figura [1.11). Curva que genera sólido de revolución.
196
c. Hallar el volumen V del sólido de revolución generado al rotar la región
comprendida entre las cuNas y = x2 y y = x+2, alrededor del eje x, los
puntos de intersección son: (-1, 1) y (2, 4) ver figura (7.12).
Figura (7.12). Curva que genera sólido de revolución.
197
6.8 Capítulo VIII
8. Solución de Ecuaciones diferenciales
Se denomina ecuación diferencial a aquella ecuación que contiene una variable
dependiente y sus derivadas con respecto a una o más variables independientes.
Muchas de fas leyes generales de fa naturaleza se expresan en el lenguaje de fas
ecuaciones diferenciales; abundan también las aplicaciones en ingeniería, economía,
matemáticas y en muchos otros campos de la ciencia aplicada. En este capítulo
iniciamos el tratamiento computacional de las EDO, estudiando los métodos de Eufer,
los cuales son adecuados para una programación rápida debido a su sencillez; sin
embargo, a pesar de su gran estabilidad, requiere un tamaño de paso muy pequeño
para alcanzar una precisión razonable por lo cual muchas veces es inútil para
problemas prácticos.
8.1 Solución de ecuaciones diferenciales ordinarias de primer orden
Si se tiene una función y = f(x); entonces, puede calcularse su derivada dy/dx,
la cua.l se interpreta como la ra¡ón de cambio de y con respecto a x, esto es útil dado
que en cualquier proceso natural, las variables incluidas y sus razones de cambio se
relacionan entre sí, mediante estos símbolos matemáticos que en conjunto se
denominan ecuación diferencial.
Una ecuación diferencial ordinaria (EDO), de primer orden puede escribirse como:
dy = f(x y) dx '·
(8.1)
Su solución general debe contener una constante arbitraria e, de modo que la función
solución es:
f(x,y,c) =O (8.2)
Donde para cada valor de e, existe una solución particular, analíticamente dicha
constante se obtiene exigiendo que la solución de esa ecuación pase por algún punto
(xo, Yo), es ciecir:
(8.3)
Esto significa que la variable y vale Yo, cuando la variable x vale Xo.
198
Dado que en la práctica gran cantidad de ecuaciones no pueden resolverse
analíticamente, se deberá recurrir a métodos numéricos. En lo que sigue veremos las
dos variantes del método de Euler para solucionar ecuaciones diferenciales ordinarias,
cuando se conocen las condiciones iniciales.
8.2 Método de Euler hacia adelante
Una gran parte de los métodos numéricos para solucionar las ecuaciones
diferenciales parciales parabóiicas e hiperbóiicas que son mucho más complicadas
que las ecuaciones diferenciales ordinarias se basan en los métodos de Euler y no en
los métodos Runge~Kutta o Predictor Corrector debido a su sencillez.
Este método se obtiene rescribiendo la aproximación por diferencias hacia
adelante, lo cual matemáticamente se logra dividiendo el intervalo de análisis que va
de Xo a Xt en n sub-intervalos de ancho h, es decir:
(8.4)
De manera que se obtiene un conjunto discreto de (n + 1) puntos en el intervalo de
interés [Xo, Xt]; así, para cualquiera de estos puntos se cumple que:
X¡= Xo + ih eón: O::; i::; n (8.5)
La condición inicial Y(Xo) = Yo, representa el punto Po = (Xo, Yo) por donde pasa la curva
solución de la ecuación diferenciaL Con el punto Po se puede evaluar la primera
derivada de f(x) en ese punto, es decir:
(8.6)
Con esa información se traza una recta, aquella que pasa por p0 y de pendiente
figura (8.1).
199
y t
f(x)/ , /f(Xo,Yo)
y, l---------- -i Yo f---!'.?_ ¡
: h : 1 1 + :---:, X
Figura (8.1 ). Recta tangente en punto de la curva que aproxima f(x).
Usando la definición de la pendiente y tomando al punto P1 que pertenece a la
réctá tangeñte a po, escribimos:
(8.7)
Entonces:
(8.8)
ó bien:
(8.9)
Como el valor de y1 sirve para aproximar f(x) en el punto p1 = (x1, y1), es posible repetir
el proceso anterior generando la sucesión de aproximaciones siguientes:
Y1 =yo +hf(xo,Yo)
y2 =y¡ +hf(x~>yi)
Y n =Y n-l +hf{xn_¡,y n-i)
(8.10)
El error local es proporcional a h2 y el error global es proporcional a h. De modo
que mientras más pequeño sea el intervalo de avance mayor será la exactitud del
método.
200
Ejemplo:
Se conoce la ecuación diferencial de movimiento de un bloque con 100 Kg. de
masa que se desliza por un plano inclinado 0.5235 radianes respecto a ia horizontal;
adicionalmente, se sabe que la fuerza de rozamiento f que se opone al movimiento es
85 N y la resistencia del aire R es 0.05 veces la velocidad. La ecuación diferencial es:
dv 100-. + 0.05v + 85-490 =O
dt
Resuelva para velocidad desde O hasta 1 O segundos con un total de 1 O ptas.,
considere que v = O en t = O.
Los resultados computacionales son los siguientes:
SOLUCION DE E.D.O. METODO EULER HACIA ADELANTE ~~==============================================
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 1D
INGRESE LOS LIMITES DE OPERACION [A,B] 0.0 10.0 INGRESE LAS CONDICIONES INICIALES (XO, YO) 0.0 0.0
RESULTADOS
X Y(X)
.000000 .000000 l. 000000 4.050000 2.000000 8.097975 3.000000 12. L43930 4.000000 16.187850 5.000000 20.229760 6.000000 24.269650 7.000000 28.307510 8.000000 32.343360 9.000000 36.377190
10.000000 40.409000
201
Codificación:
La codificación que genera los resultados computacionales mostrados es la
siguiente:
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM EULER ADELANTE
REAL (4) xe, ve, A, B, H, XK(leee), VK(leee), N
1e WRITE(*,*)'' WRITE(*,*)' SOLUCION DE E.D.O. METODO EULER HACIA ADELANTE' WRITE(*;*)' =====~~=======~~============================== WRITE(*, *)'' WRITE(*,*)' INGRESO DE DATOS' WRITE(*,*)' ----------------------------------------------WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*,*)N WRITE(*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]' READ(*,*)A,B WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (Xe,Ve)' READ(*,*)Xe,ve XK(l)=Xe VK(l)=Ye H=(B-A)/N 00 I=2,N+í YK(I)=YK(I-l)+H*F(XK(I-l),YK(I-1)) XK(I)=XK(I-l)+H ÉND DO WRITE(*,*)' RESULTADOS' WRITE(*,*)' ----------------------WRITE(*,*)' ====================== WRITE(*,*)' X V(X)' WRITE(*,*)' ====================== DO J=1_,N+1 WRITE(*,2e)XK(J),VK(J) END DO
2e FORMAT(2X,F1e.6,4X,F1e.6) WRITE(*,*)' ====================== END
FUNCTION F(X,V) F~4.es-e.eees*v+e.e*x
RETURN END
202
8.3 Método de Euler modificado
La modificación realizada al método de Euler incrementa su precisión y
estaoilidaa, se obtiene apiicañao la Regla del Trapecio para integrar la ecuación (8.1),
desde Xn hasta Xn+ 1, es decir:
JYn+l d Jxn+l f1Y )d y=+ ,x,y x Yn Xn
Jxn+l
Yn+l=Yn+ f(x,y)dx Xn
Lo que nos lleva a la ecuación:
(8.11)
La ecuación (8.11), requiere un valor estimado de Yn+1 al lado derecho; en primera
instancia este valor puede ser Yn y luego reemplazarse por valores calculados de Yn+1 ,
para refinar el resultado, así:
Para el caso de n = O, la primera iteración se escribirá como:
(8.12)
La segunda aproximación se escribe usando el valor ya calculado en la ecuación
(6.12), el superíndice de e indica el orden de aproximación.
(8.13)
Este proceso deberá repetirse hasta que se cumpla la siguiente condición de
convergencia:
k+! k y n+l -y n * 1 (\(\ - t> 0/~ <' e 0/.0
k+l .1.-v-v-- '"'a rv ~ s /-'(
Y n+l
203
Donde ea% es el error porcentual relativo alcanzado y e5% es el error porcentual
relativo solicitado. Luego de esto puede cambiar el subíndice n y repetir el esquema
hasta alcanzar el total de puntos requeridos.
Ejemplo:
La ecuación diferencial que permite conocer la velocidad a la que se enfría una
sustancia al aire libre, es enunciada en la "Ley de enfriamiento de f\!ewton", la .cual
afirma que la velocidad de enfriamiento es proporcional a la diferencia entre la
temperatura de la sustancia y la del medio circundante; matemáticamente, se escribe
como:
Dónde: T, es la temperatura de la sustancia en el instante t.
Ta. es la temperatura del medio circundante.
K, es una constante de proporcionalidad (depende de la sustancia).
Resuelva la ecuación diferencial considerando Ta = 20 °C, K= 0.7 y T =50 °C, para t
=O sag. Obtanga valoras para t dasda O hasta 10 sag. con un total de 10 puntos y un
error porcentual de 0.1 %.
Los resultados computacionales son los siguientes:
SOLUCION DE E.D.O. METODO EULER MODIFICADO ==========================================
INGRESO DE DATOS
INGRESE EL TOTAL DE PUNTOS (N) 10 INGRESE LOS LIMITES DE OPERACION [A,B] o 10 INGRESE LAS CONDICIONES INICIALES (XO,YO) o 50 INGRESE ERROR PORCENTUAL SOLICTJ.I.DO (ES) 0.1
204
RESULTADOS POR ITERACION
PUNTO NRO. 2 ITERACION NRO. 1
1.000000 29.000000 72.413800 ITERACION NRO. 2
1.000000 36.350000 20.220080 ITERACION NRO. 3
1.000000 33.777500 7.616012 ITERACION NRO. 4
1.000000 34.677880 2.596397 5
.917075 6
ITERACION NRO. 1.000000 34.362740
ITERACION NRO. 1.000000 34.473040
ITERACION NRO. 1.000000 34.434440
ITERACION NRO. 1.000000 34.447950
.319955 7
.112111 8
. .039223 PUNTO NRO. 3 ITERACION NRO. 1
2.000000 24.339120 41.477770 ITERACION NRO. 2
2.000000 27.872480 12.676880 ITERACION NRO. 3
2.000000 26.635800 4.642914 ITERACION NRO. 4
2.000000 27.068640 l. 599040 ITERACION NRO. 5
2.000000 26.917140 . 5 62820 ITERACION NRO. 6
2.000000 26.970170 .196603 ITERACION NRO. 7
2.000000 26.951610 .068859 PUNTO NRO. 4 ITERACION NRO. 1
3.000000 22.078990 22.153100 ITERACION NRO. 2
3 . .00.00.0.0 23.79.0900 7.195667 ITERACION NRO. 3
3.000000 23.191730 2.583553 ITERACION NRO. 4
3.000000 23.401440 .896138 ITERACION NRO. 5
3.000000 23.328040 .314629 ITERACION NRO. 6
3.000000 23.353730 .109996 ITERACION NRO. 7
3.0.0.0000 23.344740 .038515 PUNTO NRO. 5 ITERACION NRO. 1
4.000000 21.000270 11.206790 ITERACION NRO. 2
4.000000 21.823980 3.774331
205
ITERACION NRO. 4.000000 21.535690
ITERACION NRO. 4.000000 21.636590
ITERACION NRO. 4.000000 21.601270
ITERACION NRO. 4.000000 21.613640
PUNTO NRO. 6 ITERACION NRO.
5.000000 20.488420 ITERACION NRO.
5.000000 20.877920 ITERACION NRO.
5.000000 20.741590 ITERACION NRO.
5.000000 20.789310 ITERACION NRO.
5.000000 20.772610 PUNTO NRO. 7 ITERACION NRO.
6.000000 20.225940 ITERACION NRO.
6.000000 20.423120 ITERACION NRO.
6.000000 20.354100 ITERACION NRO.
6.000000 20.378260 ITERACION NRO.
6.000000 20.369800 PUNTO NRO. 8 ITERA.CION NRO.
7.000000 20.107980 ITERACION NRO.
7.000000 20.202580 ITERACION NRO.
7.000000 20.169470 ITERACION NRO.
7.000000 20.181060 PUNTO NRO. 9 ITERACION NRO.
8.000000 20.058370 ITERACION NRO.
8.000000 20.097260 ITERACION NRO.
8.000000 20.083650 PUNTO NRO. 10 ITERACION NRO.
9.000000 20.020330 ITERACION NRO.
9.000000 20.047260 ITERACION NRO.
9.000000 20.037830 PUNTO NRO. 11
206
3 1.338697 4
.466360 5
.163493 6
. 057193
1 5.431644 2 l. 865615 3
. 657258 4
.229513 5
.080398
1 2.785383 2
.965474 3
. 3390 65 4
.118532 5
.041500
1 l. 344118 2
.468242 3
.164157 4
.057425
1 .553861
2 .193475
3 . o 677 61
1 .384236
2 .134303
3 .047032
Gráfica:
ITERACION NRO. 10.000000 20.008050
ITERACION NRO. 10.000000 20.021770
RESULTADOS
X Y(X)
.000000 50.000000 1.000000 34.447950 2.000000 26.951610 3.000000 23.344740 4.000000 21.613640 5.000000 20.772 610 6.000000 20.369800 7.000000 20.181060 8.000000 20.083650 9.000000 20.037830
10.000000 20.021770 .;;::;:::::::.=_=;::::;;::::;:::;:::::;:::::;:::;:::::;::::::;:::;::=;:::;;::::::;:::::;:::::;:;;;;;;;~;;:
1 .195949
2 . 068542
La grafica generada con los resultados mostrados es la siguiente:
. 207
Codificación:
La codificación que genera los resultados mostrados es la siguiente:
AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM EULER MODIFICADO
REAL(4) X8JV8JAJBJHJNJYK(1888)JXK(1888)
18 WRITE(*J*)'' WRITE(*'J*')' SOLUCION DE E.D.O. METODO EüLER MODifi(ADO' WRITE(*J*)' ==========================================' WRITE ( * J *) ' ' WRITE(*J*)' INGRESO DE DATOS' WRITE(*J*)' ------------------------------------------WRITE(* J *)' INGRESE EL TOTAL DE PUNTOS (N)' R~A!J{*,*)N WRITE(*J*)' INGRESE LOS LIMITES DE OPERACION [AJB]' READ(*J*)AJB WRITE(*J*)' INGRESE LAS CONDICIONES INICIALES {X8JV8)' READ(*J*)X8JV8 WRITE(*J*)' INGRESE ERROR PORCENTUAL SOLICTADO (ES)' READ(*J*)ES WRITE(*J*)' -----------------------------------------H=(B-A)/N XK(1)=X8 Yk(i}=Y~ YY=Y8 OPEN(1JFILE='EULERMOD.TXT') WRITE(*J*)' RESULTADOS POR ITERACION' WRITE(*J*)' ------------------------DO I=2JN+1 1\JN~l
WRITE(*J*)' PUNTO NRO. 'JI XK(I)=XK(I-1)+H
15 YK(I)=YK{I-1)+(H*8.5)*(F{XK(I-1),YK(I-1))+F(XK(I),VV)) EA=ABS((YK(I)-VV)/VK(I))*188 WRITE(*J*)' ITERACION NRO. 'JNN WRITE(*J128)XK(I)JVK(I)JEA IF(EA.GT.ES)THEN YY=YK(I) NN=NN+1 GOTO 15 END IF END DO J..JRITE ( *,; *) ' WRITE ( * J *) ' WRITE ( * J * ) ' WRITE{*J*)'
RESUL TJmOS' ======================
X Y(X)' ======================
208
DO J=1,N+1 WRITE(*,20)XK(J),YK(J) WRITE(1,20)XK(J),YK(J) END DO
2@ FQRM~T(2X,fl@,6,4X,Fl0.6) 120 FORMAT(2X,3(1X,F10.6))
WRITE(*,*)' ====================== END
FUNCTION F(X,Y) F=-0.7*Y+14+0.0*X RETURN END
8.4 Método de Runge-Kutta de Segundo Orden
Una desventaja fundamental de los métodos de Euler consiste en que los
órdenes de precisión son bajos, esto impiica que para mantener una precisión
aceptable se requiere un h pequeño, lo que aumenta el tiempo de cálculo y provoca
eíiOíes de íedondeo consideíables. Los métodos de ~unge-Kútta tíatan de obtenei
mayor precisión, y al mismo tiempo evitan la necesidad de derivadas de orden
superior, calculando la función f(x,y) en puntos seleccionados de cada subinterva!o.
Una mayor precisión ocasiona que los errores de redondeo decrezcan más rápido al
reducir h.
Los métodos Runge-Kutta se obtienen aplicando la Regla del Trapecio para
integrar la ecuación (8.1), desde Xn hasta Xn+1, es decir:
f.Yn+l d _ f.Xn+l f¡( )d Y-+ x,y x
;.yn ~Xn
Ixn+l
Yn+I=Yn+ f(x,y)dx Xn
Lo que puede escribirse como:
(8.14)
209
En la ecuación (8.14) Yn+1 es una incógnita, y aparece en el segunto termino al lado
derecho de la ecuacion por lo que lo aproximamos mediante f(xn+1,<Yn+1>), donde
<yn+1> es la primera estimación de Yn+1 obtenida mediante el método de Euler hacia
adeiante. E.ste esquema se conoce como eí metodo de R.unge-K.utta de segundo orden
y se resume como:
<yn+l >=yn +hf(xn,Yn)
h Y n+l =Y n + 2[f(xn,Y n) + f(xn+l' <Y n+l >)
Xn+l=Xn+h
En este caso el error local es proporcional a h2 y el error global proporcional a h3.
Ejemplo:
(8.15)
Una resistencia de 5 .Q y un inductor de 1 Henrio se conectan en serie con un
génetaaot a e cotriéñte aitérñá E = 1 ocos(5t) voltios. Si la corrieñte es o eñ t = o-; calcule la corriente para t desde O hasta 1 .O segundos, considerando 15 puntos, vease
la figura (8.2).
Usando la Ley de Kirchhoff modelamos la situación anterior con el siguiente
problemª de vªlor iniciªl;
Reemplazando valores tenemos:
F"igu¡a (8.2). CiíCuito r:tL.
L di =E-Ri dt
L=1H
V L..____.
R=5 Ohm
210
Los resultados computacionales son los siguientes:
SOLUCION DE E.D.O. METODO RUNGE KUTTA 2 ORDEN
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 15 INGRESE LOS LIMITES DE OPERACION [A,B] 0.0 1.0 INGRESE LAS CONDICIONES INICIALES (XO,YO) 0.0 0.0
RESULTADOS
X
.0000
.0667
.1333
.2000
. 2667
.3333
.4000
. 4667
.5333
. 60 00
. 6667
. 7.333
.8000
. 8667
.9333 1.0000
F (X)
.000000 . 53720.8 .859936 .975807 .903230 . 672700 .325851
-.087393 -.513061 -.898170
-1.195901 -l. 3702.85 -l. 399818 -l. 279581 -1.021609
-.653432
211
Gráfica:
La grafica generada con los resultados mostrados es la siguiente:
1.5
Codificación:
La codificación que genera los resultados computacionales mostrados es la
siguiente:
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM RUNGEKUTTA_20RDEN
10 WRITE(*J*)'' WRITE(*J*)' SOLUCION DE E.D.O. METODO RUNGÉ KUTTA 2 ORDEN' WRITE(*J*)' =============================================' WRITE(* J *)'' WR!TE(*;*)' INGRESO DE DATOS' WRITE(*J*)' ---------------------------------------------WRITE(*J*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*J*)N WRITE(*J*)' INGRESE LOS LIMITES DE OPERACION [AJB]' READ(*J*)AJB WRITE(*J*)' INGRESE LAS CONDICIONES INICIALES (X0JV0)' .·
READ(*J*)X0JV0 WRITE(*J*)' ---------------------------------------------' WRITE(* J *)'' XK(l)=X0 YK(l)=Y0
212
H=(B-A)/N DO L=l,N+l XK(I+l)=XK(I)+H YY=YK(I)+H*F(XK(I),YK(I)) YK(I+l)=YK(I)+(e,5)*H*(F(XK(I),YK(I))+F(XK(I+l),YY)) END DO OPEN(l,FILE='RK2.TXT') WRITE(*,*)' RESULTADOS' WRITE(*,*)' --------------------WRITE(*,*)' ==================== WRITE(*,*)' X F(X)' WRITE(*,*)' ==================== DO I=l,N+l WRITE(*,28)XK(I),YK(I) WRITE(i,20)XK(!),VK(t) END DO
28 FORMAT(2X,F9.4,3X,F18.6)
END
FUNCTION F(X,V) c-1~*rocr~*v)~s*v 1 --~.v """ -" \ _, ' ' - •
RETURN END
8.5 Método de Runge-Kutta de tercer orden
Es el resultado de aplicar un esquema de integración numérica de orden
superior al segundo término de la ecuación (8.1). La modificación realizada al método
incrementa su precisión y estabilidad y se obtiene aplicando la Regla 1/3 de Simpson.
rb h I= J, f(x)dx=-[f(a)+4f(<x>)+f(b)]
a 3
Dónde: h, es el intervalo de avance numéricamente igual a (b-a)/2
En este caso la función a integrar es dependiente de dos variables:
Iy n+l d rx•+l fi't )d y=+J, \x,y x JJJ X_g
rxn+l y n+l =y n + J, f(x, y)dx
x.
213
Por lo cual se tiene que:
h Yn+J =y_n +~[f(x_u,Y_u)+4f(x 1 ,<y _¡ >)+f(xD+l'<Yn+J >)]
J n+- n+-2 2
(8.16)
Donde <Yn+1> y <Yn+ 112>, son estimaciones, que pueden obtenerse mediante el método
de Euler hacia adelante; entonces, para el caso de <Yn+1f2>, se aplica la siguiente
fórmula recursiva:
(8.17)
Esta fórmula considera la mitad de un intervalo normal (h/2). La aproximación para
~Yn+1~ es:
<Y n+1 >=Y n + hf(x 1 < Y 1 >) (8.18) n+- n+-
2 2
Este esquema se denomina Método de Runge-Kutta de tercer orden.
Ejemplo:
En organismos con eventos reproductivos continuos, la tasa de recambio
poblacional se denomina tasa de crecimiento innato o capacidad innata de aumento -r;
esta cantidad se puede calcular mediante la ecuación:
r= b(Ro) T
Donde, Ro, es la tasa de reproducción neta de la población (constante) y T es el
tiempo de generación. Se desea calcular el crecimiento poblacional de una ciudad en
un periodo de 10 años, con intervalos de 6 meses; la ecuación diferencial de
creéimiento, está dada por:
dN =rN dt
214
Si se sabe que N = 2200 individuos para t = 1 año, con Ro = 500 individuos/año y T =
60 años. Los resultados computacionales son:
SOLUCION DE E.D.O. METODO RUNGE KUTTA 3 ORDEN
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 20 INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO 1 10 INGRESE LAS CONDICIONES INICIALES (XO,YO) l. o 2200
RESULTADOS
t (años)
l. 000000 l. 450000 1.900000 2.350000 2.800000 3.250000 3.700000 4.150000 4.600000 5.050000 5.500000 5.949999 6.399999 ~.841é.lléJSJ§)
7.299999 7.749999 8.199999 8.649999 9.099998 9.549998 9.999998
Población en Individuos
2200.000000 2409.737000 2639.470000 281é.ll.104000 3166.728000 3468.628000 3799.311000 4161.518000 4558.257000 4992.819000 5468.810000 5990.180000 6561.254000 718~. 772000 7871.924000 8622.396000 9444.413000
10344.800000 11331.020000 12411.260000 13594.490000
215
Codificación:
La codificación que genera los resultados computacionales mostrados es la
siguiente:
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM RUNGEKUTTA_30RDEN
19 WRITE(*,*)'' WRITE(*,*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 3 ORDEN' WRITE(*;*)' ============================================= WRITE(*, *)'' WRITE(*,*)' INGRESO DE DATOS' WRITE(* 1 *)' --------------------------------------------WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*,*)N WRITE(*,*)' INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO' READ(*,*)A,B WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X9,V9)' READ(*,*)xe,ve WRITE(*,*)' --------------------------------------------WRITE(*, *)'' X(1)=X9 V(1\-VQ 1 ..LJ-tV
H=(B-A)/N DO I=1,N+1 X(I+l)=X(!)+H A=Y(I)+H*9.5*F(X(I),V(I)) B=Y(I)+H*F(X(I)+H*9.5,A)
Y(I+1)=Y(I)+H*9.33333*(F(X(I)!Y(I))+4*F(X(I)+9.5*H!A)+F(X(I+1)!B)) END DO WRITE(*,*)' RESULTADOS' WRITE(*,*)' --------------------WRITE(*,*)' ==================== WRITE(*,*)' X F(X)' WRITE(*,*)' ==================== DÓ J=i,N+i WRITE(*,29)X(J),V(J) ENDDO
20 FORMAT(2X,F9.4,3X,F19.3) WRITE(*,*)' ==================== END
FUNCTION F(X,V) F=9.1935*V+9.9*X RETURN END
216
8.6 Método de Runge-Kutta de cuarto orden
El método de Runge - Kutta de cuarto orden es más eficiente debido a su bajo
error íocaí de truncamiento (h5); no obstante, su error de discretlzaclón es favorable,
requiere cuatro evaluaciones funcionales por cada paso, lo cual aumenta
<mnsideiablemente el tiemj:m de cálculü. Este métüdo tiene la ventaja adicional de que
se auto inicia; es decir se requiere solo el valor de y en un punto x = Xn para hallar y' e
y. en x = xii+i·
La fórmula computacional se obtiene aplicando la regla 3/8 de Simpson para resolver
la integral aliado derecho de la ecuación (8.1). La fórmula de recursión es:
(8.19)
Dónde:
Ejemplo:
Los circuitos RC son arreglos que están compuestos por una resistencia y un
condensador. Se caracteriza por que la corriente puede variar con el tiempo. Cuando
ei tiempo es iguai a cero, ei condensador está descargado, en el momento que
empieza a correr el tiempo, el condensador comienza a cargarse ya que hay una
corriente en el circuito, ver figura (8.3).
Figura (8.3). Circuito RC.
217
La ecuación diferencial que determina la variación de carga respecto al tiempo para
este tipo de circuitos (durante el proceso de carga), es:
dq =V _ _j_ dt R. RC
Determine la variación de carga para t desde O hasta 1 seg. Si se sabe que cuando t = O, q = O; además: V = 1 O Voltios, C = 2200 J..tF y R = 1 OOQ. (Obtenga 15 puntos de
gráfica).
Los resultados computacionales arrojan lo siguiente:
SOLUCION DE E.D.O. METODO RUNGE KUTTA 4 ORDEN
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 15 INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO 0.0 1.0 INGRESE LAS CONDICIONES INICIALES (XO,YO) 0.0 0.0
RESULTADOS
X F (X)
=================== .00000 .00000 .06667 .00038 .13333 .00075 .20000 .00112 .26667 .00148 .33333 .00184 .40000 .00219 . 4 6667 .00253 .53333 .00286 . 60000 .00320 .66667 .00352 .73333 .00384 .80000 .00415 .86667 . 0044.6 .93333 .00477
1.00000 .00506
218
Codificación:
La codificación que genera los resultados computacionales mostrados es la
siguiente:
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM RUNGEKUTTA_40RDEN
REAL(4) N,Xe,ve,A,B,H,Y(1000),X(1000)
10 WRITE(*,*)'' WRITE(*,*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 4 ORDEN' WRITE(*;*)' ============================================= WRITE(*, *)'' WRITE(*,*)' INGRESO DE DATOS' WRITE(*~*)' --------------------------------------------WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*,*)N WRITE(*,*)' INGRESE LOS VALOR INICIAL Y FINAL DEL DOMINIO' READ(*,*)A,B WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (Xe,ve)' READ(*,*)Xe,ve WRITE(*,*)' --------------------------------------------WRITE(*, *)'' X(1)=X0 Y(l)=Y8 H=(B-A)/N DO I=1,N+1 V(T~.--"1 \_V/T\--.-U A.\.J.."T.J..)-A.\..l.JTti
A=H*F(X(I),Y(I)) B=H*F(X(I)+H*0.333333,V(I)+A*0.333333) C=H*F(X(I)+H*8,666666;V(I)+A*8.333333+B*8.333333) D=H*F(X(I)+H,Y(I)+A-B+C) Y(I+1)=Y(I)+H*0.125*(A+3*B+3*C+D) END DO WRITE(*,*)' RESULTADOS' WRITE(*,*)' --------------------WRITE(*,*)' ==================== WRITE(*,*)' X F(X)' WRITE(*,*)' ==================== DO J=1,N+1 WRITE(*,20)X(J),Y(J) ENDDO
29 FORMAT(2X,F9.5,3X,F9.5) ~\IRITE ( *, *) ' ==================== END FUNCTION F(X,V) F=8.8*X+8.1-Y/0.22 RETURN END
219
8.7 Solución de ecuaciones diferenciales ordinarias de orden superior
Cuando se tiene una EDO de orden n, con n condiciones especificadas en un
punto xo y Uf1 punto xf aonae nay que encontrar f(xt), esto es lo que normalrnente
definimos como "el problema de valor inicial general" o con "condiciones iniciales", de
manera que se cumple le siguiente:
(8.20)
Para resolver (8.20) la mayor parte de las subrutinas de propósito general para
ecuaciones diferenciales suponen que una ecuación diferencial n-ésima se ha de
expresar como un sistema de n ecuaciones de primer orden, luego para una ecuación
de orden n dada en la forma:
Se efectúa el siguiente cambio de variables.
Yr =y
Y2 =y'
Y3 =y"
y 4 =y"'
220
(.8.21)
(8.22)
A continuación se deriva miembro a miembro la primera y se sustituye en la segunda,
y así sucesivamente, con lo que se tiene un sistema den ecuaciones de primer orden.
1 y 3 =y 4
(8.23)
Y'n-1 =yn •n
1 a-y C'{ 1 11 n-1) C'{ ) Y n =-- = 1\x,y,y ,y , ...... ,y = 1\x,y1,yz,Y3, ........ ,yn dxn
De modo general, un sistema de n ecuaciones de primer orden tendrá la forma:
Y11 =f1(x,y1,yz, ........... ,yn)
u' - .f {""' Y Y Y \ Y 2 ·-.L2\A' 1' z, ........... , nl
Y1
3 = f 3 (X, Y 1' Y 2 '· · · · · · · ·" ·' Y n ) (8.24)
Y1n =fn(x,y1,y2, ........... ,yn)
Todos los métodos numéricos analizados previamente (Euler y Runge-Kutta) se
pueden adaptar al sistema (8.24), y sa pueden ·expresar en forma más compacta como
vectores, es decir:
(8.25)
Dónde: y', fe y son vectores con n componentes.
Ejemplo:
Usando el cambio de variables, deduzca la fórmula computacional del método
de ~uler hacia adelante y Runge-Kutta de 2do Orden, para solucionar una ecuación
diferencial de 2do. Orden con condiciones iniciales.
221
Una EDO de 2do. Orden de forma general se escribe de la siguiente forma:
d2 Y''=----!=f{x. v. v')
dx 2 '"'"' (8.26)
La ecuación (8.26) se convierte en dos ecuaciones diferenciales de primer orden
haciendo:
y'=z
i'=z' (8.27)
La solución de las ecuaciones (8.27) con el método de Euler, generan las fórmulas
siguientes:
(8-28) .. ,~-~=;
Las fórmulas (8.28) deben resolverse simultáneamente, en conjunto con la ecuación
de avance del dominio.
(8.29)
Donde n avanza desde O hasta N (número de puntos requeridos del dominio). La
solución de la ecuación (8.26) requiere de dos condiciones iniciales, los puntos Xo, y0 y
Xo y Y' o= Zo.
Con el método de Runge - Kutta de Segundo Orden, la solución de las ecuaciones
(8.27), es la siguiente:
A=zn +hf(xn,Yn,zn)
B=yn +h(zn)
h zn+l = zn +- [f(xn, y n, zn) + f(xn+l ,B, A)] 2- -
h Yn+l =yn +-[zn +A]
2
222
(8.30)
Usando los Métodos de Euler hacia Adelante y Runge - Kutta de 2do. Orden obtenga
la gráfica de la solución de la ecuación diferencial de movimiento del sistema masa
resorte mostrado.
Figura (8.4). Sistema masa-resorte.
Donde p2 = Klm. El peso de la masa es 1 O lb, la constante del resorte, K= 1.5 lb/pulg;
las condiciones iniciales son: to = O, x'o = O y Xo = 5 pulg. Calcule un total de 20 puntos
para un tiempo desde O hasta 5 segundos de oscilación. En este caso el avance o
ancho de paso será de 0.25.
Los resultados computacionales obtenidos usando el método de Euler hacia adelante
para una EDO de Segundo Orden son los siguientes:
SOLUCION DE E.D.O. METODO EULER HACIA ADELANTE
(SEGUNDO ORDEN)
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 20 INGRESE LOS LIMITES DE OPERACION [A,B] 0.0 5.0 INGRESE LAS CONDICIONES INICIALES (XO,YO, ZO) 0.0 5.0 0.0
223
RESULTADOS
==================================== X Y(X) Z (X)
==================================== .000000 5.000000 .000000 .250000 5.000000 -.187500 .500000 4.953125 -.375000 .750000 4.859375 -.560742
1.000000 4. 719190 -.742969 1.250000 4.533447 -.919938 1.500000 4.303463 -1.089943 1.750000 4.030977 -1.251323 2.000000 3.718146 -1.402484 2.250000 3.367525 -1.541915 2.500000 2.982046 -1.668197 2.750000 2.564997 -1.780024 3.000000 2.119991 -1.876211 3.250000 1.650939 -1. 955711 3.500000 1.162011 -2.017621 3.750000 . 657606 -2. 06119"6 4.000000 .142306 -2.085856 4.250000 -.379158 -2. 091193 4.500000 -.901956 -2.076975 4.750000 -1.421200 -2.043151 5.000000 -1.931987 -1.989856 ====================================
Los resultados computacionales obtenidos usando el método de Runge-Kutta de 2do.
Orden para una EDO de Segundo Orden son los siguientes:
SOLUCION DE E.D.O. METODO RUNGE KUTTA 2 ORDEN
(SEGUNDO ORDEN)
INGRESO DE DATOS
INGRESE EL NUMERO DE PUNTOS (N) 20 INGRESE LOS LIMITES DE OPERACION [A,B] 0.0 5.0 INGRESE LAS CONDICIONES INICIALES (XO,YO,ZO) 0.0 5.0 0.0
224
RESULTADOS ====================================
X Y(X) Z (X)
==================================== .000000 5.000000 .000000 .250000 4.976563 -.187500 .500000 4.906360 -.373242 .750000 4.790051 -.555481
1.000000 L 628727 -.732504 1.250000 4.423904 -.902648 l. 500000 4.177505 -1.064313 1.750000 3.891845 -1.215981 2.000000 3.569607 -1.35 6225 2.250000 3.213818 -1.483728 2.500000 2.827821 -1.597291 2.750000 2.415243 -1.695847 3.000000 1.979960 -1.778469 3.250000 1.526061 -1.844381 3.5.0.000.0 l. .057813 -1.892963 3.750000 .579613 -1.923758 4.000000 .095957 -1.936476 4.250000 -.388612 -1.930997 4.500000 -.869539 -1. 907372 4.750000 -l. 34230 6 -1.865824 5.000000 -1.802470 -1.806741
=====================================
La gráfica generada con los resultados computacionales mostrados es la siguiente:
-~ '-"'
= •o :g .., o ~
5.5 5
4.5
4 3.5
3 2.5
2
1.5
0.5 o
Solución del sistema Masa-Resorte
--M.Euler
.... -- ·M.R-K2 ........ j
¡ ¡
::-¡- . 0.5 1- . 1.5 2 25 3 3.5 ' -S<- 515
-2~~ j_ ···-· -· ............................................... -.- -........ _, -.................................... _, ........................ -· j Tiempo (s)
Figura (8.5). Superposición de curvas generadas por el método de Euler y Runge
Kutta.
225
Codificación:
Las codificaciones que generan los resultados computacionales mostrados son
las siguientes:
Método de Euler hacia adelante
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM EULER_ADELANTE_2DO_ORDEN
REAL (4) A,B,H,X(1888),Z(1888),Y(1888),N
18 WRITE(*,*)'' WRITE(*,*)' 50LUCION DE E.D.O. METODO EULER ~ACIA ADELANTE' WRITE(*,*)' ============================================== WRITE ( *, *) ' (SEGUNDO ORDEN) ' !.-JRITE(*; *)'' WRITE(*,*)' INGRESO DE DATOS' WRITE(*,*)' ---------------------------------------------WRITE(*l*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*,*)N WRITE(*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]' READ(*,*)A,B WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (X8,V8, Z8)' READ(*,*)X(1),Y(1),Z(1) H=(B-A)/N DO I=1,N+1 X(I+l)=X(I)+H Z(I+l)=Z(I)+H*F(X(I),Y(I),Z(I)) Y(I+i)=Y(I)+H*Z(I) END DO WRITE(*,*)' RESULTADOS' WFlTTEI* *)' n..Lit:\ J
WRITE(*,*)' WRITE ( *, *) '
==================================== X Y(X) Z(X)'
WRITE(*j*)' ==================================== DO J=1,N+1 WRITE(*,28)X(J),Y(J),Z(J) END DO
28 FORMAT(2X,F18.6,4X,F18.6,4X,F18.6) WRITE(*,*)' ==================================== END
FUNCTION F(X,V,Z) F=8.8*X+8.8*Z-8.15*Y RETURN END
226
Método de Runge - Kutta 2do Orden para EDO de 2do Orden
! AUTOR: LIC. JORGE LUIS GODIER AMBURGO
PROGRAM RUNGEKUTTA 20RDEN 20RDEN - -
REAL(4) N~A,B~H~Y(1000)~X(1000)~Z(1000)
10 WRITE(*,*)'' WRITE(*~*)' SOLUCION DE E.D.O. METODO RUNGE KUTTA 2 ORDEN' WRITE(*~*)' ~~~~~~~;;;;=~=;=~======;==========~==~======= WRITE(*~*)' (SEGUNDO ORDEN)' WRITE(*~*)' INGRESO DE DATOS' WRITE{*J*)' --------------------------------------------WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS (N)' READ(*~*)N WRITE(*~*)' INGRESE LOS LIMITES DE OPERACION [A~BJ' READ(*~*)A~B WRITE(*~*)' INGRESE LAS CONDICIONES INICIALES (X0~V0~Z0)'
READ(*~*)X(l)~Y(l),Z(l)
WRITE(*,*)' --------------------------------------------WRITE ( *, *) ' ' H=(B-A)/N 00 I=i,N+i X(I+l)=X(I)+H AA=Z(I)+H*F(X(I)~Y(I),Z(I)) gg=V(I)+I'l*Z(I) Z(I+l)=Z(I)+0.5*H*(F(X(I)~V(I)~Z(I))+F(X(I+l)~BB,AA)) V(I+l)=Y(I)+0.S*H*(Z(I)+AA) HJD DO WRITE(*~*)' RESULTADOS' WRITE(*~*)'
WRITE(*)*)' ==================================== WRITE(*,*)' X Y(X) Z(X)' WRITE(*~*)' ==================================== DO J=l~N+l WRITE(*~20)X(J)~Y(J)~Z(J) END DO
20 FORMAT(2X~F10.6~4X~F10.6~4X~F10.6)
WRITE(*~*)' ==================================== END
FUNCTION F(X~Y~Z) F=e.e*X+3.3*Z-3.15*Y RETURN END
227
Problemas de aplicación
a. Despreciando la masa de la barra delgada, la ecuación diferencial de
movimiento del pénduio mostrado en ia figura (8.8), es:
Dónde: g, es la aceleración gravitacional y 1 es la longitud de la cuerda.
Las condiciones iniciales son 8 = n/4 y 8' = O para t = O seg. Se desea
calcular la posición angular para un tiempo desde t =O hasta t = 10 seg, con un
total de 1 O puntos y un error porcentual relativo de 0.1%.
Figura (8.8). Péndulo simple.
b. Una pieza metálica con una masa de 0.1 Kg y 200°C (o 4 73 K) se coloca
en cierto momento dentro de un cuarto con una temperatura de 25°C (es
decir T=297 K para t = O seg.), donde está sujeta al enfriamiento por
convección natural y la transferencia de calor por radiación. Bajo la
hipótesis de que la distribución de temperatura es uniforme en el metal,
la ecuación de temperatura se puede escribir como;
228
Dónde: T es la temperatura en grados Kelvin y las constantes son:
p = 300 Kg/m3
a= 5.67 x 10-8 w/m2K4
S= 0.8
(densidad del metal)
(Constante de Stefan-Boltzmann)
(Emisividad del metal)
Ta =Temperatura Ambiente en grados Kelvin
V= 0.001 m3 (Volumen del metal)
A= 0.25 m2
e= 900 J/KgK
he;;;; 30 J/m2K
(Área Cie la süpeffieie aei metal)
(Calor especifico del metal)
(coeficiente de transferencia de calor)
Obtener la gráfica temperatura vs. tiempo para 50 puntos con t desde O hasta 30
segundos.
c. Cierto material de forma cúbica, con una masa M de 0.5 Kg se pone en
el extremo inferior de un resorte sin masa. El extremo superior se fija a
una estructura en reposo. El cubo recibe una resistencia de R = -Bdy/dt
dei aire, donde 8 es una constante de amortiguamiento, ver figura (8.9),
la ecuación de movimiento es:
Donde y es el desplazamiento desde la posJcJon estática, k = 100
Kg/seg2 es la constante del resorte y B = 1 O Kg/seg. Calcule 60 datos de
posición y velocidad para t desde O hasta 30 segundos, considerando
que para t = ü, y= ü y y' =O.
~ ~1
1
t Figura (8.9). Sistema masa-resorte amortiguado.
229
d. Un circuito en serie contiene un resistor y un inductor, tal como se
muestra en la figura (8.10), si se conoce la ecuación diferencial de la
corriente i(t) y si R = 1 O.Q, L = 0.15 henrios, S1 está cerrado, S2 abierto y
E = 15sen 2.5t (fuente de corriente alterna). Grafique la variación de
corriente y carga en intervalos de 0.01 s para un intervalo desde O hasta - - .
5.0 ség. siéncó qué i =o y q =o érí t = o.
Donde: E, es la fuente de corriente alterna.
L
.---------~'~-------.
1 (s1 E S 2
lt\1'--------'l Figura (8.1 O). Esquema de circuito R-L
e. El imán permanente A ejerce una fuerza sobre el peso W, ver figura
(8.11), que es inversamente proporcional ai cuadrado de ia distancia x
entre el centro de masa del imán y el centro de masa de W. Si el
coeficiente r.le f¡icción entre W y la superficie es ji, y ia ecuación
diferencial es:
Determine la posición y velocidad para el bloque W si se sabe que en t =
O, x = 12 pulg. x' = O. Hasta un tiempo de 1 O segundos con un total de
30 puntos. Como datos adicionales se sabe que k/m = 7200 pulg.3/seg2,
1-L = 0.1 y g = 360 pulg./seg2.
230
1------- )( ____ _,
1 A
1 1 4 Pulg.
Figura (8.11). Atracción magnética.
f. Resuelva la ecuación diferencial siguiente:
dy =x+y+xy dx
w
1 1 2 Pulg.
Si se sabe qué y = 1 para x = O, obtenga 50 puntos para un x que va
desde O hasta 25 unidades.
g. Resuelva la ecuación diferencial siguiente:
~y =x+y ax
Si se sabe qué y = 1 para x = O, obtenga 50 puntos para un x que va
desde O hasta 25 unidades y compare su resultado con la solución
analítica siguiente:
y(x) = 2ex - x -1
231
7. DISCUSIÓN
Respecto al conjunto de problemas que siNen de base para este trabajo, se
utilizaron los textos que contienen aplicaciones físicas propuestas a resolver
numéricamente, de Brian, H. (1994), Chapra, S. y Canale, R. (2003),
Nakamura, S. (1992); los cuales proporcionan el fundamento necesario para el
desarrollo de codificaciones en fortran con aplicaciones Físicas.
Sobre lo visto de la sintaxis del lenguaje de programación Fortran 90 se
utilizó el conjunto de instrucciones, procedimientos, sentencias y
procedimientos indicados en la librería del manual de usuario de Microsoft
Developer Studio 4.0 de Fotran 90; para tener mayor precisión respecto a lo
establecido en textos como los de Nakamura, S. (1992) y Chapra (2003).
Para la solución de ecuaciones no lineales, se seleccionaron los
métodos de mayor eficiencia como el de bisección, falsa posición, secante,
Newton-Raphson, Muller y Laguerre mismos que pueden incluso expandirse al
cálculo de raíces complejas, tal como se puede ver en Nakamura, S. (1992).
En el Capítulo 111, las técnicas usadas para solución sistemas de
ecuaciones lineales son los de mayor facilidad de codificación como la
eliminación de Gauss, pero con menor eficiencia computacional cuando se
trata de sistemas muy grandes con N > 1 O; sin embargo permiten resolver
muchas aplicaciones físicas de dinámica y estática, tal como se puede ver en
Brian, H. (1994).
Para resolver el problema de ajuste y aproximación de curvas en el ámbito
de la física experimental; se resuelve aplicando los métodos de linearizacion
potencial y exponencial y la aproximación por mínimos cuadrados, se supera lo
mostrado por Chapra, S. C. y Canale R. P. (2003) al desarrollar las
codificaciones.
232
En el Capítulo de interpolación se tratan los métodos de mayor eficiencia y
simplicidad para la construcción de nuevos puntos funcionales partiendo del
conocimiento de un conjunto discreto de puntos; método de Newton hacia
adelante Newton-Gregory-Forward y Método de Lagrange; su importancia
radica en el hecho de que con frecuencia en física, ingeniería y otras ciencias
es frecuente disponer de un cierto número de puntos obtenidos por muestreo o
a partir de un experimento y pretender construir una función que los ajuste.
En el Capítulo VI, se analizan las formulas numéricas para aproximación
de la derivada, que se utilizan para evaluar las derivadas por medio de valores
dados en los puntos de una retícula, en este caso se utiliza el método de
aproximación por el desarrollo en serie de Taylor, que necesita una retícula
uniforme tal como puede verse en Curtis, F. y Wheatley, P. (2000).
En el Capítulo VIl se tratan formulas numéricas de integración y se
muestran las que son construidas tomando como base los polinomios de
interpolación de Newton hacia delante de diferentes órdenes, haciendo una
extensión de las Reglas del trapecio, 1/3 y 3/8 de Simpson, superando lo que
se presenta en Chapra, S. C. y Canale R. P. (2003) y Cante, S. y Boor, C.
(1985).
. En el Capítulo VIII, se tratan las formulas numéricas que permiten
aproximar la solución de una ecuación diferencial ordinaria. En este capítulo se
desarrolla el tratamiento computacional de las EDO, con los métodos de Euler,
los cuales en particular son adecuados para una programación rápida debido a
su sencillez; sin embargo, a pesar de su gran estabilidad, requiere un tamaño
de paso muy pequeño para alcanzar una precisión razonable, también se
desarrollan los métodos Runge-Kutta de segundo, tercer y cuarto orden,
haciendo una ampliación para la solución de EDO de orden superior con el
método de cambio de variable superando lo tratado en lriarte, R. y Balderrama,
V. (1990) y Maron, J. y Lopez, J. (1995).
233
8. REFERENCIALES
Burden, R. y Faires, D.; "Numerical Analysis", 7ma. Edición, Ed. Brooks/Cole.
New york, 2000.
Brian, H.; "Fortran 90 for Scientists and Engineers", Fortran PowerStation 4.0.
March 1994 in paperback 368 pages ISBN O 340 60034 9.
Chapra, S. C. y Canale R. P.; "Métodos numéricos para ingenieros". 4ta.
Edición, Ed. McGraw-Hill. México, 2003.
Cante, S. y Boor, C.; "Análisis Numérico", 2da. Edición, Ed. McGraw - Hill,
México, 1985.
Curtis, F. y Wheatley, P.; "Análisis Numérico con aplicaciones"; 6ta. Edición,
Ed. Pearson, México, 2000.
lriarte, R. y Balderrama, V.; "Métodos numéricos"; 1ra. Edición, Ed. Trillas.
México, 1990.
Maron, J. y Lopez, J.; "Análisis Numérico un Enfoque Práctico", 1ra. Edición,
Ed. Continental S.A.; México, 1995.
Nakamura, S.; "Métodos Numéricos Aplicados con Software", 2da. Edición, Ed.
Hispanoamericana, México, 1992.
Nieves, A y Domínguez, F.; "Métodos numéricos Aplicados a la ingeniería";
2da. Edición, Ed. Continental S.A.; México, 1998.
Tipler, P. y Mosca, G. "Física para la ciencia y la tecnología", Volumen 1, 6ta.
Edi~ón, Ed. Reverte; Espana,2010.
234
9. APÉNDICE
A. Codificación Runge-Kutla 2do. Orrden para EDO 2do. Orrden
PROGRAM RUNGEKUTTA2 SEGUNDO ORDEN - -
Real(4) Y(9000),X(9000),Z(9000)
10 WRITE(*,*)'' vJRITE (*, *)' SOLUCION EDO 2do. ORDEN RUNGE -KUTTA 2do ORDEN' WRIT~(*,*)' ============================================= WRITE ( *, *) ' ' WRITG(*,*)' INGRESO DG DATOS' WRITE(*,*)' ---------------------------------------------WRITE(*~*)' INGRESE LAS CONDICIONES INICIALES (X0,Y0,Z0)' READ(*,*)X0,Y0,Z0 WRITE(*,*)' INGRESE EL PUNTO FINAL DEL DOMINIO (XF)' READ(*,*)XF WRITE(*,*)' INGRESE EL NUMERO DE DATOS (N)' READ(*,*)N WRIIE(*,*)' --------------------------------------------H=(XF-X0)/N X(l)=Xfl Y(1)=Y0 Z(1)=Z0 DO K=l,N X(l<+l)=X(K)+H ZZ=Z(K)+H*F(X(K),Y(K),Z(K))
15 Y(K+l)=Y(K)+(H*0.5)*(ZZ+Z(K)) Z(K+1)=Z(K)+(H*0.5)*(F(X(K+1),Y(K+1) 1 ZZ)+F(X(K) 1 Y(K),Z(K))) END DO WRITE(*,*)' RESULTADOS' WRITE(*,*)' -------------------------------------WRITE(*,*)' ===================================== WRITE(*,*)' X Y(X) V'(X) ' WRITE(*,*)' =====================================
18 DO J=l,N+1 WRITE(*,20)X(J),Y(J),Z(J) END DO
20 FORMAT(2X,4(2X,F12.6)) END
FUNCTION F(X,Y,Z) F::::-10*X-2*Y*Z RETURN END
235
B. Codificación Runge-Kutta 3er. Orden para EDO 2do. Orden
PROGRAM RUNGE KUTTA 30RDEN 20RDEN - - -
REAL(4) x(1888),Y(1888),z(1888)
18 WRITE(*,*)'' J,IDTTIO('f< *) 1 VVf'\..Lit:; J
WRITE ( *, *) ' WRITE ( *, *) ' '
$0LUCION ÉDO(gÉGUNDO ORDEN) RUNGE KUTTA 3ER ORDEN' =================================================
WRITE(*,*)' INGRESO DE DATOS' WRITE(*,*)' -------------------------------------------------WRITE(*,*)' INGRESE LAS CONDICIONES INICIALES (Xe,ve,ze)' READ(*,*)X(l)JY(l)JZ(l) WRITE(*,*)' INGRESE PUNTO FINAL DEL DOMINIO (XF)' READ(*,*)XF WRITE(*,*)' INGRESE EL NUMERO DE PUNTOS DE LA SOLUCION (N)' READ(*,*)N WRITE(*,*)' ----------------------------------------------WRITE(*,*)'' WRITE(*,*)'' H=(XF-X(l))/N DO I=1,N X(I~1)=X(I)~ H A=Y(I)+0.5*H*Z(I) B=Z(I)+8.5*H*F(X(I),Y(I),Z(I)) .L.\A=Y(I)+H*B BB=Z(I)+H*F(X(I)+H*8.S,A,B) Y(I+l)=Y(I)+(H/3.8)*(Z(I)+4*B+BB) Z(I+1)=Z(I)+(H/3.8)*(F(X(I)}Y(I) 1 Z(I))+4*F(X(I)+H*8.5 1 A1 B)+F(X(I
+1) ,AA, BB)) END DO WRITE(*,*)' RESULTADOS' WRITE(*,*)' ------------------------------------WRITE(*,*)' ==================================== WRITE(*,*)' X Y(X) V'(X)' WRITE(*,*)' ==================================== WRITE(*,*)'H= ',H
17 DO J=l,N+l WRITE(*,2e)X(J),V(J),Z(J) END DO
28 FORMAT(2X,3(F10.4,1X)) 25 WRITE ( *; * ) '
END ====================================
FUNCTION F(X,Y,Z) ~~1e*cog(x*Y)-Z**3
RETURN END
236
10.ANEXOS
A. Solución Problema Cuerda Vibrante con Diferencias Finitas
· una cuerda de guitarra mide so cm. dé largo y pésa ·1.0 gr. Sé éstira con una tensión de 40000 gr. En un punto a 20 cm. de un extremo, se tira de la cuerda a 0.6 cm. con respecto a la posición de equilibrio y luego se suelta. Encuentre los desplazamientos a lo largo de la cuerda como una función del tiempo. Use Ax"" 1 O cm. y llene la tabla (1) con dos decimales de precisión, la ecuación que rige este fenómeno es:
Donde:
o2u · Tg o2u ----ae w & 2
T, es la tensión aplicada a la cuerda. W, es la densidad lineal de la cuerda. G, es la gravedad.
(1)
Utilizando diferencias finitas para solucionar la ecuación (1) y luego para los valores en el primer paso de tiempo tenemos la ecuación siguiente:
(2)
Donde los subíndices indican variación en x y los supraindices indican variaciones en t, además g(x) = O dado que la primera derivada parcial de la función u respecto al tiempo en el instante t =O es cero (debido a que la cuerda esta fija en los extremos). Por condición de estabilidad considere que:
. Usamos· la aproximación con diferencias centrales para m = 2 en dos dimensiones a ambos lados, de donde obtenemos:
.·' Luego:
uf+I = Tg(Atf (ui +ui )+2ui(l- Tg(At)2 )-ui-I 1 (A)2 Hl 1-l 1 (A.)2 1 wux w~
Por condición de estabilidad; Tg(At)~ = 1 , entonces la solución final es; w(Ax)-
uj+I =u! - u!-1 +u! 1 1+1 1 I-1
237
(3)
Como Ax = 10 cm., T = 40000, g = 980 g/cm2 y w = 1.0/80, entonces:
~t = / w ~x = 1.79xl0-4
\ Tg
Empleando la ecuación (2) y la ecuación (3) se llenan los valores de la tabla (1 ).
Tabla (1 ), valores de posición y tiempo para la cuerda en vibración.
Pasos Valores de u en x = de o 10 20 30 40 50 60 70 80
tiempo o 0.00 0.30 0.60 0.50 0.40 0.30 0.20 0.10 0.00 1 0.00 0.30 0.40 '0.50 0.40 0.30 0.20 0.10 0.00 2 0.00 0.10 0.20 0.30 0.40 0.30 0.20 0.10 0.00 3 0.00 -0.10 0.00 0.10 0.20 0.30 0.20 0.10 0.00 4 0.00 -0.10 -0.20 -0.10 0.00 0.10 0.20 0.10 0.00 5 0.00 -0.10 -0.20 -0.30 -0.20 -0.10 0.00 0.10 0.00 6 0.00 -0.10 -0.20 -0.30 -0.40 -0.30 -0.20 -0.10 0.00 7 0.00 -0.10 -0.20 -0.30 -0.40 -0.50 -0.40 -0.30 0.00
. --8 0.00
..
-ú.1tf ~o.2·a· ~0.30 -0.40 -
-0.50 ---
-0.60 -~(f3() ·a.oo 9 0.00 -0.10 -0.20 -0.30 -0.40 -0.50 -0.40 -0.30 0.00 10 0.00 -0.10 -0.20 -0.30 -0.40 -0.30 -0.20 -0,10 0.00
238