martedì 11 novembre 2014

Ancora su zero alla zero - seconda parte


Il post di ieri contiene un errore logico clamoroso!
Calcola 0^ε con ε sempre più piccolo. Ma non era quello che dovevo fare, ecco un esempio:

0^5 = 0 * 0 * 0 * 0 * 0 = 0

Ovvio! basta vedere che il primo termine dell'espressione è 0 e il risultato sarà 0. Senza bisogno di procedere con altri calcoli. Questo è quello che fanno gli interpreti di Python e calc (presumo, in realtà non lo so).
Se fossi stato più accorto visto che il risultato non era quello atteso, non avrei pubblicato, ci avrei pensato su --prima. Invece... --OK, vediamo se posso rimediare.

Modifico lo script Python in modo da fargli eseguire ε^ε e --magia!:

1
2
3
4
5
6
7
8
9
#!/usr/bin/python

#zero alla zero [float]

for e in range(21): # e = esponente
 den = 10**e     # denominatore
 eps = 1.0 / den # numero piccolissimo
 z = eps**eps    # eps a eps 
 print e, eps, z 

* 0^0 $ python qz.py
0 1.0 1.0
1 0.1 0.794328234724
2 0.01 0.954992586021
3 0.001 0.993116048421
4 0.0001 0.999079389984
5 1e-05 0.999884877372
6 1e-06 0.999986184585
7 1e-07 0.999998388192
8 1e-08 0.999999815793
9 1e-09 0.999999979277
10 1e-10 0.999999997697
11 1e-11 0.999999999747
12 1e-12 0.999999999972
13 1e-13 0.999999999997
14 1e-14 1.0
15 1e-15 1.0
16 1e-16 1.0
17 1e-17 1.0
18 1e-18 1.0
19 1e-19 1.0
20 1e-20 1.0
* 0^0 $


Non dimentichiamo però che il risultato di 1 vale solo per i 'puters; per i matematici il valore è indeterminato.

4 commenti:

  1. Avevo scritto un commento che è andato perso... Ci riprovo: così informatici e matematici vanno d'accordo, anche per un matematico epsilon alla epsilon fa 1 (ovvero: il limite per x che tende a zero+ di x^x è 1). Puoi però divertirti a modificare i due infinitesimi e vedere quello che succede. Per esempio, un radice di epsilon alla epsilon, o epsilon elevato a 1/ln(epsilon)...

    Sfida informatica: ce la fanno i programmi a scoprire il comportamento asintotico di una roba del tipo x^1000 / 1.1^x? Puoi ingrandire 1000 quanto vuoi, e rendere 1.1 vicino a 1 quanto vuoi...

    RispondiElimina
    Risposte
    1. Ci sono programmi e pacchetti per precisione arbitraria. Da parlarne in futuro.

      Elimina
    2. precisione arbitraria non intera? sono curioso di sapere quale programma ce la fa a calcolare quell'asintoto...

      Elimina
  2. Vale come soluzione informatica 2.0?
    http://www.wolframalpha.com/input/?i=lim%28x-%3E0%29+%28x^1000%2F1.1^x%29
    http://www.wolframalpha.com/input/?i=lim%28x-%3Einf%29+%28x^1000%2F1.1^x%29
    :)

    RispondiElimina