{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Di sotto ci sono due celle\n", "\n", "Nella seconda ci sono i valori dell'esempio del libro" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "data:\n", " G F B M M1 M2 L Out\n", "Grano 75 51 0 45 0 0 44 430\n", "Ferro 0 19 0 36 47 0 53 465\n", "Brioche 60 0 0 0 0 86 81 1135\n", "Macchine 0 64 0 0 33 58 99 254\n", "Prezzi 6 11 14 98 58 23 2 \n", "\n", "PIL = 46193\n", "Il deprezzamento è 9352\n", "L'incremento di capitale (in valore) è 19385\n", "Il valore degli investimenti lordi è 28737\n", "Controlliamo se l'incremento di capitale è uguale ad I-Dep: True\n" ] } ], "source": [ "import pandas as pd\n", "pd.set_option('precision',2) #number of decimals\n", "import numpy as np\n", "\n", "\"\"\"\n", "for PIL exercises with machines of different ages\n", "Ci sono 4 settori Grano Ferro Brioche e Macchine nuove M\n", "E ci sono macchine di uno e due anni M_1 ed M_2. Dopo il secondo anno le macchine si ammortano (muoiono).\n", "Input vector, con L lavoro, è della forma (G,F,B,M,M1,M2,L), lunghezza 7.\n", "Poi c'è il vettore output dimensione 4 (G,F,B,M)\n", "E il vettore prezzi, dimensione 4 settori + salario + prezzi di M_1 ed M_2 =7\n", "\"\"\"\n", "#row index\n", "sectors=['Grano','Ferro','Brioche','Macchine','Prezzi']\n", "#Input vectors dei settori. \n", "#Settori in riga, quantità usate nella produzione in colonna\n", "col=['G','F','B','M','M1','M2','L']\n", "\n", "#matrice input dell'esempio del libro. Gli zeri sono fissi, gli altri valori saranno random\n", "#l'esempio completo è nella cella sotto\n", "Giv=np.array([50,5,0,7,0,0,10])\n", "Fiv=np.array([0,10,0,5,8,0,20])\n", "Biv=np.array([75,0,0,0,0,5,20])\n", "Miv=np.array([0,40,0,0,10,5,20])\n", "\n", "# Make nonzero input vector elements random \n", "D_P=np.array([Giv,Fiv,Biv,Miv])\n", "Dr,Dc=np.nonzero(D_P)\n", "for (i,j) in zip(Dr,Dc):\n", " D_P[i,j]=np.random.randint(10,101)\n", "\n", "#prezzi dei fattori P (not entirely) random\n", "P=np.random.randint(1,16,7)\n", "P[3]=7*P[2]\n", "P[4]=.6*P[3]\n", "P[5]=.4*P[4]\n", "\n", "#add P as last row\n", "D=np.append(D_P,[P],axis=0)\n", "\n", "#the dataframe without output\n", "data=pd.DataFrame(D, index=sectors, columns=col)\n", "\n", "#colonna delle quantità prodotte dai 4 settori\n", "#(augmented by a last empty element corresponding to Price row)\n", "#nota: è pd.Series e non np.array perché np.array fa casino con l'elemento vuoto\n", "#output = some function (linear, cobb-douglas) in nonzero inputs\n", "#linear for now\n", "out=pd.Series([\n", " 2*np.sum(data.loc['Grano',:]),\n", " 3*np.sum(data.loc['Ferro',:]),\n", " 5*np.sum(data.loc['Brioche',:]),\n", " 1*np.sum(data.loc['Macchine',:]),\n", " ''],index=sectors)\n", "data['Out']=out\n", "print('\\ndata:')\n", "print(data)\n", "\n", "\n", "# PIL:\n", "#quantità di G,F,B usata nella produzione (zero di macchine perché è lordo)\n", "inter=np.array([\n", " np.sum(data.loc['Grano':'Macchine','G']),\n", " np.sum(data.loc['Grano':'Macchine','F']),\n", " np.sum(data.loc['Grano':'Macchine','B']),\n", " 0])\n", "# output netto dei beni\n", "net=out.values[0:4]-inter\n", "# PIL uguale prezzi per quantità:\n", "PIL=np.dot(P[0:4],net)\n", "print('\\nPIL =',PIL)\n", "\n", "#deprezzamento \n", "#utilizzo macchine\n", "use=np.array([\n", " np.sum(data.loc['Grano':'Macchine','M']),\n", " np.sum(data.loc['Grano':'Macchine','M1']),\n", " np.sum(data.loc['Grano':'Macchine','M2']),\n", " ])\n", "#price drop\n", "pdrop=np.array([\n", " P[3]-P[4],\n", " P[4]-P[5],\n", " P[5]\n", "])\n", "#dot product\n", "Dep=np.dot(use,pdrop)\n", "print('Il deprezzamento è',Dep)\n", "\n", "#incremento di capitale\n", "#stock a inizio periodo, di: G,F,B,M,M1,M2\n", "#K0=np.array([50,0,0,10,18,10])\n", "K0=np.random.randint(10,26,6) \n", "K0[0]=5*K0[3] #more G than M\n", "K0[2]=0 # no brioche left\n", "# M1 and M2 used must equal initial stock\n", "K0[4]=use[1]\n", "K0[5]=use[2]\n", "\n", "#stock a fine periodo\n", "#grano e brioche\n", "#G1=40\n", "B1=0\n", "#B1=np.random.randint(0.5*K0[2],1.5*K0[2])\n", "#oltre a grano e brioche ci sono macchine e ferro\n", "K1=np.array([\n", " np.random.randint(0.5*K0[0],1.5*K0[0]), #grano\n", " K0[1]+net[1], #ferro\n", " 0, #no brioche\n", " K0[3]+out.values[3]-use[0],\n", " use[0],\n", " use[1],\n", " ])\n", "#Delta K in valore\n", "DeltaK=np.dot(K1-K0,P[0:6])\n", "print('L\\'incremento di capitale (in valore) è',DeltaK)\n", "\n", "#investimenti: produzione macchine e scorte grano e ferro\n", "I=P[0]*(K1[0]-K0[0])+P[1]*net[1]+P[3]*out.values[3]\n", "print('Il valore degli investimenti lordi è',I)\n", "print('Controlliamo se l\\'incremento di capitale è uguale ad I-Dep:', np.array_equal(DeltaK,I-Dep)) " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "pd.set_option('precision',2) #number of decimals\n", "import numpy as np\n", "\n", "#row index\n", "sectors=['Grano','Ferro','Brioche','Macchine','Prezzi']\n", "#Input vectors dei settori. \n", "#columns: quantità usate nella produzione\n", "col=['G','F','B','M','M1','M2','L']\n", "#Gli zeri sono fissi. Gli altri valori sono dall'esempio del libro e saranno random\n", "Giv=np.array([50,5,0,7,0,0,10])\n", "Fiv=np.array([0,10,0,5,8,0,20])\n", "Biv=np.array([75,0,0,0,0,5,20])\n", "Miv=np.array([0,40,0,0,10,5,20])\n", "#prezzi dei fattori\n", "P=np.array([1,4,2,15,7,3,7])\n", "# array di input e prezzi, valori dell'esempio del libro\n", "D0=np.array([Giv,Fiv,Biv,Miv,P])\n", "#data frame corrispondente\n", "data0=pd.DataFrame(D0, index=sectors, columns=col)\n", "\n", "#colonna delle quantità prodotte dai 4 settori\n", "#(augmented by a last empty element corresponding to Price row)\n", "out=pd.Series([200,100,200,25,''],index=sectors)\n", "data0['Out']=out\n", "print('data0:')\n", "print(data0)\n", "for h in ['G','F','B']:\n", " exec(f\"{h}int=np.sum(data0.loc['Grano':'Macchine',h])\") \n", " #equivalent to: exec('{}int=np.sum(data.loc[:,h])'.format(h))\n", " #see python 3 f string formatting\n", "\n", "inter=np.array([\n", " np.sum(data0.loc['Grano':'Macchine','G']),\n", " np.sum(data0.loc['Grano':'Macchine','F']),\n", " np.sum(data0.loc['Grano':'Macchine','B']),\n", " 0])\n", "\n", "net=out.values[0:4]-inter\n", "PIL=np.dot(P[0:4],net)\n", "print('\\nPIL =',PIL)\n", "\n", "#deprezzamento \n", "#utilizzo macchine\n", "use=np.array([\n", " np.sum(data0.loc['Grano':'Macchine','M']),\n", " np.sum(data0.loc['Grano':'Macchine','M1']),\n", " np.sum(data0.loc['Grano':'Macchine','M2']),\n", " ])\n", "#price drop\n", "pdrop=np.array([\n", " P[3]-P[4],\n", " P[4]-P[5],\n", " P[5]\n", "])\n", "#dot product\n", "Dep=np.dot(use,pdrop)\n", "print('Il deprezzamento è',Dep)\n", "\n", "#incremento di capitale\n", "#stock a inizio periodo, di: G,F,B,M,M1,M2\n", "K0=np.array([50,0,0,10,18,10])\n", "#K0=np.random.randint(10,26,6) \n", "#K0[0]=5*K0[3]\n", "\n", "#stock a fine periodo\n", "#grano e brioche\n", "G1=40\n", "#G1=np.random.randint(0.5*K0[0],1.5*K0[0])\n", "B1=0\n", "#B1=np.random.randint(0.5*K0[2],1.5*K0[2])\n", "#oltre a grano e brioche ci sono macchine e ferro\n", "K1=np.array([G1,\n", "# K0[1]+out.values[1]-inter[1],\n", " K0[1]+net[1],\n", " B1,\n", " K0[3]+out.values[3]-use[0],\n", " use[0],\n", " use[1],\n", " ])\n", "#Delta K in valore\n", "DeltaK=np.dot(K1-K0,P[0:6])\n", "print('L\\'incremento di capitale in valore è',DeltaK)\n", "\n", "#investimenti: produzione macchine e scorte grano ferro e brioche\n", "I=P[0]*(G1-K0[0])+P[1]*(net[1])+P[2]*(B1-K0[2])+P[3]*out.values[3]\n", "print('Il valore degli investimenti lordi è',I)\n", "print('Controlliamo se l\\'incremento di capitale è uguale ad I-Dep:', np.array_equal(DeltaK,I-Dep)) " ] }, { "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 }