Numero decimale periodico
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, prima che inizi il periodo, una stringa (finita) di cifre che non si ripete: 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
modificaI 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
modificaOgni numero periodico ha la propria frazione generatrice. Per calcolarla occorre:
- scrivere il numero senza virgola:
- Sottrarre dal numero tutto ciò che precede il periodo:
- 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
modificaTale 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
modificaSe 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
modificaUna 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
modificaIl 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
modificaPer 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)
modificaPer calcolare il numero periodico semplice rappresentabile con occorre, come tutti i numeri periodici:
- scrivere il periodo
- scrivere la cifra 9 come dividendo, in quanto il periodo è formato da una sola cifra;
- 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
modificaNumeri 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
modificaIn 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- ^ Federigo Enriques e Ugo Amaldi, Elementi di geometria, Edizioni Studio Tesi, 1992, ISBN 978-88-7692-340-1. URL consultato il 15 gennaio 2022.
- ^ Stefano Bertocchi e Loredana Mola, Matematica, Alpha Test, 1999, ISBN 978-88-483-0039-1. URL consultato il 15 gennaio 2022.
- ^ antiperiodo nell'Enciclopedia Treccani, su treccani.it. URL consultato il 15 gennaio 2022.
- ^ Ricerca | Garzanti Linguistica, su garzantilinguistica.it. URL consultato il 15 gennaio 2022.
Voci correlate
modificaCollegamenti esterni
modifica- (EN) Eric W. Weisstein, Numero decimale periodico, su MathWorld, Wolfram Research.