Está en la página 1de 15

Desarrollo y aplicación de los métodos cerrados y abiertos para el

curso de métodos numéricos

Felipe Cadavid Múnera, Juan J. Mejía González, Nicolás Buriticá Isaza.

1
Universidad de Antioquia, calle 67 No. 53 – 108 Medellín, Colombia
juan.mejiag1@udea.edu.co
felipe.cadavidm@udea.edu.co
nicolas.buritica@udea.edu.co

Resumen. En este artículo se presenta el diseño y desarrollo de un algoritmo


que permite hallar las raíces de una función cualquiera, utilizando diversos mé-
todos numéricos. El algoritmo se desarrolló en lenguaje Python utilizando di-
versas librerías que permitirían minimizar la extensión del código y facilitar el
proceso. El objetivo se centró en probar con éxito diversidad de métodos y
analizar los pros y contras de cada uno para establecer que método es más re-
comendable utilizar en cada caso.
Es de destacar la interacción integral de las distintas opciones incluidas en la
interfaz, la cual tiene la capacidad de aplicar los métodos tanto a funciones
algebraicas como a funciones trascendentes, así como una combinación de am-
bas; y determinar la continuidad de los intervalos dados por el usuario para la
función escogida y verificar los criterios necesarios para el funcionamiento
correcto de cada método, también tiene la capacidad de almacenar la informa-
ción del error para su posterior análisis.

Palabras clave: algoritmo, Python, métodos numéricos, interacción.

1 Introducción

Algunas veces las matemáticas convencionales se tornan demasiado complicadas como


para ser resueltas rápidamente por una persona, por esta razón la humanidad recurrió a
las computadoras y sus capacidades para resolver problemas cada vez más complicados
en poco tiempo. Previo al desarrollo de las computadoras, se desarrollaron los métodos
numéricos para facilitar la solución de problemas demasiado complicados, aunque aún
demandarían mucho tiempo y esfuerzo para desarrollarse; ahora estos métodos son un
factor clave en el ambiente digital.
2

Los métodos numéricos son técnicas mediante las que es posible formular proble-
mas matemáticos complicados utilizando operaciones aritméticas bastante menos com-
plejas, pero que requerían un volumen muy grande de ciclos, al integrar estos métodos
con la tecnología, se aprovechó el poder de procesamiento de las computadoras para
resolver este gran volumen de operaciones sencillas en un menor tiempo y sin invertir
tanto esfuerzo en ello (Chapra & Canale, 2007, pág. 3).

En este informe se aplican los métodos numéricos a un problema básico del álgebra
(Hallar las raíces de una ecuación), para llevar a cabo este cometido se emplearon los
siguientes métodos:

Método de Bisección: Consiste en dividir un intervalo en el que la función cambie de


signo en dos partes iguales y luego evaluar el punto medio, a medida que se realizan
ciclos de este método, la exactitud a la raíz aumentará cada vez más hasta obtener una
tolerancia determinada por el usuario (Figura 1).

Método de la Secante: Este es un método para aproximar la derivada utilizada en el


método de Newton-Raphson en funciones para las cuales su derivada es muy compleja
de calcular, para realizar dicha aproximación se utiliza una diferencia dividida (Figura
2).

Método de Interpolación: Consiste en unir con una línea recta dos puntos evaluados
de los extremos de un intervalo continuo en el que hay un cambio de signo, la intersec-
ción de esta recta con el eje de las abscisas será una mejor aproximación de la raíz con
cada ciclo completado (Figura 3).

Método de Newton-Raphson: Consiste en utilizar como semilla un número arbitrario


perteneciente al dominio del intervalo señalado, se evalúa en la función, luego se traza
una recta tangente a la curva a partir de una derivada de la función, y el número en que
corte en el eje de las abscisas sería la nueva semilla, y el proceso se repite hasta alcanzar
la tolerancia deseada. A medida que repita el ciclo, la recta tangente obtenida cortará
en un punto cada vez más cercano a la raíz (Figura 4).
3

Figura 1. Ilustración método de bisección Figura 2. Ilustración método de la secante

Figura 3. Ilustración método de interpo- Figura 4. Ilustración método de Newton-


lación Raphson

2 Metodología

2.1 Distribución del trabajo

Como primer paso, se estableció el trabajo correspondiente a cada uno de los miembros,
así se decidió que cada uno hacia un método y un voluntario que hiciera el restante,
luego después de esto se hicieron reuniones para integrar el código en un solo escrito.

2.2 Código

Para la implementación del código, primero se importan los módulos que se usarán,
estos se muestran en la figura 5
4

Figura 5. Módulos usados

A continuación, se muestra el paso a paso del código:

1. Preguntar por el método a usar


El usuario ingresa el método que desea usar

2. Definir la función
El usuario ingresa la función a la cual desea calcular las raíces

3. Graficar el grafico de la función que servirá como guía


Para guiarse visualmente en donde estarían las raíces, se muestra un gráfico
guía de la función

4. Verificar la continuidad del intervalo


Función que verifica la continuidad del intervalo

5. Definir la tolerancia
Función que define la tolerancia, esto es importante para definir la precisión
que se contara en la respuesta.

6. Definir la semilla (en caso de Newton).


En caso de que se haya seleccionado el método de newton, se pedirá el valor
de semilla.

7. Uso del método seleccionado


Con los 6 pasos anteriores, se tienen todos los parámetros necesarios para
cualquiera de los 4 métodos. Enviándole estos parámetros a la función del
método seleccionado, este empezara a calcular la raíz y en caso de que con-
verja, enviara los resultados a la función resultados, en caso contrario, mos-
trara en pantalla que no habrá convergido.

8. Mostrar resultados
5

Esta función mostrara en pantalla una tabla con la iteración, raíz, error abso-
luto y error relativo porcentual de cada una de las iteraciones. Además, mos-
trara el tiempo que ha tomado el método en converger y una gráfica de error
relativo porcentual.

2.3 Consideraciones de diseño

La consideración principal de nuestro programa es que se diseñara para el usuario, que


fuera una interfaz amigable con este y que realmente pudiera entregar un mensaje claro
de cómo usar el programa correctamente e incluso, cuando cometa errores que el pro-
grama le dé la oportunidad de volverlo a intentar sin que este se acabe súbitamente.

Otra consideración importante fue la reutilización de código, para esto, la idea prin-
cipal fue hacer uso funciones para cada cosa que se pudiera reutilizar tales como las
funciones, graficas, la definición de intervalos, mostrar el menú, mostrar los resultados,
etc.

Un ejemplo claro de esto es que cada uno de los 4 métodos definidos requiere de
una función, por lo tanto, se crea la función obtener-función () tal como se muestra en
la figura 6.

Figura 6. función obtener_funcion que se usara en varias partes del código.

Esta función posteriormente se usará en cada uno de los métodos y en otras funciones
como la gráfica guía, la función que verifica la continuidad del intervalo, la función de
los resultados, etc.

2.4 Pruebas y debugging

Para probar que el código funcionaba y era correcto, se seleccionaron varias funciones
de diferente naturaleza tales como algebraicas, racionales, trigonométricas, trascenden-
tales y se usaron en cada método para corroborar que el método convergía y no mos-
traba ningún error. Para comprobar que la raíz que el método arrojaba se usó la herra-
mienta GeoGebra, que además de corroborar la raíz, nos permitió comparar si la gráfica
guía era correcta. Por otro lado, para la comprobación de la raíz también se usaron
calculadoras y el cálculo a mano.
6

3 Resultados

Para evaluar el propósito principal del código se hicieron variadas pruebas con distintos
parámetros para asegurar el correcto funcionamiento del algoritmo y además verificar
que todos los resultados que se entregará fueran los adecuados. Los distintos métodos
se evaluaron con diferentes funciones; tanto algebraicas como trascendentales, y dife-
rentes tolerancias. Como ya se ha descrito anteriormente, luego de que el usuario haya
ingresado todos los datos solicitados por el programa y estos hayan verificado correc-
tamente, el código entrega la raíz de la función, con el error que el método implicó y el
número de iteraciones que a este le llevo. Además, una tabla donde se exponen los datos
significantes en cada iteración y finalmente una ilustración que grafica el número de
iteraciones versus el error relativo.

3.1 Funciones algebraicas


Se tomaron dos funciones algebraicas para verificar el correcto funcionamiento del al-
goritmo. Primeramente, una función de cuarto grado la cual su dominio son todos los
reales.

𝑥 4 − 5𝑥 3 + 2𝑥 – 7 (1)

Luego de que el usuario haya introducido la ecuación correctamente el programa


arroja la gráfica guía, útil para que al usuario le sea de mayor facilidad la elección de
los límites del intervalo con el que el programa trabaja.

Figura 7. Gráfica guía


7

Tabla 1. Información del proceso de solución de la ecuación 1 mediante el método de bisección con una tolerancia de
1e-03.

Posteriormente, con los límites establecidos, la continuidad de la función en aquel in-


tervalo verificada y con la tolerancia establecida, el algoritmo arroja, además de los
datos anteriormente mencionados, los datos obtenidos por cada iteración, útiles para
el entendimiento de otra de las gráficas que el programa expone finalmente tal como lo
es la ilustración del número de iteraciones versus el error relativo.

En la tabla 1 se presentan los datos con los que el algoritmo trabaja por cada iteración
para hallar la raíz de la ecuación 1 en el intervalo (0,10), tales como lo son los limites
del intervalo, el valor medio del intervalo, y el valor de la ecuación evaluada en aquel
valor medio. Además, el error absoluto y el error relativo en cada repetición. Podemos
observar en la figura 8 el comportamiento del error relativo con respecto a cada itera-
ción.
8

Figura 8. Gráfica error relativo- iteraciones para la ecuación 1 mediante el método de bi-
sección

Es apropiado también revisar las diferencias que existen cuando se pretende hallar la
misma raíz por métodos diferentes. En la tabla 2 se ilustran las disimilitudes cuando se
pretende hallar una raíz de la ecuación 1 en el intervalo (0,10) con una tolerancia de 1e-
03 por los distintos métodos que el algoritmo ofrece. En el caso del método de Newton,
se usó al 4 como semilla.

Newton-Raphson Bisección Interpolación Secante


Raíz 4.9760409 4.9760437 4.9760334 4.9760334
No. Iteraciones 5 16 239 239
Error absoluto 0.000442993 0.00038696 0.00088094 0.00088094
Tiempo de con- 0.000430107 0.01999306 0.24351382 0.30410861
vergencia (en
segundos)
Tabla 2. Comparación entre los métodos usados para la ecuación 1

Posteriormente se evaluó el algoritmo con una segunda función algebraica pero esta
vez de tipo racional en donde se veía comprometida la continuidad de la función.

𝑥 2 +3𝑥−6
(2)
𝑥−5
9

En general, el proceso es el mismo que el de la ecuación número 1, sin embargo,


después de que la gráfica guía se haya presentado, se ha debido tener un especifico
cuidado en el momento de la elección de los limites del intervalo ya que existía la po-
sibilidad de que la función no fuera continua en este.

Figura 9. Gráfica guía ecuación 2

La ecuación 2 presenta una discontinuidad cuando toma el valor de 5. Inicialmente se


escogieron los límites del intervalo (-2,7) de forma que al evaluar la continuidad se
presentara un error. Como era de esperarse el programa nos indica que ‘La función
(x**2 + 3*x - 6) /(x - 5) no es continua en el intervalo escogido’ y posteriormente
solicita ingresar otro intervalo. Con base en la gráfica guía se eligió el intervalo de (0,3)
donde se comprueba la continuidad de la función.
10

Tabla 3. Información del proceso de solución de la ecuación 2 mediante el método de Newton-


Raphson con una tolerancia de 1e-04 y una semilla de 2.

Tabla 3. Información del proceso de solución de la ecuación 2 mediante el método de Newton-Raphson con una
tolerancia de 1e-04 y una semilla de 2.

Figura 10.. Gráfica del error relativo vs iteraciones para la ecuación 2 mediante el método
de Newton-Raphson.

Luego de haber ingresado todos los datos solicitados por el programa; en este caso que
se escogió el método Newton-Raphson, los límites, la semilla y la tolerancia, el
11

algoritmo arroja una tabla (Tabla 3) con los datos que se obtuvieron en cada iteración
tales como la raíz, el error relativo y el error absoluto. Posteriormente, en la figura 10
se puede observar el comportamiento del error relativo cuando el numero de iteraciones
va aumentando.

Igual que con la ecuación 1, nos es muy útil notar las diferencias de la información
que arrojan los distintos métodos para la ecuación 2 y luego su posterior análisis. Todos
los métodos se evaluaron con los mismos parámetros; un intervalo (0,3) y una tolerancia
de 1e-4.

Newton-Raphson Bisección Interpolación Secante


Raíz 1.3722818 1.3722839 1.3722392 1.3722392
No. Iteraciones 6 15 19 19
Error absoluto 7.60526e-06 4.13659e-6 6.6557e-5 6.6557e-5
Tiempo de convergen- 0.000348567 0.02644610 0.0417144 0.0115540
cia (en segundos)
Tabla 4. Comparación entre los métodos usados para la ecuación 2

3.2 Funciones trascendentes

El proceso con las funciones trascendentes no difiere con el proceso ya descrito que se
lleva a cabo con las funciones algebraicas. De igual forma, el usuario se encarga de
introducir la ecuación, los limites del intervalo y la tolerancia deseada. Respecto a la
información que entrega el programa, es exactamente la misma que con las funciones
algebraicas.

Para evaluar el algoritmo se usó una ecuación trigonométrica dividida sobre un lo-
garitmo base 10, que igual que la ecuación 2, presenta discontinuidades en su dominio.

sin 𝑥
(3)
log 𝑥

Al observar la gráfica guía (Figura 11) se puede notar con facilidad que los valores
de los limites que definen el intervalo tienen que ser mayores que 0, pues el dominio
del logaritmo no cubre los números menores que 0, y luego cuando x toma el valor de
1, la función tiende a infinito, donde se halla una discontinuidad. Se verificó el funcio-
namiento del código tomando el intervalo (-2,1) y como es esperado el programo nos
12

advierte que ‘La función sin(x)/log(x) no es continua en el intervalo escogido.’ So-


licitando inmediatamente un nuevo par de limites donde el intervalo sea continuo.

Figura 11. Gráfica guía ecuación 3

Se escogió el intervalo (2,4) para chequear el funcionamiento del algoritmo en esta


función trascendente. Luego de verificada la continuidad en el intervalo e ingresada la
tolerancia, se probó el método de interpolación, el cual arrojó los resultados expuestos
en la tabla 5 y en la figura 12.

Tabla 5. Información del proceso de solución de la ecuación 3 mediante el método de inter-


polación con una tolerancia de 1e-05.

De la misma forma en la que se expusieron los datos en el método de bisección, se


muestra la información con la que trabajó el programa en cada iteración, tales como los
límites del intervalo, el valor medio del intervalo y tanto el error absoluto como relativo.
13

Igualmente, en la figura 12 se presenta la gráfica del comportamiento del error relativo


a medida que aumenta el número de iteraciones.

Fig. 12. Gráfica del error relativo vs iteraciones para la ecuación 3 mediante el método de
interpolación.

Para comparar los resultados que arrojan los otros métodos se usan los mismos pará-
metros que se usaron en el método de interpolación y los resultados se presentan en la
tabla 6. En el caso del método Newton-Raphson, se usó el numero 4 como semilla.

Newton-Raphson Bisección Interpolación Secante


Raíz 3.14159279 3.141601562 3.141595891 3.14158662
No. Iteraciones 6 11 9 12
Error absoluto 4.059793e-06 7.782524e-6 2.828229e-6 5.26982e-6
Tiempo de con- 0.00033807 0.015973567 0.016974210 0.01998114
vergencia (en se-
gundos)
Tabla 6. Comparación entre los métodos usados para la ecuación 3
14

4 Conclusiones y análisis

Se logro implementar los métodos abiertos y cerrados en un lenguaje de programación


como Python, aprendiendo así de forma practica la teoría básica de estos.

Se evidencia que los métodos abiertos a menudo convergen más rápido que los mé-
todos cerrados, esto es una ventaja si es importante para nosotros el tiempo. En el caso
del método de Newton-Raphson, la velocidad de convergencia es cuadrática y el error
está en términos del error anterior al cuadrado. Esta velocidad es deseable, sin embargo,
la necesidad de calcular la derivada en la aplicación del método es costoso computacio-
nalmente, además de que el método no da garantía de convergencia a una raíz cercana
a la conjetura inicial, mientras que los métodos cerrados, al encerrar la raíz dentro del
intervalo escogido, garantizan la convergencia.

Se resalta que en los métodos cerrados, siempre se ha alcanzado la convergencia


siempre que el intervalo es cercano a la raíz, de otro modo, ha habido ocasiones que no
sin 𝑥
se logra tal convergencia. En el caso del método de la secante con la función
log 𝑥
cuando se definió un intervalo (2,5) el método no alcanzo la convergencia, haciendo
notar la importancia de que el intervalo escogido sea cercano a la raíz, en este caso,
cercano a 𝜋.
Por otro lado, en el método abierto Newton-Raphson, es igual de importante plantar
la semilla cercana a la raíz para tener mas probabilidad de convergencia. Teniendo la
sin 𝑥
función si la semilla escogida es menor a 2, no se converge, el programa muestra
log 𝑥
un error de división por cero, lo que nos indica que la raíz está tomando valores hacia
la izquierda, acercándose a la asíntota, haciendo que el logaritmo sea cero y la función
que tiende a infinito.

5 Bibliografía

• Chapra, C. S., Canale, R. P. Métodos Numéricos Para Ingenieros.


McGraw-Hill. 5 ed. 2007.
• Burden, R. L., Faires, J. D. Análisis Numérico. Grupo Editorial Ibe-
roamérica. 7 ed. 2002.
• Terrence J. A. Métodos Numéricos aplicados a la Ingeniería. Limusa
Noriega Editores. 2000.
• Nieves, A., Domínguez, F. C. Métodos Numéricos aplicados a la In-
geniería. Grupo Editorial Patria. 1 ed. 2014.
• Cairó, O. Metodología de la programación. Alfaomega.3 ed. 2005.
15

6 Referencias
1. (Chapra & Canale, 2007, pág. 3)

También podría gustarte