Numero decimale periodico

numero razionale che ha una stringa finita di cifre dopo la virgola

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. Precisamente, l'antiperiodo è il gruppo di cifre decimali che si trovano fra la virgola e il periodo[1][2][3]; ma secondo alcuni autori l'antiperiodo include tutta la rappresentazione decimale prima del periodo.[4]

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

I numeri decimali periodici si dividono in:

  • semplici, se subito dopo la virgola è presente il periodo (per esempio: 8,5);
  • misti, se dopo la virgola è presente l'antiperiodo (per esempio: 8,435).

Il numero periodico misto presenta tre elementi:

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

Un esempio di numero periodico misto è:

 

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

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

  1. scrivere il numero senza virgola:
     
  2. Sottrarre dal numero tutto ciò che precede il periodo:
     
  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:
     

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

 

E per il numero periodico 8,435 è:

 

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

 

Dimostrazione modifica

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

 

dove gli   sono cifre che vanno da 0 a 9 (almeno una deve essere diversa da 0) e   è la lunghezza del 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   è la seguente:

 

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

 

rendendo così possibile scrivere l'espressione frazionaria di   come

 

e il numero   risulta essere un numero intero di   cifre, equivalente alla scrittura di   senza la virgola decimale.

Il caso più generale è rappresentato dal numero

 

che può essere riscritto nel seguente modo:

 

Ricordando che  , giungiamo a:

 

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.

Casi particolari modifica

Se si prova a convertire un numero decimale periodico semplice il cui periodo è 9 in frazione generatrice, dividendo il numeratore per il denominatore della frazione generatrice ottenuta si avrebbe come risultato un numero intero anziché il numero decimale periodico semplice di partenza. Ad esempio trasformando il numero periodico semplice 400,9 nella sua frazione generatrice si otterrebbe (4009-400)/9 = 3609/9 il cui risultato sarebbe 401 anziché 400,9. Questo perché in matematica, la notazione decimale periodica 0,999... denota il numero reale 1. In altre parole, le notazioni "0,999…" e "1" rappresentano lo stesso numero reale (per convincersene basta partire dall'uguaglianza 0,3=1/3: moltiplicando per 3 si ottiene 0,9=1).

Dimostrazione alternativa modifica

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

Sia

 

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

 

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

 

Sottraendo membro a membro le ultime due uguaglianze si ha

 

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

 

Ora ricordando che  , si ha la tesi.

Algoritmo modifica

Il seguente programma in Python 3 applica il metodo descritto ad uno o più numeri in formato stringa (intero, decimale, o decimale con periodo tra parentesi nello stesso formato restituito dal programma nella sezione seguente) restituendo in stringhe le frazioni equivalenti semplificate.

# Utilizzo::
#     python3 genera.py "8.43(5)"
#     1898/225
#
# Nota che digitare le virgolette previene che la shell
# interpreti le parentesi tonde come caratteri speciali,
# prima di passare il numero a Python.


import sys
import re
import math


def riduci_frazione(numeratore: int, denominatore: int) -> tuple[int, int]:
    """
    Riduce ai minimi termini la frazione indicata.
    """
    mcd = math.gcd(numeratore, denominatore)

    # La divisione intera previene che Python restituisca dei float
    # che hanno parte decimale zero.
    return numeratore // mcd, denominatore // mcd


def componenti(numero: str) -> tuple[str, str, str]:
    """Ritorna la parte intera, l'antiperiodo e il periodo.

    Supporta gli stessi formati di `funzione_generatrice()`.
    """
    cifre = '([0-9]+)'
    regex = f'{cifre}([.,]{cifre}(\\({cifre}\\))?)?'

    match = re.match(regex, numero)
    if not match:
        raise ValueError(f"Formato non valido: {numero}")

    return (
        match.group(1),
        match.group(3) or '0',
        match.group(5) or '0',
    )


def frazione_generatrice(numero: str) -> tuple[int, int]:
    """
    Restituisce numeratore e denominatore della frazione generatrice.
    Per semplificare la frazione restituita, usa `riduci_frazione()`.

    Gestisce numeri interi::
        3
    Numeri decimali senza periodo::
        3.4
        3,4
    Numeri decimali con periodo indicato tra parentesi tonde::
        3.4(5)
        3,4(5)
    """
    parte_intera, antiperiodo, periodo = componenti(numero)

    senza_punteggiatura = parte_intera + antiperiodo + periodo
    senza_periodo = parte_intera + antiperiodo

    numeratore = int(senza_punteggiatura) - int(senza_periodo)
    denominatore_nove = "9" * len(periodo)
    denominatore_zeri = "0" * len(antiperiodo)
    denominatore = int(denominatore_nove + denominatore_zeri)

    return numeratore, denominatore


for i in sys.argv[1:]:
    num_gen, den_gen = frazione_generatrice(i)
    num_rid, den_rid = riduci_frazione(num_gen, den_gen)
    formattata = f"{num_rid}/{den_rid}"
    print(formattata)

Numero decimale periodico da una frazione modifica

 
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

  Lo stesso argomento in dettaglio: 0,999....
 
Il numero periodico 0,9999… ha lo stesso significato dell'unità

Per calcolare il numero periodico semplice   rappresentabile con   occorre, come tutti i numeri periodici:

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

Una dimostrazione che l'allineamento decimale   rappresenta la stessa quantità indicata dal numero   è la seguente:

 

Numeri periodici in altre basi modifica

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.

Numeri periodici in base 2 modifica

In base 2 i numeri periodici non possono avere periodo di lunghezza 1. Infatti tale periodo potrebbe essere composto solo di cifre 0, e non ha senso parlare di zero periodico; oppure di cifre 1: in questo caso si replica il caso del 9 periodico nei numeri decimali, con il risultato che (in base 2) il numero 0,(1) = 1.

Note modifica

  1. ^ Federigo Enriques e Ugo Amaldi, Elementi di geometria, Edizioni Studio Tesi, 1992, ISBN 978-88-7692-340-1. URL consultato il 15 gennaio 2022.
  2. ^ Stefano Bertocchi e Loredana Mola, Matematica, Alpha Test, 1999, ISBN 978-88-483-0039-1. URL consultato il 15 gennaio 2022.
  3. ^ antiperiodo nell'Enciclopedia Treccani, su treccani.it. URL consultato il 15 gennaio 2022.
  4. ^ Ricerca | Garzanti Linguistica, su garzantilinguistica.it. URL consultato il 15 gennaio 2022.

Voci correlate modifica

Collegamenti esterni modifica

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