language | title | date |
---|---|---|
pt-br |
Indução matemática com fórmula de juros composto |
2017-12-02 |
Como um exercício de hipótese de indução, geralmente tenta-se encontrar a "fórmula fechada" correspondente a uma dada fórmula recursiva. Aqui vamos fazê-lo usando como exemplo o cálculo de juros composto.
Sejam,
-
$j$ : taxa de juros mensal e$J = 1 + j$ -
$I$ : valor inicial -
$A$ : aporte depositado mensalmente -
$m$ : quantidade de meses -
$F_m$ : total acumulado até o mês$m$
A fórmula recursiva é dada por:
Por exemplo, suponha uma taxa de juros
E no primeiro mês,
E no segundo mês,
E assim por diante a cada mês...
Dessa maneira, quando queremos calcular o total acumulado para um
Primeiramente, precisamos tentar enxergar um padrão nessas contas e propor uma hipótese. E então, testamos nossa hipótese para verificar se ela é de fato válida.
Vamos calcular até
Observando atentamente e rescrevendo
Podemos propor a seguinte hipótese
Mas note que o fator que
E para
Assim, nossa hipótese fica:
Para que nossa hipótese seja de fato válida, precisamos:
- Testá-la para o caso base da função recursiva (
$F_0$ ); - E supondo que
$H_m$ vale para$m = k$ , testá-la para$m = k + 1$ .
Para
Para
Portanto válida.
Supondo que
Para
Para
Somando e subtraindo
E agora manipulando algebricamente, temos:
Portanto válida.
Por indução matemática, temos que a fórmula fechada para a fórmula recursiva
de juros composto apresentada, substituindo
<form lang="pt" style="font-family: monospace;">
<p>
j =
<input
oninput="calc();"
id="j"
type="number"
step="0.0001"
style="width: 8em;"
value="0.005"
/>
<small
>Obs: <span id="j_raw">0,005</span> =
<span id="j_percent">0,5%</span></small
><br />
I =
<input
oninput="calc();"
id="I"
type="number"
step="0.01"
style="width: 8em;"
value="100"
/><br />
A =
<input
oninput="calc();"
id="A"
type="number"
step="0.01"
style="width: 8em;"
value="200"
/><br />
m =
<input
oninput="calc();"
id="m"
type="number"
step="1"
min="0"
style="width: 4em;"
value="2"
/>
</p>
<p>F_m = <span id="Fm"></span></p>
</form>
<script>
// F calcula o total acumulado durante m meses com uma taxa de juros mensal j,
// um valor inicial I e um aporte mensal A.
function F(j, I, A, m) {
if (j == 0) {
// Ou o tanto próximo de zero quanto queira.
return A * m + I;
}
var Jm = Math.pow(1 + j, m);
return (A * (Jm - 1)) / j + Jm * I;
}
function calc() {
// Pega valores.
var j = document.getElementById("j").valueAsNumber;
var I = document.getElementById("I").valueAsNumber;
var A = document.getElementById("A").valueAsNumber;
var m = document.getElementById("m").valueAsNumber;
// Valida taxa de juros mensal.
if (isNaN(j)) {
j = 0;
}
// Valida valor inicial.
if (isNaN(I)) {
I = 0;
}
// Valida aporte mensal.
if (isNaN(A)) {
A = 0;
}
// Valida meses.
if (isNaN(m)) {
m = 0;
} else if (m < 0) {
m = 0;
document.getElementById("m").value = "0";
}
// Mostra rótulo com observação sobre porcentagem.
var j_percent = j * 100;
document.getElementById("j_raw").innerHTML = j.toLocaleString("pt", {
maximumFractionDigits: 4,
});
document.getElementById("j_percent").innerHTML =
j_percent.toLocaleString("pt", { maximumFractionDigits: 2 }) + "%";
// Mostra resultado da F()
var Fm = F(j, I, A, m).toLocaleString("pt", { maximumFractionDigits: 4 });
document.getElementById("Fm").innerHTML = Fm;
}
calc();
</script>