Carregando WebR...
# ============================================ # Decisao de Shutdown: tres regimes de preco # CT(q) = 72 + 10q + 0.5q^2 (Ex. Resolvido 12.2) # ============================================ CF <- 72 a <- 10; b <- 0.5 CT <- function(q) CF + a*q + b*q^2 CV <- function(q) a*q + b*q^2 CMg <- function(q) a + 2*b*q CMe <- function(q) CF/q + a + b*q CVMe <- function(q) a + b*q # Pontos criticos cvme_min <- a # CVMe min (q -> 0+ para funcao crescente) cme_min_q <- sqrt(CF / b) cme_min <- CMe(cme_min_q) # Tres cenarios de preco precos <- c(30, 16, 8) nomes <- c("Lucro positivo", "Prejuizo (opera)", "Fecha") cores <- c("#198754", "#fd7e14", "#dc3545") cat("====== TRES REGIMES DE PRECO ======\n") cat("CT(q) =", CF, "+", a, "q +", b, "q^2\n") cat("CVMe_min =", cvme_min, " | CMe_min =", round(cme_min, 2), " (em q =", round(cme_min_q, 2), ")\n\n") for (i in 1:3) { p <- precos[i] cat("--- Preco p =", p, "---\n") if (p < cvme_min) { cat(" p < CVMe_min => FECHAR (q = 0)\n") cat(" Lucro = -CF = -", CF, "\n\n") } else { q_s <- (p - a) / (2*b) lucro_op <- p * q_s - CT(q_s) lucro_fecha <- -CF cat(" q* =", round(q_s, 2), "\n") cat(" Lucro operando =", round(lucro_op, 2), "\n") cat(" Lucro fechando = -CF = -", CF, "\n") cat(" Decisao:", ifelse(lucro_op >= lucro_fecha, "OPERAR", "FECHAR"), "\n") if (p >= cme_min) cat(" Regime: LUCRO POSITIVO\n\n") else cat(" Regime: PREJUIZO (mas menor que CF)\n\n") } } # --- Grafico --- par(mar = c(4.5, 4.5, 3, 2), bg = "#f8f9fa") q_seq <- seq(0.5, 30, length = 500) plot(q_seq, CMg(q_seq), type = "l", lwd = 3, col = "#dc3545", xlab = "q", ylab = "$/unidade", main = "Tres regimes de preco", ylim = c(0, 35), xlim = c(0, 30), cex.lab = 1.1) lines(q_seq, CMe(q_seq), lwd = 2, col = "#0d6efd") lines(q_seq, CVMe(q_seq), lwd = 2, col = "#198754", lty = 2) # Linhas de preco e zonas for (i in 1:3) { abline(h = precos[i], col = cores[i], lwd = 1.5, lty = 3) text(28, precos[i] + 0.8, paste0("p=", precos[i], ": ", nomes[i]), col = cores[i], cex = 0.7, font = 2, adj = 1) } # Zona verde (lucro) rect(0, cme_min, 30, 35, col = rgb(0.1, 0.53, 0.33, 0.05), border = NA) # Zona amarela (opera com prejuizo) rect(0, cvme_min, 30, cme_min, col = rgb(0.99, 0.49, 0.05, 0.08), border = NA) # Zona vermelha (fecha) rect(0, 0, 30, cvme_min, col = rgb(0.86, 0.21, 0.27, 0.08), border = NA) # Anotacoes das zonas text(1, (cme_min + 35)/2, "Lucro > 0", col = "#198754", cex = 0.7, font = 3, adj = 0) text(1, (cvme_min + cme_min)/2, "Prejuizo\n(opera)", col = "#fd7e14", cex = 0.65, font = 3, adj = 0) text(1, cvme_min/2, "Fecha", col = "#dc3545", cex = 0.7, font = 3, adj = 0) # Pontos criticos points(cme_min_q, cme_min, pch = 19, col = "#0d6efd", cex = 1.3) text(cme_min_q, cme_min, paste0(" Break-even\n CMe_min=", round(cme_min, 1)), pos = 4, cex = 0.7, col = "#0d6efd") legend("topright", legend = c("CMg (= oferta acima CVMe)", "CMe", "CVMe"), col = c("#dc3545", "#0d6efd", "#198754"), lwd = c(3, 2, 2), lty = c(1, 1, 2), cex = 0.75, bg = "white")
▶ Executar
↻ Resetar
(Aguardando WebR...)