{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Change in Consumer Surplus\n", "\n", "**Randall Romero Aguilar, PhD**\n", "\n", "This demo is based on the original Matlab demo accompanying the Computational Economics and Finance 2001 textbook by Mario Miranda and Paul Fackler.\n", "\n", "Original (Matlab) CompEcon file: **demqua50.m**\n", "\n", "Running this file requires the Python version of CompEcon. This can be installed with pip by running\n", "\n", " !pip install compecon --upgrade\n", "\n", "Last updated: 2022-Oct-23\n", "
\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initial tasks" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from compecon import qnwlege\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define inverse demand curve" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1547610245267632" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = lambda p: 0.15*p**(-1.25)\n", "p, w = qnwlege(11, 0.3, 0.7)\n", "change = w.dot(f(p))\n", "change" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make figure" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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SNrPwMAA8fHxbNiwgX379vHYY4/x9NNP89Zbb3m67HFtpJ/5czHs4mloaChNTU1nPWez2QCGfBUZb3p6egCwWCxnnHv33Xdpamoa8pUsNzcXgJqaGs8UKF5tJO3HarXywAMPuM7PmDGDFStWkJeXx6pVqzxSr4z8M38uhvXYExMTP3e4pa6u7nOHacaLCRMm4O/vz+7du4ccr66u5uGHHwY0Piqf70Laz8DAAHl5eWRlZY15nXKaOz/zhvXYc3Jy2L59OwcOHGDRokWu4zabjaKioiHHxqOgoCCuu+46XnnlFdauXctll11GbW0tmzdvJi4ujrq6Ok1Vk891Ie3nkUceITw8nOuuu87DVY9v7vzMG9ZjX7VqFRaLhWeffXbI8Zdffpmenh7NYQceeughbrnlFg4cOMD69es5cOAATz75JImJiYSGhjJlyhSjSxQvNpr2s379evbt28cf/vCHcf2N2Sju+swbujXeww8/zPPPP88Xv/hFVqxYQXl5OZs2bWLBggU8++yz+PlpKZuzWbFiBRMmTOCll14649zGjRt599132bRpkwGViRl8Xvv5+c9/zs6dO3n22WeJjY01qDo5m3N95s/GsKEYgB//+MekpKTw0ksv8cEHHxATE8Ntt93G97//fYX652hvb+fEiRNcdtllQ44PDAxgt9ux2+04HA5sNhsWi0W9Lhni89rPI488ws6dO3nuuecU6l7m835n52JosPv7+3PnnXdy5513GlmGqZSUlABnXkT5/e9/z5NPPun6/3PmzGHx4sXqucsQZ2s/1dXVbNq0iaCgIK644grX8YULF/LHP/7R4zXKUJ/3mT8XQ4NdRq64uBg485d83333cd999xlRkpjI2dpPSkqK67h4n8/7zJ+LoWPsIiLifhrIFhHxMQp2EREfo2AXEfExCnYRER+jYBcR8TEKdhERH6NgFxHxMQp2EREf8/8AHMHQDLM67VkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Initiate figure\n", "fig0, ax = plt.subplots()\n", "\n", "# Set plotting parameters\n", "n = 1001\n", "qmin, qmax = 0, 1\n", "pmin, pmax = 0, 1\n", "p1, p2 = 0.7, 0.3\n", "\n", "q1 = f(p1)\n", "q2 = f(p2)\n", "\n", "# Plot area under inverse demand curve\n", "p = np.linspace(0,pmax, n)\n", "q = f(p)\n", "\n", "par = np.linspace(p2,p1, n)\n", "ax.fill_betweenx(par, f(par), qmin, alpha=0.35, color='LightSkyBlue')\n", "\n", "# Plot inverse demand curve\n", "ax.plot(q,p)\n", "\n", "# Annotate figure\n", "\n", "ax.hlines([p1, p2], qmin, [q1, q2], linestyles=':', colors='gray')\n", "ax.vlines([q1, q2], pmin, [p1, p2], linestyles=':', colors='gray')\n", "\n", "ax.annotate('$p(q)$', [0.8,0.3], fontsize=14)\n", "\n", "# To compute the change in consumer surplus `numerically'\n", "[x,w] = qnwlege(15,p2,p1)\n", "intn = w.T * f(x)\n", "\n", "# To compute the change in consumer surplus `analytically'\n", "F = lambda p: (0.15/(1-1.25))*p**(1-1.25)\n", "inta = F(p1)-F(p2)\n", "\n", "ax.set_aspect('equal')\n", "ax.set(xlim=[qmin, qmax], xticks=[qmin,q1,q2,qmax], xticklabels=[r'$0$', r'$q_1$',r'$q_2$',r'$q$'],\n", " ylim=[pmin, pmax], yticks= [p1, p2, pmax], yticklabels=[r'$p_1$', r'$p_2$', r'$p$']);" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.7 ('base')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" }, "vscode": { "interpreter": { "hash": "ad2bdc8ecc057115af97d19610ffacc2b4e99fae6737bb82f5d7fb13d2f2c186" } } }, "nbformat": 4, "nbformat_minor": 4 }