Método de Herón – Algoritmos antiguos

Publicado por Andrea Navarro en

Hero de Alejandría - Método de Herón

Método de Herón

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

Raíz cuadrada de 16

Error tolerado:0.0000001

Paso 1

Elegir un número arbitrario los más cercano al resultado posible

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

Si el valor tiene un error mayor a el tolerado repetir pasos 2 y 3

Error=36-(6.5*6.5)=6.5

Paso 2

36/6.5=5,538461538

Paso 3

Nueva aproximación= (5,538461538+6.5)/2=6,019230769

Error=36-(6,019230769*6,019230769)=0,23113905

Paso 2

36/6,019230769=5,980830671

Paso 3

Nueva aproximación=(5,980830671+6,019230769)/2=6,00003072

Error=36-(6,00003072*6,00003072)=0,000368641

Paso 2

36/6,00003072=5,99996928

Paso 3

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;
}

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