{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Equilibrium" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepared for the [QuantEcon](http://quantecon.org/) Workshop on Computational Methods in HCMC\n", "\n", "#### John Stachurski, Nov 2016" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we import some functionality from the scientific libraries" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from scipy.optimize import bisect" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's write routines to compute supply and demand as functions of price and parameters:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\n", "def supply(p, b):\n", " return np.exp(b * p) - 1\n", "\n", "def demand(p, a, epsilon):\n", " return a * p**(-epsilon)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we'll write a function that takes a parameter set and returns a market clearing price via bisection:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.optimize import bisect\n", "\n", "def compute_equilibrium(a, b, epsilon):\n", " plow = 0.1\n", " phigh = 10.0\n", " def excess_supply(p):\n", " return supply(p, b) - demand(p, a, epsilon)\n", " pclear = bisect(excess_supply, plow, phigh)\n", " return pclear" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's test it with the original parameter set, the market clearing price for which was 2.9334. The parameters are\n", "\n", "$$ a = 1, \\quad b = 0.1, \\quad \\epsilon = 1 $$" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.9334108855344145" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_equilibrium(1, 0.1, 1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.433107128867579" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_equilibrium(1, 0.1, 1.45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "For $\\epsilon$ in a grid of values between 1.0 and 1.5, plot the equilibrium price for each $\\epsilon$.\n", "\n", "One problem is that you need to **loop**. That is, you need to evaluate \"compute_equilibrium\" for lots of different $\\epsilon$. Here's a hint on how you might try that." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def f(x):\n", " out = \"negative\" if x < 0 else \"nonnegative\"\n", " return out\n", "\n", "vals = np.linspace(-1, 1, 5)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([-1. , -0.5, 0. , 0.5, 1. ])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vals" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['negative', 'negative', 'nonnegative', 'nonnegative', 'nonnegative']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[f(v) for v in vals]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solution" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n", "The solution is below\n" ] } ], "source": [ "for i in range(40):\n", " print(\"The solution is below\")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(1.0, 1.5)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGCCAYAAAAoviPpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0nOV5/vHvO9pGyywa7fsuy/IORhiMEaF2IJBg/EtS\niBOSUIqbtLS4nLSFNDS0JQUMSQ4lJwcITnxCaF2c2JAQkxCTEBvvxru8aN/3ZUYa7Zbm94dsBQds\nedFoZqTrc44PHo38zi1uLZee91kMj8fjQURERCRAmHxdgIiIiMjlUHgRERGRgKLwIiIiIgFF4UVE\nREQCisKLiIiIBBSFFxEREQkowd68+MDAAI8++igdHR0MDQ3x9a9/nVtuuWX8+V27dvH973+foKAg\nbr75Zv72b//Wm+WIiIjINODV8PL73/+eefPm8cADD9DY2Mj9999/Xnj5zne+w49//GPi4+P50pe+\nxG233UZOTo43SxIREZEA59Xwcscdd4z/vbGxkaSkpPHHdXV12O12EhISACguLmbPnj0KLyIiInJR\nXg0v59x77720trby4osvjr+tvb0dh8Mx/tjhcFBXVzcV5YiIiEgAm5IJuxs3buSHP/wh3/jGNy74\nPjqlQERERC6FV8NLSUkJzc3NABQUFDAyMkJnZycA8fHxtLW1jb9vS0sL8fHxF72eAo6IiIh49bbR\n/v37aWxs5Jvf/Cbt7e309/eP3ypKSUmht7eXxsZG4uPjee+99/jud7970esZhkFbW483S5bLFBdn\nUU/8iPrhf9QT/6J++Je4OMsV/TvDm6dKDw4O8s1vfpPm5mYGBwd56KGH6OrqwmKxsHz5cg4cOMBz\nzz0HwO23385Xv/rVCa+pTzr/om8E/kX98D/qiX9RP/yLX4YXb9AnnX/RNwL/on74H/XEv6gf/uVK\nw4t22BUREZGAovAiIiIiAUXhRURERAKKwouIiIgEFIUXERERCSgKLyIiIhJQFF5EREQkoCi8iIiI\nSEBReBEREZGAovAiIiIiAUXhRURERAKKwouIiIgEFIUXERERCSgKLyIiIhJQFF5EREQkoCi8iIiI\nSEBReBEREZGAovAiIiIiAUXhRURERAKKwouIiIgEFIUXERERCSgKLyIiIhJQFF5EREQkoCi8iIiI\nSEBReBEREZGAovAiIiIiASWgwsvwmRFflyAiIiI+FlDh5UdvHud4ZQejHo+vSxEREREfCajwMjrq\n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\nAUcKOf3ullsbAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sb # just to make it look pretty\n", "\n", "a, b = 1, 0.1\n", "\n", "fig, ax = plt.subplots(figsize=(9, 6))\n", "epsilon_grid = np.linspace(1, 1.5, 100)\n", "\n", "prices = [compute_equilibrium(a, b, epsilon) for epsilon in epsilon_grid]\n", "\n", "ax.plot(epsilon_grid, prices, lw=2, alpha=0.6)\n", "ax.set_xlabel(\"epsilon\")\n", "ax.set_ylabel(\"equilibrium price\")\n", "ax.set_xlim(1.0, 1.5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }