Numero decimale periodico

Da Wikipedia, l'enciclopedia libera.

In matematica, un numero decimale periodico è un numero razionale che espresso in notazione decimale ha una stringa (finita) di cifre dopo la virgola che, da un certo punto in poi, si ripete all'infinito. Questa stringa ripetuta è detta periodo del numero. Molti numeri periodici hanno una stringa (finita) di cifre che non si ripete, prima che inizi il periodo, tale stringa non ripetuta è detta antiperiodo.

Dato che la rappresentazione decimale del numero è infinita esistono, principalmente, due convenzioni per scrivere il numero in forma compatta. Si pone una linea continua sopra le cifre del periodo oppure si racchiudono le cifre che si ripetono tra parentesi tonde. Ad esempio 23,48771=23,4(8771)=23,487718771877187718771…

Ogni numero decimale periodico, essendo una particolare rappresentazione di un numero razionale, può essere rappresentato mediante una frazione. Vale anche il viceversa, cioè che ogni numero razionale è periodico e quindi ogni frazione può essere espressa mediante un numero decimale periodico. Questo è immediato osservando che ogni numero con parte decimale finita in realtà è periodico di periodo 0. Ad esempio scrivendo 2,5=2,50=2,50000…

Descrizione e classificazione[modifica | modifica wikitesto]

I numeri decimali periodici si dividono in:

  • semplici se subito dopo la virgola è presente il periodo 8,5;
  • misti se dopo la virgola è presente l'antiperiodo 8,455.

Il numero periodico misto presenta tre elementi:

  • la parte intera, composta dalle cifre poste prima della virgola;
  • l'antiperiodo, la parte, composta da una o più cifre poste tra la virgola e il periodo.
  • il periodo, che è composto da una o più cifre che si ripetono all'infinito dopo la virgola;

Un esempio di numero periodico misto è:

8{,}43555555555555555\dots

in cui 8 è la parte intera, 5 il periodo e 43 l'antiperiodo.

Il periodo può essere composto da più cifre, per esempio: 8,435353535353… che si rappresenta con 8,435.

Frazione generatrice di un numero decimale periodico[modifica | modifica wikitesto]

Ogni numero periodico ha la propria frazione generatrice. Per calcolarla occorre:

  1. scrivere il numero senza virgola:
    \lfloor 8{,}\overline 5 \times 10 \rfloor = 85
  2. sottrarre dal numero tutto ciò che precede il periodo:
    85 - 8 = 77
  3. Dividere il risultato trovato per un numero formato da tanti 9 quante sono le cifre del periodo seguiti da tanti 0 per ogni eventuale cifra dell'antiperiodo:
    77 / 9 = 8{,}55555\dots

Lo stesso procedimento per il numero periodico 8,435 è:

8{,}43\overline5=(8435-843)/900

E per il numero periodico 8,435 è:

8,4\overline{35}=(8435-84)/990

In maniera analoga si può usare questo procedimento per trasformare i numeri decimali limitati:

8{,}4 = 8{,}4\overline0 = (840-84)/90

Dimostrazione[modifica | modifica wikitesto]

Tale metodo può essere dimostrato attraverso l'uso della serie geometrica: prendiamo un numero periodico semplice

x=0,\overline{a_1 \, a_2 \, a_3 \dots a_n}

dove gli  a_k sono cifre che vanno da 0 a 9 (almeno una deve essere diversa da 0) e  n è il periodo. Scegliamo di partire proprio con questo tipo di numero decimale perché poi sarà facile estendere l'idea al caso generale. Una riscrittura equivalente per  x è la seguente:


  x = \sum_{k = 0}^{+ \infty} \left( \frac{a_1}{10^{nk + 1}} + 
      \frac{a_2}{10^{nk + 2}} + \cdots + 
      \frac{a_n}{10^{nk + n}} \right).

Otteniamo, in questo modo, una somma di  n serie geometriche:


\begin{align}
  \sum_{k = 0}^{+ \infty} \frac{1}{10^{nk + 1}} & =
    \frac{1}{10} \, \frac{10^n}{10^{n} - 1} = \frac{10^{n-1}}{10^n - 1} \\
  \sum_{k = 0}^{+ \infty} \frac{1}{10^{nk + 2}} & =
    \frac{1}{10^2} \, \frac{10^n}{10^{n} - 1} = \frac{10^{n-2}}{10^n - 1} \\
  & \cdots \\
  \sum_{k = 0}^{+ \infty} \frac{1}{10^{nk + n}} & =
    \frac{1}{10^n} \, \frac{10^n}{10^{n} - 1} =
      \frac{1}{10^n - 1}
\end{align}

rendendo così possibile scrivere l'espressione frazionaria di  x come


  x = \frac{a_1 \, a_2 \dots a_n}{\underbrace{99 \dots 9}_{n \, \mathrm{ volte}}}

e il numero  a_1 \, a_2 \dots a_n risulta essere un numero intero di  n cifre, equivalente alla scrittura di  x senza la virgola decimale.

Il caso più generale è rappresentato dal numero


  y = c_1 \, c_2 \dots c_m \, , \; b_1 \, b_2 \dots b_p \,\overline{a_1 \, a_2 \dots a_n}

che può essere riscritto nel seguente modo:


\begin{align}
  y & = c_1 \, c_2 \dots c_m \; + \; b_1 \, b_2 \dots b_p \cdot 10^{-p} \; 
                                + \; 0,\,\overline{a_1 \, a_2 \dots a_n} \cdot 10^{-p} = \\
    & = c_1 \, c_2 \dots c_m \; + \; b_1 \, b_2 \dots b_p \cdot 10^{-p} \; + \; \frac{a_1 \, a_2 \dots a_n}{99 \dots 9 \cdot 10^p}.
\end{align}

Ricordando che  99 \dots 9 = 10^n - 1 , giungiamo a:


\begin{align}
  y & = \frac{c_1 \dots c_m \cdot 10^{n + p} + 
              b_1 \dots b_p \cdot 10^n +
              a_1 \dots a_n -
              c_1 \dots c_m \cdot 10^p -
              b_1 \dots b_p}
             {99 \dots 9 \cdot 10^p} = \\
    & = \frac{c_1 \dots c_m \, b_1 \dots b_p \, a_1 \dots a_n - c_1 \dots c_m \, b_1 \dots b_p}
             {99 \dots 9 \cdot 10^p}.
\end{align}

Quindi per ricostruire la frazione che genera il corrispondente numero periodico si riscrive quest'ultimo come numero intero e gli si sottrae il numero intero formato dalle cifre che si trovano prima della parte periodica. Il risultato di questa operazione va poi diviso per un numero intero composto da un numero di nove pari alla lunghezza del periodo e un numero di zeri pari al numero di cifre decimali che precedono l'inizio della parte periodica.

Dimostrazione alternativa[modifica | modifica wikitesto]

Una dimostrazione alternativa alla precedente, leggermente più informale, ma ugualmente valida, è la seguente.

Sia

x = c_1 \, c_2 \dots c_m \, , \; b_1 \, b_2 \dots b_p \,\overline{a_1 \, a_2 \dots a_n}

un generico numero decimale periodico. Moltiplicando per 10^p si toglie l'antiperiodo

10^p x = c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p \, , \; \overline{a_1 \, a_2 \dots a_n}

Moltiplicando per 10^n si porta "un periodo" prima della virgola, lasciando invariata la parte dopo la virgola

10^n 10^p x = c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p \, a_1 \, a_2 \dots a_n \, , \; \overline{a_1 \, a_2 \dots a_n}

Sottraendo membro a membro le ultime due uguaglianze si ha

(10^n -1) 10^p x = c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p \, a_1 \, a_2 \dots a_n -  c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p

dove le cifre dopo la virgola del numero al membro di destra sono ora tutte uguali a 0. Da questo segue che

 x = \frac{c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p \, a_1 \, a_2 \dots a_n -  c_1 \, c_2 \dots c_m \, b_1 \, b_2 \dots b_p}{(10^n -1) 10^p}

Ora ricordando che   10^n - 1 = \underbrace{99 \dots 9}_n , si ha la tesi.

Algoritmo[modifica | modifica wikitesto]

Il seguente programma in Python applica il metodo descritto a un numero in formato stringa (intero, decimale, o decimale con periodo tra parentesi nello stesso formato restituito dal programma nella sezione seguente) restituendo in una stringa la frazione equivalente non semplificata.

#restituisce la frazione generatrice (non semplicficata) nel caso di interi, decimali senza periodo e decimali con periodo indicato tra parentesi tonde
def frazione_generatrice(numer):
    #se il numero e' intero o senza periodo aggiungo il necessario    
    pos1 = numer.find('.')
    if pos1 == -1:
        numer += ".(0)"
        pos1 = numer.find(".")
    pos2 = numer.find('(')
    pos3 = numer.find(')')    
    if pos2 == -1 and pos3 == -1:
        numer += "(0)"
        pos2 = numer.find('(')
        pos3 = numer.find(')')    
    #controllo che le parentesi e il punto siano nell'ordine giusto
    if pos2 > pos1  and pos3 > pos2:
        #estraggo parte precedente il periodo
        prec = numer[0:pos1] + numer[pos1+1: pos2]    
        #conto cifre del periodo
        cifre = pos3 - pos2 -1        
        #elimino tutti i segni
        senzasegni = numer[0:pos1] + numer[pos1+1: pos2] + numer[pos2+1: pos3]
        #calcolo il numeratore    
        num = int(senzasegni)-int(prec)        
        den = ""
        #metto nel denominatore tanti nove quante sono le cifre del periodo
        for i in range(0, cifre):
            den += "9"
        #accodo al denominatore tanti zeri quante sono le cifre dell'antiperiodo
        for i in range(0, pos2-pos1-1):
            den += "0"
        #restituisco la frazione generatrice come stringa
        return str(num) + "/" + den

    else:
        return "formato non valido"

Numero decimale periodico da una frazione[modifica | modifica wikitesto]

Esempio di divisione decimale per trovare un numero periodico (43/42)

Per calcolare un numero periodico a partire da una frazione occorre eseguire una divisione decimale tra numeratore e denominatore, che si dovrà interrompere solo quando si otterrà come resto un valore già individuato in una delle divisioni precedenti: a questo punto infatti, calcolando le successive cifre decimali, non si farà altro che ripetere le stesse divisioni eseguite in precedenza fino ad ottenere di nuovo lo stesso resto, e questa sequenza di calcoli si ripeterà all'infinito. Si può quindi terminare la divisione decimale ed individuare le cifre del periodo e dell'antiperiodo in base alla posizione dei resti coincidenti.

Questo algoritmo può essere eseguito da un programma per dividere perfettamente (evitando quindi qualunque errore di approssimazione) due numeri qualsiasi in breve tempo. Un esempio della sua applicazione in Python:

 
def espansione_periodica(num,den):
    s = ''
    if num<0:
        s += '-'
        num = -num
    # aggiungiamo la rappresentazione della parte intera
    s += str(num // den)
    num = num % den
    # mettiamo la virgola se necessario:          
    if num>0:
        s += '.'
    # memorizziamo la sequenza di resti per individuare il periodo
    resti = [0]
    while num not in resti:
        resti.insert(1,num)
        num *= 10
        # aggiungiamo una cifra decimale
        s += str(num // den)
        num %= den
    periodo = resti.index(num)
    if periodo > 0:
        s = s[:-periodo]+'(%s)' % s[-periodo:]
    return s

Il caso del numero periodico 0,(9)[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi 0,999....
Il numero periodico 0,9999… ha lo stesso significato dell'unità

Per calcolare il numero periodico semplice 0{,}999999999\dots rappresentabile con 0{,}\bar9 occorre, come tutti i numeri periodici:

  1. scrivere il periodo 9
  2. scrivere la cifra 9 come dividendo, in quanto il periodo è formato da una sola cifra
  3. si ottiene 9/9 che è uguale a 1.

Una dimostrazione che l'allineamento decimale 0{,}\bar 9 rappresenta la stessa quantità indicata dal numero 1 è la seguente:

\begin{align}
    x &=0{,}\bar 9 \\
10x &= 9{,}\bar 9 \\
10x-x &=9{,}\bar9 - 0{,}\bar9 \\
 9x &=9\\
x &=1
\end{align}

Numeri periodici in altre basi[modifica | modifica wikitesto]

Numeri periodici compaiono anche se, al posto della base 10, consideriamo un'altra base di numerazione per rappresentare i numeri. In generale, in base a, i numeri che diventano periodici sono precisamente quelli che, se rappresentati mediante una frazione i cui termini siano coprimi, hanno un denominatore che contiene fattori primi che non dividono a.

Voci correlate[modifica | modifica wikitesto]

matematica Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica