Me preguntaba cómo obtener la inversa del poder en Ruby?¿Cuál es el reverso de Math Power (**) en Ruby?
2 ** 4 # => 16
y luego me gustaría obtener la inversa de la misma, y no estoy seguro de qué operador utilizar
16 ?? 2 # => 4
Me preguntaba cómo obtener la inversa del poder en Ruby?¿Cuál es el reverso de Math Power (**) en Ruby?
2 ** 4 # => 16
y luego me gustaría obtener la inversa de la misma, y no estoy seguro de qué operador utilizar
16 ?? 2 # => 4
La inversa de exponenciación es el logaritmo. Si es ab = c
, entonces logac = b
.
puede encontrar funciones logarítmicas en el módulo Math
, específicamente para log()
base-e y log10()
de base 10.
Para obtener un logaritmo en una base de diferentes(digamos n
), utilice la fórmula logNa = logxa/logxN
, donde x
es un valor como e o 10.
para su caso específico :
log216
= loge16/loge2
= Math.log(16)/Math.log(2)
= 4
Si se tiene en cuenta la explicación buena, ya que amplía sus conocimientos, o malo, ya que odiaba matemáticas en la escuela, es totalmente de usted :-)
Math.log(16)/Math.log(2)
O, alternativamente, hacerlo de esta manera:
>> 16**(1.0/2)
=> 4.0
Eso es una total coincidencia por cierto :-) Al aplicarlo a 3^4 = 81, no es cierto decir que 81^(1/3) es 4 (en realidad es aproximadamente 4.33). – paxdiablo
@paxdiablo - no es una coincidencia, es matemática. Tienes un error en tu ejemplo. Para 3^4 = 81 debería ser 81^(1/4) que es igual a 3, no 81^(1/3). – maro
@maro, has hecho las sustituciones incorrectamente. La forma que has usado sería correcta si Jeremy hubiera declarado 16^(1/4) = 2, y eso sería matemáticamente correcto. Pero el dado es correcto solo por coincidencia.Es equivalente a la ecuación (en) que mencioné en mi primer comentario. – paxdiablo
en realidad:
Maro es "correcto" por su cuenta, pero no como un apoyo a la respuesta Jeremy Murray-Wakefield, que en sí misma no es tanto "mal" no es la respuesta correcta a las preguntas del OP.
Espero que sea definitivo!
una forma más limpia para obtener el logaritmo, comenzando con Ruby 1.9.1, sería utilizar Math.log2
:
[1] pry(main)> Math.log2(2**4)
=> 4.0
Ha, muchas gracias paxdiablo fue una muy buena explicación, y sí que tienes razón Solía odiarlo, pero ahora puedo ver que me he perdido mucho por eso, ¡salud! – zanona
I + 1'ed como aprendí algo sobre Matemáticas! Así que gracias. –