log – qual è la base?

Recentemente mi sono imbattuto in quella che è diventata una delle mie ossessioni preferite. Adesso vi conto, così la supero, forse. C’era da indovinare come inserire i dati in una formula di cui avevamo una descrizione incompleta e una tabella di (pochi) valori. Si può fare? proviamo in due, indipendentemente, e otteniamo una buona correlazione ma con parametri differenti. Dal confronto salta fuori che è colpa del logaritmo. Cioè di che base usare.

Io in questi casi mi rivolgo alla Wiki. Ottima, esauriente, come di solito.

Ho chiesto agli amici di Facebook:

Se sono Veri Matematici è il logaritmo naturale, quindi in base e. Se c’è gente relativamente normale (relativamente, perché chi parla di logaritmi dal salumiere?) è il logaritmo in base dieci (e in questo caso il logaritmo naturale si scrive ln come sulle calcolatrici. Nota che gli informatici non parlano di logaritmo in base 2, perché dicono semplicemente bit.

e

Già, si dice che chi usa log per indicare logaritmo naturale poi usi Log per indicare il logaritmo in base 10, ma io non l’ho mai visto fare (perché chi usa log al posto di ln in realtà usa solo log, le altre basi sono per gli ingegneri).

Ah! sì, ricordo, quando usavo le calcolatrici, come nell’immagine lassù. E prima ancora il Bruhns per topografia (alle superiori ho frequentato l’istituto per geometri, il Guarini a Torino).

Ma me l’ero scordato; tutti (quasi) i linguaggi di programmazione usano base e. Ma allora perché a scuola (tutte?) si usa base 10? Non credo ci sia ancora chi li usi per moltiplicazioni, divisioni, radici ed elevazione a potenza. O anche qui sono male informato?

A proposito dei linguaggi c’è chi è davvero smart, ecco Python:

math.log(x[, base])

With one argument, return the natural logarithm of x (to base e).
With two arguments, return the logarithm of x to the given base, calculated as log(x)/log(base).

$ py3
>>> import math
>>> math.log(10)
2.302585092994046
>>> math.log(100)
4.605170185988092
>>> math.log(10, 10)
1.0
>>> math.log(100, 10)
2.0
>>> math.log(math.exp(1))
1.0
>>> math.log(9, 3)
2.0
>>> math.log(27, 3)
3.0
>>> math.log(42, 4)
2.6961587113893803
>>> 4**_
42.000000000000014

Bravo Python ma non è il solo, ecco Racket:

(log z [b]) → number

  z : number
  b : number = (exp 1)

Returns the natural logarithm of z. The result is normally inexact, but it is exact 0 when z is an exact 1. When z is exact 0, exn:fail:contract:divide-by-zero exception is raised.

If b is provided, it serves as an alternative base. It is equivalent to (/ (log z) (log b)), but can potentially run faster. If b is exact 1, exn:fail:contract:divide-by-zero exception is raised.

$ rkt
Welcome to Racket v6.11.
> (log 10)
2.302585092994046
> (log 100)
4.605170185988092
> (log 10 10)
1.0
> (log 100 10)
2.0
> (log (exp 1))
1.0
> (log 9 3)
2.0
> (log 27 3)
3.0
> (log 42 4)
2.6961587113893803
> (define le (log 42 4.2))
> le
2.6044944060210176
> (expt 4.2 le)
42.0

Per tutti gli altri la regola è semplice log_b(z) = log(z) / log(b).

Ossessione superata 😁 E tutti i link che ho trovato li butto, fatto 😁

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Zar  Il 18 novembre 2018 alle 09:17

    Il logaritmo in base 10 lo usi se hai a che fare coi decibel, per esempio.

    • juhan  Il 19 novembre 2018 alle 10:17

      Rispondo con un intero post 😁

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: