{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#!/usr/bin/python3\n", "\"\"\"\n", "Nel problema max u(x,y) su px+qy=m\n", "trova il massimo m tale che y=0 con preferenze quasilineari del tipo\n", "u(x,y)=av(x)+by con v concava Inada\n", "Qui u_y/u_x = b/av'(x) con y=0 diventa b/av'(m/p) che per m che va da zero a infinito\n", "passa da sotto a sopra q/p quindi per m piccolo y=0 e dopo il threshold m definito da\n", "b/av'(m/p)=q/p avremo y>0 nel punto di ottimo.\n", "Nell'esempio di sotto v(x)=sqrt(x) che può anche essere ln(x) ecc.\n", "\"\"\"\n", "from sympy import *\n", "\n", "x = Symbol('x')\n", "y = Symbol('y')\n", "m = Symbol('m')\n", "\n", "#funzione di utilità \n", "#funzione\n", "def u(x,y):\n", "\ta=10; b=1\n", "\treturn a*sqrt(x)+b*y\n", "#utilità marginali\n", "ux=diff(u(x,y),x)\n", "uy=diff(u(x,y),y)\n", "print('il rapporto u_x/u_y è uguale a',ux/uy)\n", "#prezzi\n", "[p,q]=[2,1]\n", "\n", "#soluzione problema\n", "S=solve([ux/uy-p/q, p*x+q*y-m,p*x-m])\n", "[x0,y0,M]=[float(S[0][x]),float(S[0][y]),float(S[0][m])]\n", "print('la soluzione è [x,y,m]=',[x0,y0,M])\n", "\n", "#plot\n", "from numpy import linspace, meshgrid, arange\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import matplotlib.lines as lines\n", "\n", "fig = plt.figure()\n", "#plot budget line\n", "t=linspace(0,M/p,400)\n", "b=M/q-(p/q)*t\n", "plt.plot(t,b,'r')\n", "#plot three indifference curves\n", "xbar=2*M/p\n", "ybar=2.3*M/q\n", "X = linspace(0, xbar,400)\n", "Y = linspace(0, ybar,400)\n", "X,Y=meshgrid(X,Y)\n", "uu=lambdify((x,y), u(x,y), modules=['numpy'])\n", "z=uu(X,Y)\n", "U=u(x0,y0)\n", "levels=[0.8*U,U,1.2*U]\n", "cs=plt.contour(X,Y,z,levels)\n", "plt.clabel(cs,fontsize=12)\n", "plt.xlabel('Bene x',fontsize=14)\n", "plt.ylabel('Bene y',fontsize=14)\n", "plt.xlim([0, xbar])\n", "plt.ylim([0, ybar])\n", "plt.title('Problema del consumatore',fontsize=18)\n", "# save figure if you want\n", "#fig.savefig('ConsMaxM.pdf')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }