Diferencia entre revisiones de «Cursos/E M T/3º Informática - Matemáticas»
Contenido eliminado Contenido añadido
Sin resumen de edición |
|||
Línea 49:
raíz cuadrada exacta
== Algoritmo
[[Archivo:Sqrt babylonian algorithm.png|thumb|El algoritmo babilónico aproxima un [[rectángulo]] a [[cuadrado]].]]
El [[algoritmo]] babilónico<ref>No hay una evidencia directa de cómo los Babilónicos calculaban raíces cuadradas aunque hay conjeturas informadas. ([[Raíz cuadrada de 2#Notas]] da un resumen y referencias.)</ref> se centra en el hecho de que cada lado de un [[cuadrado]] es la raíz cuadrada del [[área]]. Fue usado durante muchos años para calcular raíces cuadradas a mano debido a su gran eficacia y rapidez. Para calcular una raíz, dibuje un [[rectángulo]] cuya [[área]] sea el [[Número real|número]] al que se le busca raíz y luego aproxime la base y la altura del rectángulo hasta formar o por lo menos aproximar un cuadrado.
El algoritmo se puede enunciar sin el uso de dibujos como sigue:
Raíz(x):
# Escoja dos números <math>b</math> y <math>h</math> tales que <math>bh=x</math>
# Si <math>h\approx b</math> vaya al paso 6, si no, vaya al paso 3
# Asigne <math>b\leftarrow\frac{h+b}{2}</math>
# Asigne <math>h\leftarrow\frac{x}{b}</math>
# Vaya al paso 2
# Escriba "<math>\sqrt x \approx b</math>"
[[Archivo:AlgoritmoRaiz.png|thumb|200px|[[Diagrama de flujo]] del algoritmo babilónico.]]
Este algoritmo aproxima la raíz cuadrada de cualquier número real tanto como se desee. Es claro que no se necesita conocer el valor de <math>h</math>, puesto que depende directamente de <math>x</math> y que el área del rectángulo siempre se aproxima a la raíz cuadrada de <math>x</math> sin importar el valor de <math>b</math> siempre y cuando <math>b>0</math>. De esta manera surge la [[función recursiva]]
:<math>f_0(x)=x\,</math>
:<math>f_n(x)=\frac{1}{2}\left(\frac{x}{f_{n-1}(x)}+f_{n-1}(x)\right)</math>
de manera tal que <math>n</math> es la <math>n</math>-ésima aproximación a <math>\sqrt x</math>. Esto implica que
:<math>f_\infty(x)=\sqrt{x}</math>
Puesto que algunas raíces son [[Número irracional|números irracionales]] es necesario definir qué tanto es "aproximadamente". Afortunadamente nadie es capaz de escribir un número con una infinita cantidad de dígitos, por lo que el umbral de aproximación se limita a la cantidad de dígitos que se es capaz de escribir. Entonces podemos definir que el algoritmo termine en el momento que la última aproximación es la misma que la anterior (es decir, ya no se puede aproximar más).
=== Descripción formal ===
De manera formal, se expresa el algoritmo babilónico usando [[pseudocódigo]] de la siguiente manera:
:{| width=61.8% border = 1
|
'''función''' <math>\mathrm{raiz}(x)\,</math>
:<math>r\leftarrow x</math>
:<math>t\leftarrow 0</math>
:'''mientras <math>t\neq r</math>'''
::<math>t\leftarrow r</math>
::<math>r\leftarrow \frac 1 2\left(\frac x r + r\right)</math>
:'''devolver''' <math>r\,</math>
|}
donde <math>x\leftarrow y</math> significa "sustituya el valor de <math>x</math> por del de <math>y</math>", y '''devolver''' expresa el resultado del algoritmo y su terminación.
|