2010-07-20 19 views

risposta

59

L'inverso di elevamento a potenza è il logaritmo. Se ab = c, quindi logac = b.

Si possono trovare le funzioni logaritmiche nel modulo Math, in particolare per log() base- e e log10() per la base-10.

Per avere un logaritmo in una diversa base (per esempio n), utilizzare la formula logNa = logxa/logxN, dove x è un valore, ad esempio e o 10.

Per caso specifico :

log216
= loge16/loge2
= Math.log(16)/Math.log(2)
= 4

Se si considera la spiegazione buona perché espande la vostra conoscenza, o il male perché hai odiato di alta matematica scolastica, è interamente a voi :-)

+4

Ah, grazie mille paxdiablo questa è stata una spiegazione molto buona, e sì hai ragione Ero solito odiarlo, ma ora posso vedere che mi sono perso molto a causa di questo, grazie! – zanona

+1

Ho fatto +1 quando ho imparato qualcosa sulla matematica! Quindi grazie. –

5
Math.log(16)/Math.log(2) 
4

Oppure, in alternativa, fare in questo modo:

>> 16**(1.0/2) 
=> 4.0 
+4

Questa è una coincidenza _totale a proposito :-) Applicandolo a 3^4 = 81, non è vero dire che 81^(1/3) è 4 (in realtà è circa 4.33). – paxdiablo

+5

@paxdiablo - non è una coincidenza, è matematica. Hai un errore nel tuo esempio. Per 3^4 = 81 dovrebbe essere 81^(1/4) che equivale a 3, non 81^(1/3). – maro

+2

@maro, hai fatto le sostituzioni in modo errato. Il modulo che hai usato sarebbe corretto se Jeremy avesse dichiarato 16^(1/4) = 2, e sarebbe matematicamente okay. Ma quello dato è corretto solo per coincidenza.È equivalente all'equazione (in) che ho menzionato nel mio primo commento. – paxdiablo

0

In realtà:

  • Maro è di fatto corretta, ma
  • Maro commento non supporta la risposta di Jeremy Murray-Wakefield, che non si applica alla domanda del PO.

Maro è quindi "giusto" da solo ma non come supporto per la risposta di Jeremy Murray-Wakefields, che di per sé non è tanto "sbagliata" quanto non è la risposta giusta alle domande dell'OP.

Spero che sia definitivo!

0

un modo più pulito per ottenere il logaritmo, a partire da Ruby 1.9.1, sarebbe quella di utilizzare Math.log2:

[1] pry(main)> Math.log2(2**4) 
=> 4.0