Portada arrow Algoritmos arrow Logaritmos, potencias y las misteriosas raices enésimas
Logaritmos, potencias y las misteriosas raices enésimas
viernes, 24 de agosto de 2007

Hoy en día, casi todos los lenguajes de programación con mínimas capacidades de cálculo disponen de una librería matemática que permite hallar logaritmos en cualquier base, potencias con cualquier exponente, y con menos frecuencia, raices n-ésimas.

Bueno... en caso de que no dispongamos de alguna de ellas, podemos resolver el problema con algunas equivalencias sencillas, utilizando sólo dos operaciones que sí suelen estar implementadas en casi todos los lenguales: el logaritmo natural o neperiano (es decir, en base e) y la potencia de e elevado a cualquier número real x (operación que en casi todos los lenguajes de programación se representa con un método o función llamado "exp"). El número e External link, es casi tan famoso como pi External link y es la base de los logaritmos naturales External link.

 

1) LOGARITMOS EN CUALQUIER BASE.

Los logaritmos naturales son muy útiles, pero a menudo es necesario utilizar otras bases. Son comunes, por ejemplo, la base 2 o la base 10.

Una propiedad de los logaritmos nos dice que el logaritmo de un número x en una base b puede ser calculado como el logaritmo en una base cualquiera de x partido por el logaritmo en esa misma base de b.

Es decir,

Siendo k una base cualquiera... la que tengamos más a mano.

C# sí dispone de un método en la clase Math para obtener logaritmos en cualquier base. No obstante, podemos construirlo utilizando la igualdad de arriba, escogiendo e como esa base cualquiera k.

//Logaritmo de x en base b
public static double 
LogaritmoEnCualquierBase(double x, double b) 
{
    return Math.Log(x) / Math.Log(b);
}
 

2) POTENCIAS DE CUALQUIER EXPONENTE

Aprovechando una curiosa propiedad de los logaritmos, podemos calcular una potencia de cualquier base x y cualquier exponente y... es decir, xy.

Si llamamos k al número x elevado a y.

k=xy

Podemos tomar logaritmos (en cualquier base, pero nos viene bien e) en ambas partes de la expresión y manipular un poco:

ln(k)=ln(xy)

ln(k)=ln(x)y

ln(k)=y · ln(x)

eln(k)=ey·ln(x)


y podemos concluir que

k=ey·ln(x)

Así pues, podemos construir una función que aproveche ésta última conclusion para obtener una potencia a partir de logaritmos y la exponenciación de e. Nuevamente, C# dispone de un método para hallar cualquier potencia en la clase Math... pero si tuvieramos que construir uno, podría ser así:

//Potencia de x elevado a y
public static double
Potencia(double x, double y)
{
   return Math.Exp(y * Math.Log(x));
}
 

3) RAICES N-ÉSIMAS

La raíz n-ésima de un número x puede ser expresada como x elevado a 1/n. Es decir:

En ese caso, y aprovechándonos de la equivalencia del apartado anterior de las potencias,

Así pues, para obtener la raíz n-ésima de un número x podemos construirnos un método o función de éste estilo:

 

//Raíz n-ésima de x
public static double
Raiz(double x, double n)
{
   return Math.Exp(Math.Log(x)/n);
}
 

 

 
←Artículo anterior

Categorías

Artículos relacionados

No se encontraron artículos relacionados

Suscríbete

RSS feed Sindicación RSS

(¿Qué es la sindicación RSS?)


Suscribir por e-mail

¿Dónde estoy?

Estás en La tecla de ESCAPE, un sitio web personal en el que nos gusta hablar de algoritmos, informática, tecnología, ciencia, ingeniería, internet... y cualquier tontería que se nos ocurra. El punto de vista de nuestros artículos técnicos suele ser muy básico, así que a menudo adoptamos grandes simplificaciones. (Más...-Términos de uso)