Accidente con Raíz Cuadrada en Python

Publicado por Gio M en 20:16
El otro día estaba medio dormido y no sabía muy bien ni qué estaba haciendo si tenia el Python (PyCharm) abierto o el messenger o la cónsola. El caso es que en estos casos uno no debería ponerse a programar, si no puede toparse con desastres. Por eso hay que dormir bien. Aquí va un ejemplo de una desastroza función donde se suponía que debía devolver la raíz cuadrada del número.




Esta función devuelve como resultado

1.0
1.5
1.25
1.375
1.4375
1.40625
1.421875
1.4140625
1.41796875
1.416015625
1.4150390625
1.41455078125
1.41430664062
1.41418457031
1.41424560547
1.41421508789
1.4141998291
1.4142074585
1.41421127319
1.41421318054
1.41421413422
1.41421365738
1.41421341896
1.41421353817
1.41421359777
1.41421356797
1.41421355307
1.41421356052
1.41421356425
1.41421356238
1.41421356145
1.41421356192
1.41421356215
1.41421356227
1.41421356233
1.41421356236
1.41421356237
1.41421356238
1.41421356237

Y luego sigue imprimiendo infinitamente el número 1.41421356237. Le puse esos prints para saber qué era lo que estaba pasando sobre el porqué no devolvía ningún resultado


Lo más curioso es que la raíz cuadrada de 2 es 1.4142135623730951

Sin embargo ambos resultados elevados al cuadrado nos dan 2.

El método usado por esta desastroza función, se llama método de bisección en donde se obtiene el resultado dividiendo recursivamente con varios parámetros y operaciones definidas.

El método aparece explicado en el libro de Introducción a la Programación con Scheme de Jose E. Helo Guzmán en las páginas de la 66 a la 70, y en internet se pueden encontrar varios resultados donde se explica el método, utilizando algún buscador (como google o yahoo).

Se nos explica además que existe un método más efectivo conocido como Cálculo de Raíces por Newton-Raphson, que encuentra la respuesta en menos iteraciones que por bisección.

Bueno, la práctica es tan sencilla como: Encuentre el error y corrija la función anterior, o haga una nueva función que le saque la raíz cuadrada a un número, pero eso sí, debe ser iterativa, y además, no deben analizarla a partir de la que fue hecha en scheme. Deben hacerla basándose solo en el análisis matemático, del método de Bisección.

0 Respuestas a 'Accidente con Raíz Cuadrada en Python'

Publicar un comentario