Logaritmo exacto

Iniciado por jca1, 5 Octubre 2020, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

jca1

Buenas, quisiera saber si serviria de algo resolver un logaritmo exacto considerando que el resultado del mismo es de tamaño exponenecial. Por ejemplo el logaritmo en base 2 de 32 es 5. Pero para numeros extradamente grandes serviria para algo? Gracias

Serapis

A qué te refieres con que si 'serviría de algo'???.
Y a qué tamaño te refieres con 'números extremadamente grandes'???

Cualquier lenguaje que se precie dispone de una función 'log(x)' ... Habitualmente cuando se hacen cuestiones de combinatoria suelen necesitarse... y puntualmente en diversidad de algoritmos.

jca1

Me refiero a si tiene alguna utilidad encontrarle alguna solucion.
Como extremadamente grande me refiero por ej al logaritmo en base 2 de 2^(2^n). Es decir que el resultado de ese logaritmo es 2^n; para n creciente linealmente, por ej. n=100 la solucion es 2^100

Serapis

Claro que la tiene. Siempre que tengas que hacer determinados cálculos matemáticos, acaba uno recurriendo a ello. Ahora para número 'muy grandes', no suele ser tan frecuente excepto en el espacio teórico (en la práctica no suele necesitarse números 'grandes').

El logaritmo para cualquier base se define como:

LogBase(numero) = (Log(numero) / Log(base))

Es decir es una cuestón resuelta...

En definitiva... sigo sin acabar de entender adónde quieres ir...

kub0x

El logaritmo en base 2 está siempre presente en computación ya que trabajamos con bits. Es empleado en la estimación de las asimptoticas de ciertos métodos. También es empleado para el cálculo de la complejidad del espacio (space complexity). Y en un largo etc como dice el compañero NEBIRE.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


jca1

Mi pregunta seria por ejemplo calcular el logaritmo de base 2 con la libreria math de un numero que es por ejemplo 2^(2^(100)) lo haria eficientemente?

DarK_FirefoX

Cita de: jca1 en  6 Octubre 2020, 23:04 PM
Mi pregunta seria por ejemplo calcular el logaritmo de base 2 con la libreria math de un numero que es por ejemplo 2^(2^(100)) lo haria eficientemente?

De que lenguaje específicamente estás hablando, por ejemplo: en python

Código (python) [Seleccionar]

>>> import math
>>> a = math.log(math.pow(2, math.pow(2, 100)), base=2)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: math range error



Pero ya esto depende del valor máximo del tipo de dato float. Por ejemplo, haciendo

Código (python) [Seleccionar]

>>> math.pow(2, 1023)
8.98846567431158e+307


Ya elevándolo a la 1024 se obtiene OverflowError: math range error.

Esta claro y se puede verificar haciendo:

Código (python) [Seleccionar]

>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308


Ahora, creo que antes de ver si lo calcula eficiente o no, hay que ver si se puede representar!

Salu2s

Serapis

Cita de: jca1 en  6 Octubre 2020, 23:04 PM
Mi pregunta seria por ejemplo calcular el logaritmo de base 2 con la libreria math de un numero que es por ejemplo 2^(2^(100)) lo haria eficientemente?
Yo he hecho infinitas pruebas de rendimiento, para deliverar entre distitnas formas de hacer algo en un lenguaje, cual ofrece mejor rendimiento y sobretodo al hacer cambios en algoritmos, para saber si la alternativa de cambio ofrece mejor rendimiento... pero jamás he realizado una prueba de rendimiento para determinar la eficiencia de las funciones trigonométricas, principalmente porque si no se hace un uso intensivo de las mismas, no tiene influencia notable en el resultado final de un algoritmo.

Por ejemplo, las funcione seno y coseno si tienen un uso intensivo en el trazado 3D, luego si alguien dispone de una alternativa, puede interesarle hacer unas pruebas de rendimiento y usar así la más eficiente (la que viene nativamente incluída en el lenguaje o tu propia versión).