Indução e recorrências
Indução simples e forte, sequências, recorrências lineares e equação característica.
Nesta página
Como provas uma afirmação sobre todos os naturais se não podes testá-los um a um? A indução responde: prova o primeiro caso e prova que cada caso implica o seguinte, como uma fila de dominós onde derrubar o primeiro deita todos abaixo. E quando um problema se define à custa de casos anteriores (fatorial, juros, algoritmos recursivos), uma relação de recorrência modela-o e a indução prova a solução.
Indução simples: os três passos
Para provar para todo o :
- Base: prova .
- Hipótese de indução: assume para um genérico.
- Passo indutivo: prova usando a hipótese.
Exemplo: para .
- Base (): o lado esquerdo é e o direito é . Verdadeiro.
- Hipótese: assume .
- Passo: . É .
Há uma leitura bonita em binário: o lado esquerdo é o número de bits todos a 1 (), e é ; somar 1 ao primeiro dá o segundo, o que confirma a igualdade.
O que pode correr mal
Três falhas típicas, todas elas pedidas em exercícios de “encontra o erro”:
- Base em falta ou falsa. Sem base, o passo indutivo prova apenas “se um dominó cai, o seguinte cai”, com a fila toda de pé. A indução sem base não prova nada.
- Usar a hipótese onde ela não chega. Na passagem de para tens de invocar explicitamente. Se a prova de nunca usa a hipótese, desconfia: ou a afirmação é trivial, ou há erro.
- Falsa indução. A “prova” de que todos os cavalos têm a mesma cor assume que dois conjuntos de cavalos com em comum partilham a cor, o que falha na passagem de 1 para 2 (a interseção é vazia). O passo tem de valer para todo o , incluindo o primeiro.
Indução forte
Na indução forte, a hipótese assume para todos os de até , e prova . É preciso quando o caso depende de vários anteriores, não só do imediato.
Exemplo: todo o inteiro é primo ou produto de primos.
- Base: é primo.
- Hipótese forte: assume que todos os inteiros de a fatorizam em primos.
- Passo: considera . Se é primo, está feito. Se é composto, com ; pela hipótese, e fatorizam em primos, e juntando as fatorizações obténs a de .
Com indução simples isto emperrava, porque e não são necessariamente . Sempre que a decomposição “salta para trás” mais de uma casa, usa a forte.
A indução (simples ou forte) equivale ao princípio da boa ordenação: todo o conjunto não vazio de naturais tem mínimo. Se falhasse algures, o conjunto dos contraexemplos teria um mínimo , e o passo indutivo aplicado a contradiria a minimalidade.
Sequências: três formas de definir
Uma sequência é uma função de um conjunto infinito de inteiros (normalmente ) para . Pode definir-se:
- Por lista: (exige adivinhar o padrão).
- Recursivamente: , (cada termo à custa dos anteriores).
- Por fórmula explícita: (cálculo direto).
As clássicas: a aritmética (, termo geral , soma ) e a geométrica (, termo geral , soma para ). Exemplo: é aritmética de razão ; é geométrica de razão .
O problema central: dada a definição recursiva, descobrir a explícita. É o que resolve a teoria das recorrências.
Relações de recorrência de primeira ordem
O modelo do empréstimo: capital em dívida no mês , juro mensal , prestação constante , capital inicial . Cada mês o capital rende juros e abate a prestação:
Resolve-se em duas partes: a solução da homogénea () mais uma solução particular constante ( com , logo ). A solução geral é , e dá :
Exemplo numérico: euros, TAN (logo ), meses. Impondo obtém-se euros. Podes confirmar a fórmula simulando mês a mês:
C, J, N = 3500.0, 0.26 / 12, 12
P = C * J * (1 + J) ** N / ((1 + J) ** N - 1)
print(f"prestacao = {P:.2f}")
saldo = C
for mes in range(1, N + 1):
saldo = (1 + J) * saldo - P
print(f"saldo final = {saldo:.6f}") # proximo de 0Dados de entrada
Recorrências lineares de segunda ordem
Uma recorrência linear homogénea de segunda ordem tem a forma . Tenta soluções da forma : substituindo e dividindo por obténs a equação característica . Se ela tem duas raízes distintas , a solução geral é ; as condições iniciais fixam .
Exemplo resolvido: com e .
- Equação característica: , raízes e .
- Solução geral: .
- dá ; dá . Resolvendo: , .
- Solução: .
Verifica por indução os primeiros termos: e a recorrência dá ; e . Confere.
Os casos especiais: raiz dupla (solução ) e termo independente não nulo (procura-se uma particular com a forma do termo independente, como no empréstimo). A sequência de Fibonacci, , , , resolve-se pelo mesmo método, com equação .
Indução prova correção de programas
A mesma técnica prova que um ciclo faz o que promete, via invariante. No cálculo iterativo do fatorial (fat acumulador, i contador), o invariante é: no fim de cada iteração, . Vale antes do ciclo (, ) e cada iteração preserva-o (). Quando o ciclo termina com , tens . Base e passo, outra vez: invariantes são indução disfarçada, e voltarão em AED e noutras cadeiras.