Carregando WebR...
# ============================================ # Stackelberg vs. Cournot # Exercicio Resolvido 16.2 # ============================================ a <- 150; b <- 1; c <- 30 # Demanda: p = a - Q, CMg = c cat("====== STACKELBERG vs. COURNOT ======\n") cat("Demanda: p =", a, "- Q\n") cat("CMg =", c, "(ambas as firmas)\n\n") # --- Cournot simetrico --- qC <- (a - c) / (3 * b) QC <- 2 * qC pC <- a - b * QC piC <- (pC - c) * qC cat("--- Cournot ---\n") cat(sprintf("q1 = q2 = %.1f Q = %.1f p = %.1f\n", qC, QC, pC)) cat(sprintf("pi1 = pi2 = %.0f Pi = %.0f\n\n", piC, 2*piC)) # --- Stackelberg (firma 1 = lider) --- # Melhor-resposta da seguidora: q2*(q1) = (a - c - q1) / 2 # Lider maximiza: pi1 = (a - q1 - q2*(q1) - c)*q1 # = ((a-c)/2 - q1/2)*q1 # CPO: (a-c)/2 - q1 = 0 => q1 = (a-c)/2 q1L <- (a - c) / (2 * b) q2S <- (a - c - b * q1L) / (2 * b) QS <- q1L + q2S pS <- a - b * QS pi1L <- (pS - c) * q1L pi2S <- (pS - c) * q2S cat("--- Stackelberg ---\n") cat(sprintf("q1 (lider) = %.1f pi1 = %.0f\n", q1L, pi1L)) cat(sprintf("q2 (seguidora)= %.1f pi2 = %.0f\n", q2S, pi2S)) cat(sprintf("Q = %.1f p = %.1f Pi = %.0f\n\n", QS, pS, pi1L + pi2S)) # --- Comparacao --- cat("--- Comparacao ---\n") cat(sprintf("%-18s %-10s %-10s\n", "", "Stackelberg", "Cournot")) cat(strrep("-", 40), "\n") cat(sprintf("%-18s %-10.0f %-10.0f\n", "Firma 1 (lucro)", pi1L, piC)) cat(sprintf("%-18s %-10.0f %-10.0f\n", "Firma 2 (lucro)", pi2S, piC)) cat(sprintf("%-18s %-10.0f %-10.0f\n", "Lucro total", pi1L+pi2S, 2*piC)) cat(sprintf("%-18s %-10.1f %-10.1f\n", "Preco", pS, pC)) cat(sprintf("%-18s %-10.1f %-10.1f\n", "Quantidade", QS, QC)) cat("\nA lider ganha +", pi1L - piC, "vs. Cournot\n") cat("A seguidora perde", piC - pi2S, "vs. Cournot\n") cat("Consumidores ganham: p cai de", pC, "para", pS, "\n") # --- Grafico --- par(mar = c(4.5, 4.5, 3, 2), bg = "#f8f9fa") q_seq <- seq(0, 130, length = 300) # Melhor-resposta de cada firma MR1 <- function(q2) pmax((a - c - b*q2) / (2*b), 0) MR2 <- function(q1) pmax((a - c - b*q1) / (2*b), 0) plot(q_seq, MR2(q_seq), type = "l", lwd = 3, col = "#dc3545", xlim = c(0, 70), ylim = c(0, 70), xlab = expression(q[1]), ylab = expression(q[2]), main = "Stackelberg vs. Cournot", asp = 1) lines(MR1(q_seq), q_seq, lwd = 3, col = "#0d6efd") # MR1 no eixo q2 # Curvas de iso-lucro da lider (para intuicao) # pi1 = (a - q1 - q2 - c)*q1 = K => q2 = a - c - q1 - K/q1 for (K in c(pi1L, piC)) { q1_iso <- seq(1, 120, length = 500) q2_iso <- a - c - b*q1_iso - K / q1_iso valid <- q2_iso >= 0 & q1_iso > 0 lines(q1_iso[valid], q2_iso[valid], col = "#adb5bd", lty = 3, lwd = 1) } # Cournot points(qC, qC, pch = 19, col = "#6f42c1", cex = 2.2) text(qC + 2, qC + 2.5, paste0("Cournot (", qC, ", ", qC, ")"), col = "#6f42c1", cex = 0.75, font = 2) # Stackelberg points(q1L, q2S, pch = 17, col = "#198754", cex = 2.2) text(q1L + 2, q2S + 2.5, paste0("Stack. (", q1L, ", ", q2S, ")"), col = "#198754", cex = 0.75, font = 2) # Seta de Cournot para Stackelberg arrows(qC + 1, qC - 1, q1L - 1, q2S + 1, col = "#fd7e14", lwd = 2, length = 0.1) legend("topright", legend = c(expression(MR[1](q[2])), expression(MR[2](q[1])), "Cournot", "Stackelberg", "Iso-lucro lider"), col = c("#0d6efd", "#dc3545", "#6f42c1", "#198754", "#adb5bd"), lwd = c(3, 3, NA, NA, 1), pch = c(NA, NA, 19, 17, NA), lty = c(1, 1, NA, NA, 3), cex = 0.65, bg = "white")
▶ Executar
↻ Resetar
(Aguardando WebR...)