Método de Herón – Algoritmos antiguos

Publicado por Andrea Navarro en

Es este artículo de describirá el método de Herón y su aplicación en varios lenguajes.

Hero de Alejandría

El método de Herón es un algoritmo que permite obtener la raíz cuadrada de cualquier número. También es llamado el método Babilonio ya que originalmente  fue descubierto por este pueblo pero fue Herón de Alejandría el primero en dejar escrito el algoritmo en el siglo I D.C

Herón fue un matemático e ingeniero griego mayormente conocido por su fórmula para obtener la superficie un triángulo y por varios inventos entre los que se encuentran sistemas de acción automática.

Método de Herón – Algoritmo

Seleccionamos el número del cual se quiere obtener la raiz cuadrada y un nivel de error tolerado.

Raíz cuadrada de 16
Error tolerado:0.0000001

Paso 1

Aproximación = 4

Paso 2

Dividir el número por el número aproximado

36/4=9

Paso 3

Obtener la media entre los dos números

Nueva aproximación= (4+9)/2=6.5

Paso 4

Obtener el error

Error=36-(6.5*6.5)=6.5

Paso 5

Repetir los 2 y 3 hasta que el error sea aceptable

36/6.5=5,538461538
Nueva aproximación= (5,538461538+6.5)/2=6,019230769
Error=36-(6,019230769*6,019230769)=0,23113905

36/6,019230769=5,980830671
Nueva aproximación=(5,980830671+6,019230769)/2=6,00003072
Error=36-(6,00003072*6,00003072)=0,000368641

Nueva aproximación=(5,99996928+6,00003072)/2=6
Error=36-(6*6)=0;

Al final del algoritmo obtenemos una aproximación a la raíz cuadrada dentro del rango de error tolerado.

Pseudocódigo para PSeint

Proceso MetodoHeron
	numero=36;
	//1-Elegir un número arbitrario los más cercano al resultado posible
	a=4;
	//2-Dividir el número por el número aproximado
	b = numero/a;
	//3-Obtener la media entre los dos números
	a=(a+b)/2;
	//4-Si el valor tiene un error mayor a el esperado repetir pasos 2 y 3
	Mientras abs(numero- a*a) > 0.00000000001 Hacer
		Escribir a;
		//Repito pasos anteriores
		b=numero/a;
		a=(a+b)/2;
	FinMientras
	Escribir a;
FinProceso

Algoritmo para PHP

<?php
$numero=36;
//1-Elegir un número arbitrario los más cercano al resultado posible
$a=4;
//2-Dividir el número por el número aproximado
$b = $numero/$a;
//3-Obtener la media entre los dos números
$a=($a+$b)/2;
//4-Si el valor tiene un error mayor a el esperado repetir pasos 2 y 3
while(abs($numero- $a*$a) > 0.00000000001)
{
echo "$a <br/>";
//Repito pasos anteriores
$b=$numero/$a;
$a=($a+$b)/2;
}
echo "$a";

Algoritmo para C

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char** argv){
	double numero=36.0;

	//1-Elegir un número arbitrario los más cercano al resultado posible
	double a=4.0;

	//2-Dividir el número por el número aproximado
	double b = numero/a;

	//3-Obtener la media entre los dos números
	a=(a+b)/2.0;

	//4-Si el valor tiene un error mayor a el esperado repetir pasos 2 y 3
	while(fabs(numero - (a*a)) > 0.00000000001){
		printf("Valor: %.13f\n",a);

		//Repito pasos anteriores
		b=numero/a;
		a=(a+b)/2.0;
	}	
	printf("Valor: %.13f\n",a);
	return 0;
}

Algoritmo para Python

numero=36
#1-Elegir un número arbitrario los más cercano al resultado posible
a = 4
#2-Dividir el número por el número aproximado
b = numero/a
#3-Obtener la media entre los dos números
a=(a+b)/2
#4-Si el valor tiene un error mayor a el esperado repetir pasos 2 y 3
while abs(numero- (a*a)) > 0.00000000001:
	print(a)
	#Repetir pasos anteriores
	b=numero/a
	a=(a+b)/2
print(a)

Aunque hoy en día la mayoría de los lenguajes de programación tienen funciones para encontrar las raíces cuadradas este algoritmo demuestra cómo es posible resolver problemas matemáticos con una serie de operaciones aritméticas sencillas.


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora