Está en la página 1de 239

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICA


®
,·ASo 2014

INFORME FINAL

PROYECTO DE INVESTIGACIÓN

"TEXTO: Métodos Numéricos Aplicados con Fortran"

Mg. Jorge Luis Godier Amburgo.

(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 ........................................................................... 108
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, 1994).
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", 1ra.


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 1O 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.

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

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

.OR. 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.·

1'~.

SUM 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
1.5.4 Procedimientos para trabajo con valores numéricos

ABS 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.
1.5.5 Procedimientos para tra&ljbcon valores trigonométricos,
exponenciales y logarítrrite!6s

cos 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.
$JotaXis
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 1O 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 1O 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.

1.5.7 Procedimientos de control de programa (ciclos y transferencias)

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

[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 1O 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 DEFAULT, 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 1O, en cuanto el valor sea mayor a 1O 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.

Tabla (1.1) Descriptores de ingreso y salida.


Descriptor de
Tipo de variable
entrada y salida
lw[.m] Valores enteros
Bw[.m] Datos binarios
Ow[.m] Valores octales
Zw[.m] Valores hexadecimales
Fw.d Valores reales
Ew.d[Ee] Valores reales con exponentes
ENw.d[Ee] Valores reales con exponentes en notación de ingeniería
ESw.d[Ee] Valores reales en notación científica
Gw.d[Ee] Valores reales en rango extendido
Dw.d Valores reales de doble precisión
Lw Datos de tipo lógico
A[w] 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.


Salida de datos por pantalla.

Salida de datos por archivo.

Salida de datos por impresora.

o Conector interno (dentro de pagina}.

o 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

N
e

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

1 l. 5707 1.0000 l. 5707 100.000


2 5.4458 6.0000 2.4783 36.623
3 15.0060 120.0000 2.6034 4.803
4 38.5919 5040.0000 2. 6110 0.2933
5 96.7807 362880.0000 2. 6113 0.0102

RESULTADO SENOH (1.5707) 2. 6113


ERROR % 0.0102

44
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
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
19 FORMAT(1X,I2,1X,4(F17.4,1X))
20 FORMAT(1X, 'RESULTADO: SENOH (',F9.4, ') ', F9. 4)
21 FORMAT(lX, 'ERROR%= ',F9.4)
END

45
Ejemplo:

Elabore un ¡:>rograma en Fortran que Permita evaluar las funciones siguientes:

a) y= 5x 2 + 6x+ 7, en el intervalo: [-5, 5], para total N= 20 divisiones.

b) y= cos(x 2 ) +sen(x 3 ), en el intervalo: [-5, 5], para total N= 20 div.

e) z = 5xy + 6x 3 + 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 6

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
Gráfica:

-------------------2-o--5-,- - - - - - - - - - - - - - - - -
l-¡--------------
1

-~---- -·-··--

----~---------~ i -----------
!
1
·---- .... ·-··.-··-·····---------··-····· --·······-·-- ··--·~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 X, xo y Xf
-1 1
INGRESE LOS LIMITES DE LA FUNCION EN Y, YO y Yf
-1 1
INGRESE NUMERO DE INTERVALOS EN X
8
INGRESE NUMERO DE INTERVALOS EN y
8

RESULTADOS

HX 0.25000000 HY = 0.25000000

-l. 000 -0.750 -0.500 -0.250 0.000 0.250 0.500 0.750 l. 000
-l. 000 -0.400 l. 819 2.350 l. 756 0.600 -0.556 -1.150 -0.619 l. 600
-0.750 -l. 650 0.881 l. 725 l. 444 0.600 -0.244 -0.525 0.319 2.850
-0.500 -2.900 -0.056 1.100 1.131 0.600 0.069 0.100 1.256 4.100
-0.250 -4.150 -0.994 0.475 0.819 0.600 0.381 0.725 2.194: 5.350
0.000 -5.400 -l. 931 -0.150 0.506 0.600 0.694 1.350 3 .13<1 6,600
0.250 -6.650 -2.869 -0.775 0.194 0.600 l. 006 l. 975 4.069 7.850
0.500 -7.900 -3.806 -1.400 -o .119 0.600 1.319 2.600 5.006 9.100
0.750 -9.150 -4.744 -2.025 -0.431 0.600 l. 631 3.225 5.944 10.350
l. 000 -10.400 -5.681 -2.650 -0.744 0.600 l. 944 3.850 6.881 11.600

48
Gráfica:

15

Codificación:

La codificación que genera los resultados mostrados es la siguiente:

PROGRAM FUNCION

REAL(4)A 1 ,B 1 C 1 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 *)A 1 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(* *)' H = 1 1 H
1

WRITE(* 1 *)' N X Y'


WRITE(1 1 *)' N X Y'
DO I=1 1 N+1
X=A+(I-1)*H
Y=F(X)

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

A = leos(a) sen(b)1 er
y B=
tan(e) cot( d) log(g)

Donde: Para el caso ( 1)


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+sen (n+1)
3

L.
n=l 2n +n 3
00 1
• ~ 2n -{1 +sen 2
(n 3 ))
00 1
• ~-(2-n---1)-(2_n_+-1)
n3(-J2 +2Y
.n=l¿oo
-
3n
-
oo -Jn3 +1
•L
n=l e
n

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 1O 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 rq~
47tE 0 i=I

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 - -
n=O (2n+l)!

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

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
21
producir 4. 7 x 10 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 x 0 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 (2.1)
b actual

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.

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

¡! 0.000
/
f. . .. ¡1
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
l
............. ·--. ·- ··,~·--·····-· -- --- 1
1
1 ¡
¡¡ -1.soo -- 1
_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
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

N A F(A) e F(C) B F(B) EA


1 2.5000 0.5985 4.0000 -0.7568 3.2500 -0.1082 100.0000
2 2.5000 0.5985 3.2500 -0.1082 2.8750 0.2634 13.0435
3 2.8750 0.2634 3.2500 -0.1082 3.0625 0.0790 6.1224
4 3.0625 0.0790 3.2500 -0.1082 3.1563 -0.0147 2.9703
5 3.0625 0.0790 3.1563 -0.0147 3.1094 0.0322 l . 507 5
6 3.1094 0.0322 3.1563 -0.0147 3.1328 0.0088 0.7481
7 3.1328 0.0088 3.1563 -0.0147 3.1445 -0.0029 0.3727
8 3.1328 0.0088 3.1445 -0.0029 3.1387 0.0029 o.18 67
9 3.1387 0.0029 3.1445 -0.0029 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) e F(C) B
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
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, 1O], 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

WRITE(*,*)' *******************************************1
WRITE(*, *)' * BUSQUEDA DE INTERVALOS DE UNA RAIZ * 1

WRITE(*,*)' *******************************************'
WRITE ( *, *) 11
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) (2.2)
c-a

Despejando x, se tiene:

c-a
x =a+ (y-f(a)) (2.3)
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)


(2.4)
f(c)-f(a) f(c)-f(a)

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
/ 1a. interpolación
/ / 2a. interpolación
/ 3a. interpolación
/ 1 a. aprox!mac!?n .
/~ 2a. aproxtmac1on
'.
3a. aproximación
.

x=a 1 x =e
1
1
Raíz exacta
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 -10x 3+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(C) B
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))
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
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 x 1 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 x 1, satisface:

(2.7)

67
Despejando x 1, 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).

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) = ---'-----=------ (2.10)
. 2h

68
En el proceso iterativo la ecuación (2.1 O), puede escribirse como:

f(x. )= f(x¡_ 1 +h)-f(x¡_1 -h) (2.11)


1-1 2h

Dónde: h, es un número real que cumple lo siguiente: 1o-3 :::; h :::; 1o- 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 x 1 ; 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:::; 1o-1

Algoritmo:

(i) Ingresar Xo y Tol


(ii) Evaluar f (Xo) usando la ecuación (2.1 O)
(iii) Calcular x 1 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

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

5 WRITE(*, *)''
WRITE ( * , * ) ' RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)'
WRITE(*,*)' ============================================== 1

WRITE ( *, *) ' '


WRITE(*, *)' INGRESO DE DATOS'
WRITE(*,*)' ==================================
WRITE ( *, *) ' INGRESE X0 Y TOL'
READ(*,*)X0,TOL
WRITE(*,*)'RESULTADOS NEWTON-RAPHSON'
WRITE(*,*)' N X0 X1 DFX ABS(F(X0)-F(X1))'
H=0.01
N=0
18 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
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 x 1, son dos suposiciones iniciales para comenzar la iteración.

En la siguiente iteración se utilizan x1 y x 2 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 x 1; 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).

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 x 2 usando (2.12)
(iv) Evaluar: 1x2- x1l ~Tal
• Si se cumple: la raíz es x 2
• Si no se cumple, hacer: Xo = x 1 y x 1 = x 2, 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 1 x+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- x 0 .
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); . a(Oi + b(O) + e= f(Xo) = fo


v1 =h1; (x =x1); ah?+ bh 1 + e= f(x1) = f1
V2 = -h2; (x = x2); 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/h 1 = y, es posible resolver las otras dos ecuaciones par~ a y b.

Para a:

a= yfi-fo(l+y)+fz (2.13)
yh¡(I +y)

Para b:

(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 x 0 , 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.


¡.

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. x 2 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: f 2, fa y f 1.
(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 x 0 = 0.5, una tolerancia de 10-6 y una cantidad de a= 0.5.
~---~~~-- --- - -- .. ----2
!
¡
-1·----·-· "/~~- ----
1
¡ o --: ~/ ---- --- ~--- --~--- ""·--\· 5
-~~--- -~--~----
-1.5
-o.s ---l-/--- _o_.s 1 ___\ _______:

/;
- --- --------/---------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 X1 X2 H1 H2 A B e XR
1 0.5000 l. 0000 0.0000 0.5000 0.5000 -1.0764 2.1232 0.3307 0.3549
2 0.3549 0.5000 0.0000 0.1451 0.3549 -0.8083 2.4918 -0.0138 0.3605
3 0.3605 0.5000 0.3549 o .1395 0.0056 -0.9470 2.5014 0.0001 0.3604

LA RAIZ FINAL ES : 0.36042

La raíz obtenida luego de 3 iteraciones, con una tolerancia de 1o- 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' 1
A=-n
pn
=:L--n

(x-xJ
i=l
(2.16)

Al calcular la segunda derivada de In IPnJ, se encuentra que:

(2.17)

Se observa que 8 siempre es positivo.

Sea x 1 la raíz que quiere determinarse. Supóngase que todas las otras raíces están
lejos de x 1 y que están acumuladas estrechamente entre si en algún punto x = X. Se
definen las siguientes cantidades: a = x - x 1 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
a= - - - : r = = = = = = (2.19)
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 x 1 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 x 1; mientras menor sea mayor
será la aproximación de x 1 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:

f"(xo)= f(x 0 +h)-2f(~ 0 )+f(x 0 -h)


h

Dónde: 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 x 1 usando: x 1 =x 0 - a
(v) Evaluar (!al ::;; TOL)
Si entonces la raíz es x 1
No entonces hacer Xo = x 1 , luego volver al paso (ii)

82
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
IT xo FXO DFXO DDFXO a X1
1 l . 00000 -1.42600 8.21018 -10.72884 -.19856 1.19856
A= -5.757489
B = 25.624950
2 1.19856 -.00880 6.10473 -10.00985 -.00144 1.20000
A= -693.342700
B = 479587.300000
3 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 1o- 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
1O 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/s 2 , 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 P 1 a P2 es:

(K-1)/K ]
HP- 144K p P2
(
- 500(k -1) 1 Q J [( J P1
_
1

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/in 2), P2 es la presión final del gas (30
lb/in 2) 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 (m 0 = 9.11 x 1o-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 MeV =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.

Un sistema de tres ecuaciones lineales se representa de la siguiente manera:

Ax. + By + Cz = O
Ex+ Fy + Gz = H (3.1)
lx + Jy + Kz =L

Dónde: (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:

(3.5)

Dónde: [E 1] 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)


m-Í
ii) [E¡.]m =[E.]m-1
¡ m-1 [Em]m-1.' ("1 = m+ 1 ' ...... ' N)
_ aim (3.7)
a mm

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:

[A:Bt-
1 l
=
a¡¡

~
N'
a1z
azz
o
N-1
N-1
al3 N-'
az3
a33
N-1
N-1
b1N-•
b N-1
z
b N-1
3
J
(3.8)

En este punto podemos resolver el sistema, acomodando la ecuación (3.8) en la


siguiente forma:

an N-1
o
al3

a23N-l
N-IJ( ly
X= X¡

= Xz
J =
[b N-1 J
1

b2N-l (3.9)
[ o o a33
N-1
z = X3
b
3
N-1

El proceso de sustitución regresiva tiene dos partes:

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 (3.1 O)
N- N-1
aNN

90
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

xí ~ N-1 xt ]
= [bíN-1 - .L..,.aít 1 . ("1-
N-1 '
- N- 1 , ...... , 1) (3.11)
t=>+1 a¡;

Ejemplo:

Resolver mediante el método de Eliminación de Gauss y Sustitución Regresiva


el siguiente sistema de ecuaciones lineales:

-1 x + 1y - 4z = O
2x + 2y = 1
3x+ 3y+ 2z = 1/2

En notación matricial, tenemos:

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 = [E 1] 1


El cálculo se inicia para [E 2] 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 2112)-( ~1 )c-1 -4 o)~ (o 6


1 -10 112)

La nueva matriz ampliada [A: 8] 1

1
4
-4 o
-8 1
J
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 [E ] 2
3

[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
-4
-8 1
o]
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
=-3-
2
-+ Z =-
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 1.00000 -4.00000 .00000


.00000 4.00000 -8.00000 1.00000
.00000 6.00000 -10.00000 .50000

MATRIZ TRIANGULAR SUPERIOR PRELIMINAR

-1.00000 1.00000 -4.00000 .00000


.00000 4.00000 -8.00000 1.00000
.00000 .00000 2.00000 -1.00000

MATRIZ INGRESADA

-1.00000 l. 00000 -4.00000


2.00000 2.00000 .00000
3.00000 3.00000 2.00000

MATRIZ TRIANGULAR SUPERIOR FINAL

-1.00000 1.00000 -4.00000


.00000 4.00000 -8.00000
.00000, .00000 2.00000

SOLUCIONES

X 1= l. 25000
X 2= -.75000
X 3= -.50000

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

o 0 ............ o U¡¡ U¡z ul3 ......... U In

L=
rt.
121 122 0 ............ o
y U=
o U22 u23 ......... u2n
(3.12)

\)ni ln2 1n3·········· 1nn o o 0 ........... unn

Además podemos definir las siguientes operaciones:

L(U.X) = B
L .Y = B (3.13)
U. X= Y

Donde y es una matriz columna accesoria, que puede obtenerse de la relación:

r¿·
u¡2

Uzz
ul3"""'"
u23 .........
U In

u2n
rx,
Xz
=

y2
(3.14)

\o o 0 ........... unn \Xn Yn

Ahora por definición sabemos que LU = A, entonces:

o
¡~· ["~·
0 ............ U¡z uB .........
u,. l [a., a¡z aJ3·········

121

In!
122

ln2
0............

ln3 .......... ii ll22

o
u23 .........

0 ...........
U2n
.
unn
a21

anl
.
a2z

an2
a23 ........

an3········
aml
a2n

ann

(3.15)

97
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 u 1¡= a 1¡, 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)


j

I
k=l
lik u¡q = aii (3.17)

Para los elementos donde (i ::; j)

"likuk.
L.J ' •J = alJ.. (3.18)
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
(3.19)
l;i = -(aij- IIikuki) (i = j +1, ..... ,N)
a_¡¡ k=1

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.
2x + 5y + 7z =1O
5x + By - 3z = 15
3x - 9y + 6z = -8

En notación matricial, tenemos:

Iniciamos la descomposición recordando que: u 1¡ = a 1¡ , l¡¡ = 1 y A= L.U, entonces:

~J [~ u:}[~ ~3J
5 5
[1:, 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
121 .~1 1 (?) (Z) (5 ) 1
~ 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
131 ~ a31 =
" 13k uk1
L...J ~
131 (?) Un (2 ) = a3I
(3 )
~
131 = 1.5
k~I

2
"1 1
u23 ~ a23 =.L.. 2k uk3 ~ 21
(5/2)
ul3
(7)
+ 122 (!) u23 (?) = a23
(-3)
~ u23 = -20.5
k~!

2
132 "1 1 (3/2) (5) 1 (?) (-4.5) (-9) 1
~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 LY = B, para calcular el vector accesorio por sustitución
progresiva, así:

o
[2\ 1.5
1
3.7

El proceso de sustitución progresiva tiene dos partes:

a) Dado que la primera ecuación solo involucra a y 1 y siendo que 111 * O, debemos
iener:


y¡=-
1¡¡
b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

(i = 2, 3, ...... , N)

10
y¡=¡ = 10,

Y2- = 2
~ l y l _1_
[b- - L... l 2t tj
t=l 22

Y3 = [ b-
3 L l3tYt ] -¡1
t=l 33

Luego calculamos el vector X, de la relación: U .X= Y, por sustitución regresiva, así:

l ~ -:.5o -2~.5J(l~J = [-\ oj


0

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:

X
N- - -
YN
UNN

b) El segundo paso nos permitirá conocer el valor de las incógnitas restantes:

.x =
1
[
Y; - í:u;
N
1
X1
] 1
-; (1. = N-1 , ...... , 1)
t=i+l U¡¡

Finalmente aplicando una sustitución regresiva se obtiene:

14
Z =X3 = - - = 0.198
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 5.0000 7.0000


.0000 -4.5000 -20.5000
.0000 .0000 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:

AToT 1 ""fO . c J
= LlJ
j=l

Donde: 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 Requerimiento


nutritivo diario
unidades/Kg.
·-~-<- -~ ~-~--~-,-~·····,.·~-~::::~--~:.:~ ~~;.::.;..:;;, .'(~~--~ :~-- ~.;~--~~·.::"(_:: ~ ,~-~-~- ··--··-~--~--~-,.·o.·~--~--~-. ··~-~-,.~--,~- . . .,. ........... ~-~-........,..,.,.. ,..,. ......~.,.. ,. .., ..-.....,..~_,__
so· ..·.·.·
........ .. .. •. ..... ..

Cárbohidrátos·····.. · 15 35 < !3.0> •. ··· ... <23o··.··.·


Proteína < ~k··· .·.·.· · ·.·. 72 ·.· !)¿\ . 25 180
······ ···v·•·t· ·.·..·....··.· ·.·.· .· ·. .•·.·.2:···a· <·. ·. ·. ·.·. ·.· •.· . .·2·.a·.·.·.·.•.<· .· >1······2·.•.·.· ·•.•· · · · · •·. · .·.·. •. ·.· • .· .·.•·•.·. ·. ·•.·. · .·.· .·2.·a·
· .·•· •·. • ·
.· • .l. í:lmmas
Celulosa
.·. ·. : · · · · .·. . •.·.··•s···•··•··.··a···•.··.··•.·.·.·.·.···.···.··..·•.·.·..•·.••.· ..•·.·.·..•.·.···•·•••·.·····.···:: ···: 1 o
~()\ i 60
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

900
"'e
·e:;
Q)
u;
·¡;;
/ T,"C
20.J
37..7
R,Ohms
76~
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
i=l i=l
(4.2)

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
(4.3)
as N
-=O= ¿2(Y¡ -ax¡- b)(-1)
oh i=l

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=
i=l
IY¡
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
Ix¡IY¡
"'x.
¿
N
y
N. 1 1
- i=l i=l

i=l
a= ---------

fx;- (Ix·J2 i=1N1 (4.4b)


i=l
N N
IY¡ -aix¡
b = _i=_l_ _ _i_=l_ _
N

111
Para los datos mostrados en la figura (4.1), se encuentra que:
2
N=5;LT¡ =273.l;LT¡ =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)
9.orn---·-················-----·---·-------·--··--··························----------·-·························································
·•-·. o;1o 5.3o
0:20 5.30 .· 8.0
·. 0.30. 5.60 7.0
.0.40 .· .5.76 6.0
: 0,50 6.00 5.0
.· 0~60 ·. 6.32 4.0
·:.:. ·.·...· .

0.70 . 6.61 3.0


0.80 6.60 2.0
ü.·so • •· e.8o. ·.
•· J.OO · TOO 0.0
1.10·.·.· 6.20 0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60
120 •.. ·. 7.76 .-
1.30
·..... ·
7.60
. ·.:·
f4ó
....:·. 7.80
1:50 8.30

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 XEy
0.1 5.3
INGRESE PAR NRO. 2 XEy
0.2 5.3
INGRESE PAR NRO. 3 XEy
0.3 5.6
INGRESE PAR NRO. 4 XEy
0.4 5.76
INGRESE PAR NRO. 5 XEY
e. s 6
INGRESE PAR NRO. 6 XEy
0.6 6.32
II\JGRESE PAR NRO. 7 XEy
0.7 6.61
INGRESE PAR NRO. 8 XEy
0.8 6.6
INGRESE PAR NRO. 9 XEY
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 1.2 1.4 1.6

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'


tlTTC/* *)
W1"'\..1. • 1
I·L.-\ J

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
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/8a 0 , 8S/8a 1, BS/Ba 2 , ... ....... , 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 0 N +a 1 LX; +a 2 Ix~ + ......... +anix~= LY;


aoLX; +a¡Ix~ +azix~ + ......... +anixtl = Ix;Y;
a 0 Ix~ +a 1 LX~ +a 2 Ix~ + ......... +anix~+ = ¿x¡Y;
2

(4.. 9)

~aL..,
!'1 '"'
X;n +a¡.L.,X;
'"' n+l +az.L.,X;
'"' n+2 + ......... +an.L.."~;
'"' v 2n ~L..."~;
_ "\' V nyi

Al expresar tales ecuaciones en forma matricial se observa un patrón interesante en la


matriz de coeficientes.

N Ix; ¿x; Ix~ Ix~ ao IYi


LX; ¿x; ¿x; Ix~ Ixrl a¡ IxY1 1

¿x; ¿:x~ ~>t Ix~ L x.n+2


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.

-·.· )( 20.00
18.00
0.10 3.73
·. . .:.
_·-.·~-_ ·~-<-
16.00
·-.-0~20 4:4a···_-_-
......·.
14.00 -¡
0.30··.-. 6.40 i
12.00 l
'o.-48 6 60 10.00 ¡
()_~(} 7:00 . 8.00 1
O.~()i
....-
9.60 : 6.00 1
1
i
4.00 - -- (
().70 11.40 1i
200 .
o.so. t4.fo 0.00 +-------,-----,-------¡------r--------r---11
i

o.9b 15.60 0.00 0.20 0.40 0.60 0.80 1.00 1.20


t:óo 1á.áo•-·

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. 7 X E Y
0.7 11.4
INGRESE PAR NRO. 8 X E Y
0.8 14.1
INGRESE PAR NRO. 9 X E Y
0.9 15.6
INGRESE PAR NRO. 10 X E Y
1.0 18.3

RESULTADOS

SUMATORIAS

SUMA1 EX (I) 5.500000


SUMA2 EX(I)**2 3.850000
SUMA3 EX(I)**3 3.025000
SUMA4 EX(I)**4 2.533300
SUMAS EY(I) 97.130000
SUMA6 EY (I) *X (I) 66.673000
SUMA7 EY(I)*X(I)**2 52.597300

MATRIZ NORMAL

10.0000 5.5000 3.8500 97.1300


5.5000 3.8500 3.0250 66.67_30
3.8500 3.0250 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
14
7 .7000 11. 4115
12
8 .8000 13.4916
10
9 .9000 15.8088
8
10 1.0000 18. 3\5.2_9 6
4
2
o
o 0,2 0.4 0,6 o.~

118
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 6.0 RO 10.0
X

Figura (4.3). Grafica de la función y= 2x2 .

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

...
>-

1.00
.Q
-
0.50

0.00 +-------,-----,----,-------,-----.--------,---------,
02 0.4 0.6 o.a 1.~

log(x)

Figura (4.4). Grafica de la función potenciallinearizada.

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

ecuacion exponencial y=2.5 e**0.5x

400.0
350.0
300.0
250.0
> 200.0
150.0
100.0

50.0
... A---~---4>···-<$-···
~-.- _. ..
0.0
0.0 2.0 4.0 6.0 B.O 10.0 12.0
X

Figura (4.5). Grafica de la función y= 2.5e 0·5x.

124
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 8.0 10.0 12.0


X

Figura (4.6). Grafica de la función exponenciallinearizada.

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 500.000 ····-············..·······•············· ··················-····-·--·--·········--·--·-···············"'·······--·-··-····-·····-·-········--·····-··¡
450.000 ...... l
>ó.3oo·• 1s.221 ¡
400.000 .i
. a.5ba/\
.............. .
.:
··27.183 350.000 .... 1
1

l
•8.1ao ....•-·.-•· .· 40;552
. _., ·.·.·. ·
· 300.000
250.000 .... "·-· .. ..
... 1
.... -· .¡
¡
•. _-.•- _· ·_.· _.•._.• • . _·.•_
..•_.•_ ._•. . •. o.• ·s
_·_•.-•.-.·.o
···-·····_o•.· .·_·. ·.·. 60.496 WMOO 1
. 1 .10 0 90~250> 150.000 ....... ¡

·~·······
1.36()
.......... ·..
134.637
·. 1 :soó 200,855 '::::
0.000 +-----..,-------,------,-------ii
1
J.7óó 299.641 0.000 0.500 1.000 1.500 2.000
1~~6() 447:012

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 X y (LINEARIZADO Y AJUSTADO)
1 .1000 2.5026
2 .3000 2.9026
3 .5000 3.3026 7.00

4 .7000 3.7026 6.00


5 .9000 4.1026
5.00
6 1.1000 4. 5 02 6
7 1.3000 4. 902 6 4.00-

8 1.5000 5.3026 3.00


9 1. 7000 5. 7 02 6
2.00
10 1.9000 6.102 6
1.00

0.00
0.00 0.50 1.00 1.50 2.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( *, *)''
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
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 0.040 1 5.000


<ó.3ao···
0.400 0.320 !4.000
.•. 0.500·.···.·. 0~625< > 1
0.600 1.080 t 3.000 "'- .....
. .·. cr:too t.7'1p · 1

0.800
().9ob · ._- ._ $,64$ <
2.560
¡i 2..000

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 NRO. 1 X E y


0.1 0.005
INGRESE PAR NRO. 2 X E y
0.2 0.040
INGRESE PAR NRO. 3 X E Y
0.3 0.135
INGRESE PAR NRO. 4 X E Y
0.4 0.320
INGRESE PAR NRO. 5 X E y
0.5 0.625
INGRESE PAR NRO. 6 X E y
0.6 1.080
INGRESE PAR NRO. 7 X E y
0.7 1.715
INGRESE PAR NRO. 8 X E y
0.8 2.560
INGRESE PAR NRO. 9 X E y
0.9 3.645
INGRESE PAR NRO. 10 X E y
1.0 5.000

RESULTADOS

EXPONENTE N 3.0000
COEFICIENTE K 5.0000

N X Y (LINEARIZADO Y AJUSTADO)
1 -1.000 -2.301
2 -0.699 -1.398
3 -0.523 -0.870
· · ····- -o.so?
4
5
-0.398
-0.301
-0.495
-0.204
/'
6 -0.222 0.033 -1.200 -1.ooo -o.soo .. -o_~()() .. ·- :o_;O() ,/o~~r; o.oor~_ 000
................
7 -0.155 0.234 .,. -··---·-~-

8 -0.097 0.408
. ,.-------·-·- ·- -1;000 ·-'
9 -0.046 0.562
"10 0.000 o. 699 - ~1:500·""

-2.000 _:
,,
.,·"'

129
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
·"Be;.n;;·s:·" ·~veYoéi'did"....,. ü~m'Pa·······--· veYadiCigCi.,.,...
una medición con un radar se (s)· .·.·.·. · <ihfs) ·•· .· .·. ·..·.·..·.·.(s) (rtJ/~)········
cuenta con veinte (20) datos de su
velocidad respecto al tiempo. Se ú.56 15,80 5 50 28,80
requiere:
.. 17;0() . s:aa 31;Jo .·.··•·•
a) Calcular el módulo de la 20,70
aceleración y velocidad inicial. ···.······18,38
b) Predecir cuál será su velocidad
luego de una hora de haber
partido. >.··.i·.. 8,oq .· ·. ··. ·. 34,22
e) Realizar una gráfica en Excel de .. . ·... :·

los datos y la recta de ajuste. ·.. 8,50 34,01


2500 .··. ··.
·. ·'· ......

4,5Q 22,90
', 5,oo···.······· 28,60'··

b. El siguiente problema requiere de una regresión cuadrática por Mínimos


Cuadrados.

Las mediciones realizadas por un radar indican que


cierto móvil se desplaza con aceleración constante; el
•.•· . · (m) equipo ha logrado registrar la posición del objeto con
... ...... .
_
respecto al tiempo, tal como se muestra en la tabla
. 0,50 17,15 adjunta. Se requiere:
. t,oo ·.·.·. · . 26,85·····.
a) Calcular la posición de partida del objeto respecto al
•<1,50 ••... 20,15 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.
54,55 e) Realizar una gráfica en Excel de los datos y la curva
·. ·. .· .· ·•· ··· 7b.f5 ·. ·.· .· de ajuste .
.················i;¿8 \.··· 78,35
. 4,d6····.

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.

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
.· {),!58b. campo con respecto al tiempo, tal como se
muestra en la tabla adjunta. Se requiere:
·.·...·. ~.()o{) .•. ·. 493,810 ...
a) Calcular la relación matemática que relaciona
·.· 1.5bo 498,328 el módulo de campo magnético con el tiempo.
·.· . . 2,000 . . ·.· . .·.·492;440:•. • :.· .•.· . b) Predecir cuál será su magnitud luego de
transcurrida una hora.
•· 1.soo>·· 263,538 e) Realizar una gráfica en Excel de los datos y la
curva de ajuste.
··. · .·.·• > 28~,9$0•:
171,008

.·......5.500/',.
6.ooo··· ·
· ·.·.. ,;1o2~.ato···

-1068,713
·. · •·. . 8;ooo .·..·.·.·. ~15$6,oop .·
·•· · ·. ·····a.sqo·· -2350,343

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

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
t 112 = 0.693//c; mediante una linearización determine la actividad inicial Ao
192 22
y el tiempo de vida media en años de los isótopos 1r y Na, si
conocemos los siguientes datos de actividad y tiempo.

lsotopo 192 1r
......................... '"5""'""'" ............. .- .•,

A (x10 Bq) .· 115..183 5.333 >0.247 0.011 0.001


· ~·.· · · "'• .,, .-.•M· .,._,.•
,J."• ·."· ~ •.-• ., • ., • .-... :::-.:~·;,:..;:.~w-.-.~·..~ <·.:
·•· .-..,. .......... .-: -:~;:.-.~: ·.: ~:,::••.•~ ''"'" .,, .,,..,_._. .,..,.• ._•._•.,..~~,-:;: ~~:~...:.: :: ··'•· .:...:;:;: .;:~:~:..~:~,:: , .. , ..., .,. .,,._..•M•••·.w .,..... , .......... •'• ...,._. -<-•.-.., •• ,,._. ··••'" ,,.,

t (años) f 1.9 3.7 4.6


......... ·-~-- .....................................'"'"'";:·-...·.,:·.·.-~:·;::;<_":":·. :·:.:~:~ ........,..................., ........,.~_:,_, . :·~i";:_···:~.:~-~;-~. -:.· . <_·;:(·......................... ·····-----·--··· .................

134
lsotopo22 Na
,.,.,.•,,...._._._.._,.,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 1OON 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 5.0000 87.8800
1.1000 6~6550 .· .· 98;4150
. . .-.

·1.2000 8.6400 109.7600


. 1~3000
.
. 1ó.985o· .· .:....
. ·. . . . . .
•·.··· 121.9450.
1Aaoa · 13.7200 135.0000
1.5000 ·. 16.8150 .. 148.9550.
·1.6006 . ·.· .. 20.4800 163.8400
· .·.·. ·. t:ioób .· 24;p650 ·179.6850:
1:aoob ·· . ·.·..· · 29.1600 196.5200
.·.· ·. 34~2950 .• 3,§ooo ·•· · 214:3750 .
. ·. ·.·.

2.0000··. 40.0000 . 3:6000 233.2800


;_Ho()fu.··.:·.··.· 46:3o5o>·••····.···.· 3.7ooo·.·. ·... ·. 253:2650'.
2:2000····· .. · s3.24oo ·. ·. ·.··< á.aodo 274.3800
2,3000:•.•.·.:·.·.·.·
·..... 60.8350 .· · • ·• 3~9000 ·. 296:5950·.
69.1200 ·..· .· .·.·.·.·.·.· .·.·.·.· ...·4:0000·. ·.. ·
2.400Q . 320.0000
·.· 2~5ooo·•·•· ·. 78J2SO ..
•'·''·'~ ···--~ --~~- ..,.., ..... , .., ,_,,,,,:.,:. . ¿,_ ~:·.;, .., .,....... ,. ,... ·.. :....,.~ ..,.-:. ,., .......... .; ..,.

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 .

.. ·. .,·.:·:<·::.:: . .·:p·.·:·:a·e>·. ·..·. : .., ?';··:p··a::.:.·b·:··,··a:~·:·C·:::I:O;~··n·:· '-' . ,..,. ., ·•.· ·.·.·.·T:... ;,·.·e:.:.·.m·.·.·p····.·a·····.·~.;·. ::::·· ---~··· . . p.,
.:. <e ~·:·T:"~;,·:e·:·:··m::
.....•.. ·. ·' ........ ·.·.··
. ...a."'b"''l'a: :·C:· .:I:O·;··n--::·~ ·······~:··:.
.· ..· .• •. . (s) .... . · (~HI~ne~r'·•·. ·.·.· .. · <.(~)···:·.·.. ..<><· (~illbn~s)\ .
·• · o.bóó . ·. 2.5oo .··.·. · ·...· : '>< 1:600··.·. ·. . · ·. 3348.577
·.•·•:· •.·:.· .·.· •· · · · &too >••·•···.·.·..•·•·.•··. a~921·•: · ·.·.· . . . . . 1."7o6 >i . 5251$.14·
.· .· ·. ·,•· •·. h.ioó····· 6.149 ·.· . :. f.soo··· 8236.í70
.·.· :· · · >· \•. ·.··();~~h··i . . . . . . . · . .·.•. ~;644
.•· .· •· • · .· •· ·. .i .• • •. •. • t.~dd•·. . . ·.·: })·• ·. ··.·········••12~16\886 .
(l.-40(}····· .. :·.·. 15.124 2.()00 .•. 20257.710
>••/·.•·•. .· 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 >; 2c;;~-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 -X 1)(x -x 2)(x -x 3)(x -x 4) .... (x -xn)


(x 0 -x 1)(x 0 -xJ(x 0 -x 3)(x 0 -x 4) .... (x 0 -xn)

Esta función toma el valor de 1 para x = Xo y O para x = x1, x 2.••••. , Xn y su


generalización es:

lk (x) = (x- X1)(x- x 2)(x- x 3 )(~- x 4) .... (x- xn)


(xk -x 1)(xk -x 2)(xk -x 3 )~xk -x 4) .... (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 f 0 , f 1 , f 2 , ....... , 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/m 3 .
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- .. (5.7)
· (n + 1)!

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) (rtf\k-r+t


t=O
1
(5.11)

Las diferencias centrales, las cuales son simétricas con respecto a xk, las definimos
como:
(5.12)

Las diferencias centrales de orden superior:

2
o fk = fk+l - 2fk + fk-1
o3fk = fk+3/2- 3fk+ll2 + 3fk-112 - fk-3/2
4
o fk = fk+Z - 4fk+l + 6fk - 4fk-l + fk-2

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 = [of k+ 1,.7 + of k- 1'.7 1
2
(5.14)
1
= 2 [ fk+1 - fk-1]

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)
(3
= ~s(s -1)(s- 2)
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(~''·'''''"""'""'"'···········-

3
L~?f1 i1 f1 .!14f1
2
3
4
5

Ejemplo;

Construir la tabla de diferencias Progresiva y Regresiva del siguiente conjunto


de datos de intensidad luminosa en Candelas vs. Penetración en cm.

Tabla (5.3), Intensidad luminosa vs. Penetración.

(Cd)
Penetración 1 0.36
(cm)

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 [ 1]


INGRESO DE DATOS POR TECLADO [2]
SALIDA POR PANTALLA
-------
[3]
SAL~DA POR TMPRESORA [ 4J
SALIR DEL PROGRAMA [5]

INGRESE SU OPCION [1-5]


3

RESULTADOS TABLA DE DIFERENCIAS PROGRESIVA

N X DD O DD 1 DD 2 DD 3 DD 4 DD 5 DD 6

1 .000 5.000000 -.015000 .000000 .000001 -.000001 .001002 -.005002


2 . 060 4.985000 -.015000 .000000 .000000 .001000 -.004001
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.
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*) ' GRACIAS POR USAR EL PROGRAMA'
STOP
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', 13, '
DD',I3,' DD',I3,' DD',I3,' DD',I3)
60 FORI\1AT(' N DD' ,B,' DD' ,B,' DD' ,B,' DD',I3,'
DD' J I3 J ' DD' J I3 J ' DD' J I3) .
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, *)''
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. LT. 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,' DD',I3)
600 FORMAT(' N DD' ,I3,' 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
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 ( *, *) ' INGRESO DE DATOS POR ARCHIVO'
WRIH(* ,*)' =====================================
WRITE ( *, *) ,· INGRESE NOMBRE V RUTA DEL ARCHIVO DE'
WRITE ( * , * ) ' 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(*,*)' GRACIAS POR USAR EL PROGRAMA'
STOP
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,' DD',I3)
60 FORMAT(' N DD' ,!3,' DD' ,!3,' DD' ,!3,' DD',I3,'
DD' J I3 J ' DD' J I3 J ' DD' J I3)
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,*)''
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 FORMAT( ' N DD' , I3, ' 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)

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 (5.15)
me

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/pulg 2 .

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:

2525 1
F3 (2.5) = (0.02) + (2.5)(0.045- 0.02) + · ( · - ) (0.06- 2(0.045) + 0.02) +
2
252 1 25 2
· ( .5 - )( · - ) (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:

! AUTOR: LIC. JORGE LUIS GODIER AMBURGO

PROGRAM INTERPOLACION- FORMA- DE- NEWTON - ADELANTE

WRITE(*, *)''
WRITE(*,*)' INTERPOLACION FORMA DE NEWTON ADELANTE'
WRITE(*,*)' --------------------------------------
~~~~~~-~---~~---~------------------~~~
WRITE(*,*)' ESPACIAMIENTO UNIFORME ORDEN 3'
WRITE(*, *)''
WRITE(*,*)' INGRESE NUMERO DE PARES DE DATOS (MAX (4))'
WRITE(*,*)' ==========================================
5 READ(*,*)N
IF (N.GT.4) GOTO 5
113 WRITE(*,*)' INGRESE EL PUNTO A INTERPOLAR X'
READ(*,*)XP

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 1O de 1. 7, haciendo uso de la interpolación NGF,


para los siguientes datos tabulados:

Tabla (5.5), datos tabulados para Log 10

Usando la fórmula del polinomio para los puntos mostrados en la tabla (5.4),
con m= 2, es:

163
Ahora, como x 0 = 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:

4 4 1
F2 (1.7) = 0.0 + 1.4[0.17609] + 1. (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/in 2

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.)
··oasíficacióñ; 1o5.'Ra'clsih···---7 \······· dL............. ".....•. :. :,.:<.:....................
1úr < 2.39 •·· ·.·.·. 2;11<
L~.Li_ ) .......,3.25
2.98 ·..·.··.··•······.·3,2·
...........

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 i+l -- ~(X¡. + h)- --


11 f i -t-hfi 1+ !!~ f i 11+ ~ f i 11 1+ .~ 4 f-¡ 11 11 +........ .. {6, 16)
2 6 24

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


f0 = P +E (6.19)
h

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 (6.20)


o h
Dónde: a0 , a 1 y a 2 son tres coeficientes indeterminados.
Xo =O, x 1 =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 f 2 alrededor de Xo = O
en la ecuación (6.21) para obtener:

··Jl +---.2. ..l +F.


2 3 2 3
a f a [ f_ +hf-'+-L"+-L"'+
.f-'=____Q_Q_+_!_
u h h u u ·
2
h
-u
h
-u
6 · · ah [ L +2hL'+-L"+-L"'+
·u
4h
--u ·
8h
2 """"j·u ··
6 ·u ~ ~

(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 +a 1 +a 2 =O
0+a 1 +2a 2 =1
0+a1 +4a 2 =O

Al solucionarlo se tiene que: aa = -3/2, a 1 =2 y a2 =-1/2

Reemplazando estos valores en la ecuación (6.20), se obtiene:

'= _!_ [- ~
f oh 20f + 2f1 - _!_
22 f ] +E (6.24)

Dónde:

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 f 1 y f2 alrededor de XQ=O en la ecuación


anterior para obtener:

f o "= aofo
h"
~~f llfo 1+ hz f"
- + - 1 o+
h" L ~
o +
~fo 111+.. + ~[f
2 6
2
lJ
o+
2llfo 1+ 4hz f"
11 ~
o +
2 · 6
lJ
8h3 f o 111+..... + E

Factorizando y agrupando tenemos:

f 0 "=f0 [a 0 +a 1 +~ 2 ]~+f0 1 [Ü+a 1 +2a 2 ]_!_+f0 "[0+~+2a 2 ]+ ..... +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:
a 0 + a 1 -+- a 2 =Ü
O+a 1 +2a 2 =0
a1
0+- +2a 2 =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 (6.25)


h

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 f 1, f 2 y h alrededor de Xo=O en la ecuación


anterior para obtener:

f_ "'= ~+- 1
h3 f_
a f a [
+ hf_ '+-f- "+-L
h
"'+ + -
2
2 h
3
l a 1
1 f_ +?.hf_ ' + - L "+-L "'+
4h
2
8h
3
l
-u h3 -u · - u
2
-u •
6 -u · ""j · h3 L-u ·· ---u · 2 -u 6 -u •»nj
2 3
a ff o+ 3hfo
+-¡
3 ,+9h- f o , +27h
- - f o ,,+. ....] + E
3
h L 2 6

Factorizando y agrupando tenemos:

f 0 "'=f0 [a 0 +a 1 +a 2 +a 3 ]~+f0 '[0+a 1 +2a 2 +3a 3 ]~+f0 "[0+~+2a 2 +2_a 3 ]_!_


h h 2 2 h

En este caso se tienen cuatro coeficientes indeterminados, los cuales encontramos si


hacemos los coeficientes de f 0 , 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+-+2a 2 +-a 3 =0
2 2
1 4 9
0+-a 1 +-a 2 +-a 3 =1
6 3 2

Al solucionarlo se tiene que: ao = -1, a1 = 3, a2 = -3 y a3 = 1


Reemplazando estos valores, se obtiene:

(6.26)

171
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(*, *)' DERIVADA POR DESARROLLO DE TAYLOR'


WRITE(*,*)' 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 f(x)
0.398 0.408591
0.399 0.409671
0.400 0.410752
0.401 0.411834
0.402 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 -16t 3 ; 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:

b-a
I= r"• f(x)dx = -_-[f(a)+f(b)]+
h

;¿
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 )]

A2 =~[f(x 1 )+f(x 2 )]
2
A 3 = h [f(x 2 )+f(x 3 )]
2
,_
A 4 = ~[f(x 3 ) + f(b)]
2

Resolviendo para el área total se tiene:

Pero dado que: x 1 =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 (7.3)
-" 2 j=l

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 h 3 , siendo el resultado


ae la suma ae los errores eñ tOdos los iñtervalos.

178·
Ejemplo:

3
Calcular desde 7 hasta 9 la integral de la función: y= xsen (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 0 =a
X

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:

1
ds = -d(x-xk) ~ hds = dx
h
Por lo cual:

Resolviendo:

2 2 2 2 (s 2 -s) .
h 1
o o1 1
F2 (s)ds = hfk ds + (fk+l - fk )h sds + (fk+Z - 2fk+l + fk )h
o 1
o 2
ds

=h[2fk +2(fk+l -fk)+~(fk+2 -2fk+l +fk)J


=~[6fk
3
+6fk+l -6fk +fk+2 -2fk+l +fk]

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. x 1 y x 2, nos proporciona la Regla de Simpson
1/3, que podemos escribir como sigue:

b h
I=
l f(x)dx = -[f(a)
a 3
+ 4f(< x >) + f(b)] +E (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 = x 0 y b = x 6 , 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: x 1 =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:

h N-1 N-2
A 101 =-[f(a)+4
3
L
i=l
f(a+ih)+2 Lf(a+ jh)+f(b)]+E
j=2
(7.5)

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

u_
A-
r a
AreadeR
xC(x)dx .
'
y =
ryC(y)dy
=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:

2
Area= f
~2
(4-x 2 )dx=10.66666

Las coordenadas se calculan resolviendo:

- r~ x(4-x 2 )dx
X= =--...=ck_ _ __
o
---=0 y
- fy(2-JY )dy
y=- =
25.6 ,., .
=L4
r2 (4-x2)dx 10.66666 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 ( *, *) ' METODO DE SIMPSON UN TERCIO EXTENDIDO'
l•JRITE(* • *)' -------------------------------------
-----~=-=~=~====-=-~====-~-==~===~==g

WRITE ( *, *)' '


WRITE ( *, *) ' INGRESO DE DATOS'
WRITE ( * J *) '
WRITE (*,*)' INGRESE LOS LIMITES DE OPERACION [A,B]'
READ (*,*)A,B
WRITE (*,*)' NUMERO DE SUB INTERVALOS'
READ(*,*)N
WRITE (*,*)'
WRITE ( *, *)' '
WRITE ( *, *)' '
H=(B-A)/N
FA=F(A)
FB=F(B)
AREA1=13
AREA2=13
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 =-:- . x,_) ~ hds = dx
h d(x- 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 x 3, nos proporciona la Regla de Simpson 3/8, que
podemos escribir como sigue:

A= i f(x)dx = -h[f(a)
a
b 3
8
'
+ f(b) + 3f(a + h) + 3f(b- h)]

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 = x 9 , 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
A 1 = h[f(a) + 3f(x 1 ) + 3f(x 2 ) + f(x 3 )]
8
3
A 2 = -h[f(x 3 ) + 3f(x 4 ) + 3f(x 5 ) + f(x 6 )]
8
A3 =~h[f(x 6 )+3f(x 7 )+3f(x 8 )+f(b)]
8
Resolviendo para el área total se tiene:

Sabemos que: x 1 = 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


A 101 =-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) ey = 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
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 (*,*)' RESULTADOS'
~·JRITE 1*
\ , *'
1 1 -----------------------'

WRITE (*,*)' EL VALOR DE LA INTEGRAL'


WRITE (*, 12) AREAT
12 FORMAT (9X, F9. 6)
13 FORMAT (9X, ' H= ',F9.6)
WRITE (* r *) ' -----------------------'
WRITE (*,*)"
WRITE (*,*)"
WRITE (*,*)"
END

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 . . - . ~-
(7.8)
k=l

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


. . ·:·· .
.....-..
-~:,..,,.,.._, ._,,,.,_...... ,._,, ..-...... ~,..·· .
'"'~- ..-.-.·---····""·'''''"'~"""·"''''''' .......
1.0.·····
0.8889
0.5556
.
··. cr6s21·······.·····
..
·.···.
.. · .

·. 6.3479·.·. ·. ·.
0.5689
0.4786
0.2369

191
···~····•···~• ~-,--~-····.·.·.··o?i~é~§p··;~;:·5·:·?T7"9~4$7~'--············ . · . ·.

.•. ·. •.~9•· 6s•3· •· 21· ·•5·2•o0o0· · .


···•·••·•···•··•·••·•··•·••. . •.•...•.•.• • . . . •.• .••.. ••.•. .•.•.•.•.••.••..•.•. •. •.•. .•.•.·.•·.•.o
0 · ·.·.·. · .·.·.·.·.•·.•. .•....·. •·.• .· .·.•·.·•.....·. ···••··.•····•:······•·.·•·.···•·•·· ó.366á•·•·····.·. ·.i: ·.• ·. ·•.· :·.•·.··•.
()_1"713
a \ < ó.1aj4~ó\·•···.·. ·. . . . . · .·.· .· .· 0.3627
· •·• ·. . . . . . . . . . . . . q_g~s5~d·•.·•·······• \.·. ·. 0.3i37
·•·. ·.·. •· .·. . . . •.• • •. • &1~66"ló·•···········.i·.····.······· 0.??24
·•·• · ·• \ ().~~h~aª \·.·•·•· . 0.1213
···--:¡·a---··"'• : :.;o-.fh·a88~f·.···-~·-' ..............cf2sss·--········
\ < ·a>··_\4·. ·.·•3···.·.3··.·.·.3··.·.··9•..
·.- - . <-.:·.>>:-
·5·.·
.. •·· .. ·.•.··...·: .. :.·..•..··..·.·.. ·· 0.2693

. • >'•· 6.éi.s48s·,•··.
;;; o. . . .~.E3~.Ó6. i> ·.·
0.2191
...... :'·.,:_:.-.:.
_
3.•··.··•.
0.1495
. ().~739()7 . 0.0667
,. -~-. . _ _ _ . . _ _ - ~ -:- :~.-:.~-: . __ ::.L:·uL~·:,~-:·<~~~-;~~-,~- . ~_. ,;_·:~~--~-

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

2z -a~ b
X=---- (7.9)
b-a

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=----- (7 .1 O)
2

Por medio de esta transformación la integral se puede escribir como:

b fl 1b-a~
f~ f(z)dz = ~ f(z)(dz/dx)dx = -2- ~
7. w 1 f(z.k)
.
(7.11)

192
dz (b-a)
Dónde:
dx 2

Los valores de Zk se obtienen al sustituir x en la ecuación (7.11), por los puntos de


Gauss, es decir:
(b-a)xk +a+ b
ZJs: = 2
(7.12)

Ejemplo:

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 =Oy x = 1, ver figura (7 .9).

yl f(x.) = "2
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
. o6747
.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*
.,, L..\
... J *)''
1

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


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 =x 2
yy = 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) (8.1)
dx '·

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

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 y 1 sirve para aproximar f(x) en el punto p 1 = (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)

(8.10)

Yn =Y n-l +hf{xn_¡,y n-i)

El error local es proporcional a h 2 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 1O segundos con un total de 1O 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:

dy=+ Jxn+l f1Y,x,y)dx


J Yn+l
Yn Xn

xn+l
Yn+l=Yn+ JXn
f(x,y)dx

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 k+l
-y n *1.1.-v-v--
(\(\ - t>
'"'a
0/~ <' es 0/.0
rv ~ /-'(
Yn+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
ITERACION NRO. 5
1.000000 34.362740 .917075
ITERACION NRO. 6
1.000000 34.473040 .319955
ITERACION NRO. 7
1.000000 34.434440 .112111
ITERACION NRO. 8
1.000000 34.447950 . .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. 3
4.000000 21.535690 1.338697
ITERACION NRO. 4
4.000000 21.636590 .466360
ITERACION NRO. 5
4.000000 21.601270 .163493
ITERACION NRO. 6
4.000000 21.613640 . 057193
PUNTO NRO. 6
ITERACION NRO. 1
5.000000 20.488420 5.431644
ITERACION NRO. 2
5.000000 20.877920 l. 865615
ITERACION NRO. 3
5.000000 20.741590 . 657258
ITERACION NRO. 4
5.000000 20.789310 .229513
ITERACION NRO. 5
5.000000 20.772610 .080398
PUNTO NRO. 7
ITERACION NRO. 1
6.000000 20.225940 2.785383
ITERACION NRO. 2
6.000000 20.423120 .965474
ITERACION NRO. 3
6.000000 20.354100 . 3390 65
ITERACION NRO. 4
6.000000 20.378260 .118532
ITERACION NRO. 5
6.000000 20.369800 .041500
PUNTO NRO. 8
ITERA.CION NRO. 1
7.000000 20.107980 l. 344118
ITERACION NRO. 2
7.000000 20.202580 .468242
ITERACION NRO. 3
7.000000 20.169470 .164157
ITERACION NRO. 4
7.000000 20.181060 .057425
PUNTO NRO. 9
ITERACION NRO. 1
8.000000 20.058370 .553861
ITERACION NRO. 2
8.000000 20.097260 .193475
ITERACION NRO. 3
8.000000 20.083650 . o677 61
PUNTO NRO. 10
ITERACION NRO. 1
9.000000 20.020330 .384236
ITERACION NRO. 2
9.000000 20.047260 .134303
ITERACION NRO. 3
9.000000 20.037830 .047032
PUNTO NRO. 11

206
ITERACION NRO. 1
10.000000 20.008050 .195949
ITERACION NRO. 2
10.000000 20.021770 . 068542

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
.;;::;:::::::.=_=;::::;;::::;:::;:::::;:::::;:::;:::::;::::::;:::;::=;:::;;::::::;:::::;:::::;:;;;;;;;~;;:

Gráfica:
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 ( *,; *) ' RESUL TJmOS'
WRITE ( * J*) ' ======================
WRITE ( * J * ) ' X Y(X)'
WRITE{*J*)' ======================

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.Xn+l f¡( x,y)dx


Yn+l dY-+
f.
;.yn ~Xn

IXn
xn+l
Yn+I=Yn+ f(x,y)dx

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
Yn+l =Y n + 2[f(xn,Y n) + f(xn+l' <Y n+l >) (8.15)

Xn+l=Xn+h

En este caso el error local es proporcional a h2 y el error global proporcional a h3 .

Ejemplo:

Una resistencia de 5 .Q y un inductor de 1 Henrio se conectan en serie con un


génetaaot ae cotriéñte aitérñá E = 1ocos(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;
L di =E-Ri
dt
Reemplazando valores tenemos:

L=1H

V L..____.

R=5 Ohm
F"igu¡a (8.2). CiíCuito r:tL.

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 F (X)

.0000 .000000
.0667 . 53720.8
.1333 .859936
.2000 .975807
. 2667 .903230
.3333 . 672700
.4000 .325851
. 4667 -.087393
.5333 -.513061
. 60 00 -.898170
. 6667 -1.195901
. 7.333 -l. 3702.85
.8000 -l. 399818
. 8667 -l. 279581
.9333 -1.021609
1.0000 -.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:

dy=+J,rx•+l fi'\x,y
t )dx
Iy n+l
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 >)] (8.16)
J n+- n+-
2 2

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+-2 n+-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) Población en
Individuos

l. 000000 2200.000000
l. 450000 2409.737000
1.900000 2639.470000
2.350000 281é.ll.104000
2.800000 3166.728000
3.250000 3468.628000
3.700000 3799.311000
4.150000 4161.518000
4.600000 4558.257000
5.050000 4992.819000
5.500000 5468.810000
5.949999 5990.180000
6.399999 6561.254000
~.841é.lléJSJ§) 718~. 772000
7.299999 7871.924000
7.749999 8622.396000
8.199999 9444.413000
8.649999 10344.800000
9.099998 11331.020000
9.549998 12411.260000
9.999998 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 (h 5); 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 = 1O Voltios, C =2200 J..tF y R = 1OOQ. (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:

(.8.21)

Se efectúa el siguiente cambio de variables.

Yr =y
Y2 =y'
Y3 =y"
y 4 =y"' (8.22)

220
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
= \x,y,y1 ,y11 , ...... ,y n-1) = 1C'{\x,y1,yz,Y3, ........ ,yn )
a-y 1C'{
Y1 n =--
dxn

De modo general, un sistema de n ecuaciones de primer orden tendrá la forma:

1
Y 1 =f1(x,y1,yz, ........... ,yn)
u' - .f {""' Y1' Yz, ........... , Ynl\
Y 2 ·-.L2\A'
1
Y3 = f 3 (X, Y1' Y2 '· · · · · · · ·" ·' Yn ) (8.24)

1
Y n =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') (8.26)
dx 2 '"'"'

La ecuación (8.26) se convierte en dos ecuaciones diferenciales de primer orden


haciendo:
y'=z
(8.27)
i'=z'

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)] (8.30)
2- -
h
Yn+l =yn +-[zn +A]
2

222
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 1O 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:

Solución del sistema Masa-Resorte


5.5
5
4.5
4
3.5

-=
~
'-"'
3
2.5
2
--M.Euler
•o 1.5
:g.., .... - - ·M.R-K2
o 0.5 ........j
~ ¡
o
::-¡- . 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 1es 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 1O 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/m 3 (densidad del metal)


a= 5.67 x 10-8 w/m 2K4 (Constante de Stefan-Boltzmann)
S= 0.8 (Emisividad del metal)
Ta =Temperatura Ambiente en grados Kelvin
V= 0.001 m3 (Volumen del metal)
A= 0.25 m2 (Área Cie la süpeffieie aei metal)
e= 900 J/KgK (Calor especifico del metal)
2
he;;;; 30 J/m K (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/seg 2 es la constante del resorte y B = 1O 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 = 1O.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
.---------~'~-------.

E S2 1(s 1

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 1O segundos con un total de
30 puntos. Como datos adicionales se sabe que k/m =7200 pulg. 3/seg 2,
1-L = 0.1 y g = 360 pulg./seg 2.

230
1 - - - - - - - )( _ _ _ __,

A w
1
1 1 1 1
4 Pulg. 2 Pulg.

Figura (8.11). Atracción magnética.

f. Resuelva la ecuación diferencial siguiente:

dy =x+y+xy
dx

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 > 1O; 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<
VVf'\..Lit:; J
*)
$0LUCION ÉDO(gÉGUNDO ORDEN) RUNGE KUTTA 3ER ORDEN'
1

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


WRITE ( *, *) ' '
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:

o2u · Tg
---
o2 u
- (1)
ae w & 2

Donde: T, es la tensión aplicada a la cuerda.


W, es la densidad lineal de la cuerda.
G, es la gravedad.

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

1
uj+I
1
=u!1+1 - u!-
1
+u!I-1 (3)

237
Como Ax = 10 cm., T = 40000, g = 980 g/cm 2 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

También podría gustarte