14  A expansão dos racionais na base \(b\)

Comecemos por um resultado conhecido de cálculo.

Lema 14.1 Se \(|q| <1\), então a série \[ \sum_{n=0}^\infty q^n \] é convergente e a sua soma é igual a \[ \frac{1}{1-q}. \]

Comprovação. EExercício

No bloco anterior, estudamos expansões de números naturais na base \(b\). Escrevemos naturais na base \(b\) como \([a_na_{n-1}\cdots a_1a_0]_b\). Quando \(b=10\), escrevemos o mesmo número como \([a_na_{n-1}\cdots a_1a_0]\) (sem explicitamente indicar a base).

Uma fração decimal (ou expansão decimal) não negativa é uma sequência (possivelmente infinita) de algarismos na forma \([a_na_{n-1}\cdots a_1a_0,a_{-1}a_{-2}\cdots]\) onde \(a_{i}\in\{0,\ldots,9\}\). O número representado pela fração é \[\begin{align*} a&=\sum_{k=n}^{-\infty}a_k10^k=\sum_{k=0}^n a_k10^k+\sum_{k=1}^{\infty}a_{-k}10^{-k}\\&= [a_na_{n-1}\cdots a_1a_0]+\sum_{k=1}^{\infty}a_{-k}10^{-k}. \end{align*}\] A expressão acima mostra que cada fração decimal não negativa pode ser escrita como a soma de um número natural e uma fração decimal na forma \([0,a_{-1}a_{-2}\cdots]\). Como os números naturais foram tratados na unidade anterior, aqui vamos focar apenas frações na forma \([0,a_{-1}a_{-2}\cdots]\). Uma fração natural desta forma pode ser finita ou infinita. Quando a sequência de algarismos depois da vírgula é infinita, então a fração é infinita; caso contrário a fração é finita. Uma fração finita pode ser escrita na forma \([0,a_{-1}a_{-2}\cdots a_{-n}]\). Note que uma fração finita pode ser considerada infinita adicionando uma sequência infinita de zeros e assim nós frequentemente assumimos que as frações analizadas são infinitas.

Lema 14.2 Para qualquer sequência (possivelmente infinita) de algarismos, a expansão \([0,a_{1}a_{2}\cdots]\) representa um número real entre zero e um

Comprovação. PPrecisa provar que a série \[ \sum_{k=1}^\infty a_{k}10^{-k} \] é convergente e converge a um número entre zero e um. Como \(0\leq a_i\leq 9\) para todo \(i\), obtemos que \[ \sum_{k=1}^\infty a_{k}10^{-k}\leq\sum_{k=1}^\infty 9\cdot 10^{-k}=\frac 9{10}\sum_{k=0}^\infty 10^{-k}=\frac 9{10}\frac 1{1-1/10}=1. \] Como os termos da série na última linha são não negativas, a conta acima mostra que a série que corresponde à expansão \([0,a_{1}a_{2}\cdots]\) é convergente e converge a um número não negativo menor ou igual a \(1\)

Note que o mesmo número real pode ser escrito de maneiras distintas como fração decimal. Por exemplo, \(1,00\cdots=0,99\cdots\).

Considere a fração decimal \([0,a_{1}a_{2}\cdots]\). Esta fração chama-se periódica se existem \(m\geq 0\) e \(r\geq 1\) tais que \(a_{r+k}=a_k\) para todo \(k> m\). A sequência \([a_1\cdots a_m]\) chama-se pré-período, enquanto a sequência \([a_{m+1}\cdots a_{m+r}]\) chama-se período da fração.

Uma fração periódica com pré-período \([a_1\cdots a_m]\) e período \([a_{m+1}\cdots a_{m+r}]\) tem a forma \[ [0,a_1\cdots a_ma_{m+1}\cdots a_{m+r}a_{m+1}\cdots a_{m+r}\cdots]; \] ou seja, a fração começa com a sequência \([a_1\cdots a_m]\) e depois a sequência \([a_{m+1}\cdots a_{m+r}]\) está se repetindo. Neste caso escrevemos a fração como \[ [0,a_1\cdots a_m\overline{a_{m+1}\cdots a_{m+r}}]. \] Por exemplo \[ 1/44=0,02272727\cdots=0,02\overline{27}. \]

Teorema 14.1 As seguintes afirmações são verdadeiras.

  • Toda expansão decimal periódica representa um número racional.
  • Se \(a/b\) é um número racional tal que \(0<a<b\), então sua expansão decimal é periódica

Comprovação.

  1. Considere a expansão decimal \[ [0,a_1a_2\cdots]=[0,a_1a_2\cdots a_m\overline{a_{m+1}\cdots a_{m+r}}] \] e seja \(a\) o número representado por esta expansão. Pelo lema anterior, \(0\leq a\leq 1\). Sejam \(u\) e \(v\) os números naturais \[ u=[a_1a_2\cdots a_m]\quad\mbox{e}\quad v=[a_{m+1}\cdots a_{m+r}]. \] Tem-se que \[\begin{align*} a&=\sum_{k=1}^\infty a_k10^{-k}=\frac u{10^{m}}+\sum_{k=1}^\infty \frac{v}{10^{m+kr}}\\&=\frac u{10^{m}}+\frac{v}{10^{m+r}}\sum_{k=0}^\infty \frac{1}{10^{kr}}=\frac{u}{10^{m}}+\frac{v}{10^{m+r}}\frac{1}{1-10^{-r}}. \end{align*}\] Ora note apenas que o número no lado direito da última equação é um número racional.

  2. Assuma que \(0< a<b\) e considere o racional \(q=a/b\). Vamos determinar a sequência de algarismos para \(q\). Seja \(a_0=a\), \(q_0=0\) e escreva, usando o Teorema de Divisão de Euclides, \[ 10a_0=q_1b+a_1\quad\mbox{onde}\quad 0\leq a_1<b. \] Assuma que as sequências \(a_0,\ldots,a_k\) e \(q_0,\ldots,q_k\) são determinadas, e defina \(q_{k+1}\) e \(a_{k+1}\) pela equação \[ 10a_k=q_{k+1}b+a_{k+1}\quad\mbox{onde}\quad 0\leq a_{k+1}<b \] usando o Teorema de Divisão de Euclides.

Afirmamos que a expansão decimal de \(a/b\) é \([0,q_1q_2\cdots]\). Para isso nós precisamos verificar que \[ \sum_{k=1}^\infty q_k10^{-k}\to \frac ab. \] De fato, nós provaremos que \[ 10^k a=\sum_{i=1}^k10^{k-i}q_ib+a_k \] Para \(k=1\), esta afirmação segue da expressão acima para \(10a_0=10a\). Assuma que esta igualdade é verdadeira para algum \(k\). Então \[\begin{align*} 10^{k+1}a&=10\cdot 10^ka=10\cdot\left(\sum_{i=1}^k10^{k-i}q_ib+a_k\right) \\&=\sum_{i=1}^{k}10^{k+1-i}q_ib+10a_k\\&= \sum_{i=1}^{k}10^{k+1-i}q_ib+q_{k+1}b+a_{k+1}\\&=\sum_{i=1}^{k+1}10^{k+1-i}q_ib+a_{k+1}. \end{align*}\] Então a afirmação é verdadeira para todo \(k\). Segue, para todo \(k\geq 1\), da mesma afirmação que \[ \frac ab=\sum_{i=1}^k10^{-i}q_i+a_k/(10^kb)=[0,q_1\cdots q_k]+\frac{a_k}{10^kb}; \] e assim \[ \frac ab-[0,q_1\cdots q_k]=\frac{a_k}{10^kb}<\frac{b}{10^kb}=10^{-k}. \] Isso implica que a sequência \([0,q_1\cdots q_k]\) converge para \(a/b\) quando \(k\to\infty\) e então a expansão do número racional \(a/b\) é \([0,q_1q_2\cdots]\).

Finalmente precisamos provar que a expansão \([0,q_1q_2\cdots]\) de \(a/b\) é periódica. Para isso, note que a sequência \(a_1,a_2,\ldots\) é uma sequência de números naturais com \(a_i\in\{0,\ldots,b-1\}\) para todo \(i\). Então vai existir \(m\) e \(r\) tal que \(a_{m+r}=a_m\). Logo \[ q_{m+r+1}b+a_{m+r+1}=10a_{m+r}=10a_m=q_{m+1}b+a_{m+1}. \] Obtemos pela unicidade na Teorema de Divisão de Euclides que \(q_{m+r+1}=q_{m+1}\) e \(a_{m+r+1}=a_{m+1}\). Similarmente, \(q_{m+r+2}=q_{m+2}\) e \(a_{m+r+2}=a_{m+2}\) e mais geralmente \[ q_{k+r}=q_{k}\quad e \quad a_{k+r}=a_{k}. \] para todo \(k\geq m+1\). Ou seja, a expansão do número \(a/b\) é periódoca.

Exemplo 14.1 A demonstração do resultado anterior dá um algoritmo para calcular a expansão de um número natural \(a/b\) onde \(0<a<b\). Considere por exemplo o racional \(1/54\). Seguindo a demonstração do teorema para \(a=1\) e \(b=54\), fazemos a seguinte conta.\[\begin{align*} 10a=10=0\cdot 54+10\quad &\Rightarrow\quad q_1=0\mbox{ e }a_1=10\\ 10a_1=100=1\cdot 54+46\quad &\Rightarrow\quad q_2=1\mbox{ e }a_2=46\\ 10a_2=460=8\cdot 54+28\quad &\Rightarrow\quad q_3=8\mbox{ e }a_3=28\\ 10a_3=280=5\cdot 54+10\quad &\Rightarrow\quad q_4=5\mbox{ e }a_4=10\\ 10a_4=100=1\cdot 54+46\quad &\Rightarrow\quad q_5=1\mbox{ e }a_5=46 \end{align*}\] Observamos que \(a_4=a_1\) como foi previsto na demonstração do teorema e a computação vai se repetir a partir deste ponto. Obtemos então que \[ \frac 1{54}=0,0\overline{185}. \]

Obtemos também como consequência do teorema anterior que existem números irracionais no intervalo \([0,1]\). Por exemplo, considere o número \[ a=0,1010010001000010000010000001\cdots. \] Pelo lema anterior, \(a\) é um número real, mas a sua expansão decimal não é periódoca, portanto este número não é racional.

Exatamente como a expansão dos números naturais pode ser calculada em qualquer base \(d\geq 2\), a expansão dos números racionais também pode ser calculada em bases \(d\) tal que \(d\geq 2\). Os resultados em uma base arbitrária são muito similares aos resultados na base \(d=10\) (caso decimal) e estes detalhes são omitidos. No entanto recomendamos que o leitor traduza os resultados acima para uma base \(d\neq 10\).

14.0.1 Computação com Python

Vamos implementar o algoritmo obtido na demonstração do Teorema na linguagem Python. De fato, nós implementamos o algoritmo em qualquer base (não apenas na base decimal), pois a diferença é muito pequena. Pretendemos escrever uma função que toma números naturais \(a\), \(b\), \(d\) tais que \(0<a<b\) e \(d\geq 2\) e devolve o pré-período e o período da expansão de \(a/b\) na base \(d\).

def ExpansaoDecimal( a, b, d ):
    
    # a é menor que b
    assert a<b
    
    #inicializamos as listas dos dígitos e restos
    digitos, restos = [], [a]
    
    while True:
        # calculamos o seguinte dígito a colocamos na lista
        digitos.append( d*a//b )
        # calculamos o próximo valor de a
        a = d*a % b
        # verificamos se a já apareceu entre os restos
        if a in restos:
            # se sim, ind será o índice de a na lista restos
            ind = restos.index( a )
            # devolvemos a pré-período e o período
            return digitos[0:ind], digitos[ind:len(digitos)]
            
        restos.append(a)

Podemos usar esta função para verificar a conta no Exemplo.

>>> ExpansaoDecimal( 1, 54, 10 )
>>> ([0], [1, 8, 5])

Obtemos o mesmo resultado, nomeadamente que o pré-período de \(1/54\) é \([0]\) e o período é \([185]\).