Carregando WebR...
# ============================================ # Juros Compostos, Perpetuidades e Anuidades # Secao 18.9 # ============================================ K0 <- 1000 # capital inicial i <- 0.12 # taxa nominal anual (12%) cat("====== JUROS COMPOSTOS ======\n") cat(sprintf("Capital inicial: R$ %s\n", format(K0, big.mark="."))) cat(sprintf("Taxa nominal anual: %.0f%%\n\n", i*100)) # --- Frequencia de capitalizacao --- cat("--- Efeito da frequencia de capitalizacao (1 ano) ---\n") cat(sprintf("%-15s %-5s %-12s %-10s\n", "Frequencia", "m", "K(1)", "Taxa efet.")) cat(strrep("-", 45), "\n") freqs <- c("Anual"=1, "Semestral"=2, "Trimestral"=4, "Mensal"=12, "Diaria"=365) for (nm in names(freqs)) { m <- freqs[nm] K1 <- K0 * (1 + i/m)^m r_ef <- (1 + i/m)^m - 1 cat(sprintf("%-15s %-5d %-12.2f %-10.4f\n", nm, m, K1, r_ef)) } K_cont <- K0 * exp(i) cat(sprintf("%-15s %-5s %-12.2f %-10.4f\n", "Continua", "inf", K_cont, exp(i)-1)) # --- Poder dos juros compostos no tempo --- cat("\n--- Crescimento ao longo do tempo (r=12% a.a.) ---\n") cat(sprintf("%-6s %-12s %-12s %-12s\n", "Anos", "Simples", "Composto", "Continuo")) cat(strrep("-", 46), "\n") anos <- c(1, 5, 10, 20, 30, 50) for (t in anos) { simples <- K0 * (1 + i*t) composto <- K0 * (1 + i)^t continuo <- K0 * exp(i*t) cat(sprintf("%-6d %-12s %-12s %-12s\n", t, format(round(simples), big.mark="."), format(round(composto), big.mark="."), format(round(continuo), big.mark="."))) } # --- Perpetuidades e anuidades --- cat("\n--- Perpetuidades e anuidades ---\n") F <- 100 # fluxo anual r <- 0.05 cat(sprintf("Fluxo anual: R$ %.0f Taxa: %.0f%%\n\n", F, r*100)) VP_perp <- F / r cat(sprintf("Perpetuidade (F/r): R$ %s\n", format(VP_perp, big.mark="."))) for (n in c(5, 10, 20, 30, 50)) { VP_anuid <- F * (1 - (1+r)^(-n)) / r pct <- VP_anuid / VP_perp * 100 cat(sprintf("Anuidade %2d anos: R$ %7.1f (%4.1f%% da perpetuidade)\n", n, VP_anuid, pct)) } # Perpetuidade crescente g <- 0.02 VP_cresc <- F / (r - g) cat(sprintf("\nPerpetuidade crescente (g=%.0f%%): R$ %s\n", g*100, format(VP_cresc, big.mark="."))) # --- Grafico --- par(mfrow = c(1, 2), mar = c(4.5, 4.5, 3, 1), bg = "#f8f9fa") # Painel 1: Juros simples vs compostos t_seq <- 0:50 plot(t_seq, K0*(1+i)^t_seq / 1000, type = "l", lwd = 3, col = "#dc3545", xlab = "Anos", ylab = "Capital (R$ mil)", main = "Simples vs. Composto vs. Continuo", ylim = c(0, K0*exp(i*50)/1000)) lines(t_seq, K0*(1+i*t_seq)/1000, lwd = 3, col = "#0d6efd", lty = 2) lines(t_seq, K0*exp(i*t_seq)/1000, lwd = 2, col = "#6f42c1", lty = 3) legend("topleft", legend = c("Composto", "Simples", "Continuo"), col = c("#dc3545", "#0d6efd", "#6f42c1"), lwd = 3, lty = c(1, 2, 3), cex = 0.65, bg = "white") # Painel 2: VP da perpetuidade vs taxa r_seq2 <- seq(0.01, 0.15, length = 200) VP_seq <- F / r_seq2 plot(r_seq2 * 100, VP_seq, type = "l", lwd = 3, col = "#0d6efd", xlab = "Taxa de juros (%)", ylab = "VP (R$)", main = "Perpetuidade: VP = F/r", ylim = c(0, 12000)) # Marcar pontos r_marks <- c(0.02, 0.05, 0.10) VP_marks <- F / r_marks points(r_marks*100, VP_marks, pch = 19, col = "#dc3545", cex = 1.5) for (k in seq_along(r_marks)) { text(r_marks[k]*100 + 0.8, VP_marks[k], format(round(VP_marks[k]), big.mark="."), col = "#dc3545", cex = 0.7, font = 2, pos = 4) } text(8, 8000, "Queda de r\nduplica o VP!", col = "#6f42c1", cex = 0.8, font = 2)
▶ Executar
↻ Resetar
(Aguardando WebR...)