-
Introduction 4
-
Lecture1.1
-
Lecture1.2
-
Lecture1.3
-
Lecture1.4
-
-
Production Possibilities Frontier 4
-
Lecture2.1
-
Lecture2.2
-
Lecture2.3
-
Lecture2.4
-
-
Trade 3
-
Lecture3.1
-
Lecture3.2
-
Lecture3.3
-
-
Demand 4
-
Lecture4.1
-
Lecture4.2
-
Lecture4.3
-
Lecture4.4
-
-
Supply 2
-
Lecture5.1
-
Lecture5.2
-
-
Equilibrium 4
-
Lecture6.1
-
Lecture6.2
-
Lecture6.3
-
Lecture6.4
-
-
Curve Movements 4
-
Lecture7.1
-
Lecture7.2
-
Lecture7.3
-
Lecture7.4
-
-
Elasticity and Revenue 5
-
Lecture8.1
-
Lecture8.2
-
Lecture8.3
-
Lecture8.4
-
Lecture8.5
-
-
Taxes 7
-
Lecture9.1
-
Lecture9.2
-
Lecture9.3
-
Lecture9.4
-
Lecture9.5
-
Lecture9.6
-
Lecture9.7
-
-
Consumer and Producer Surplus 8
-
Lecture10.1
-
Lecture10.2
-
Lecture10.3
-
Lecture10.4
-
Lecture10.5
-
Lecture10.6
-
Lecture10.7
-
Lecture10.8
-
-
Imports and Exports 4
-
Lecture11.1
-
Lecture11.2
-
Lecture11.3
-
Lecture11.4
-
-
Tariffs 2
-
Lecture12.1
-
Lecture12.2
-
Plotting Surplus
Let’s take the basic equilibrium function we have been working with (not the one including taxes, that will be our next step) and plot consumer surplus. What we are going to add is this:
triangle1 = patches.Polygon([[equilibriumQ,equilibriumP],[0,equilibriumP],[0,priceEnd]],True,color="green")
currentAxis = plt.gca()
currentAxis.add_patch(triangle1)
That will create the triangle with the end points like before, we also will print out the area of it with the triangle area formula.
print("The consumer surplus at this equilibrium "+str((priceEnd-equilibriumP)*(equilibriumQ)*.5))
The function will be:
import sympy
import matplotlib.pyplot as plt
import matplotlib.patches as patches
p = sympy.Symbol("p")
def Equilibrium(demandEquation,supplyEquation,priceStart):
priceEnd = sympy.solve(demandEquation)[0]
prices = []
demandQ = []
supplyQ = []
for price in range(priceStart,priceEnd+1):
prices += [price]
demandQ += [demandEquation.subs(p,price)]
supplyQ += [supplyEquation.subs(p,price)]
equilibriumP = sympy.solve(demandEquation-supplyEquation)[0]
equilibriumQ = demandEquation.subs(p,equilibriumP)
triangle1 = patches.Polygon([[equilibriumQ,equilibriumP],[0,equilibriumP],[0,priceEnd]],True,color="green")
currentAxis = plt.gca()
currentAxis.add_patch(triangle1)
plt.plot(demandQ,prices)
plt.plot(supplyQ,prices)
plt.legend(["Demand","Supply"])
plt.plot(equilibriumQ,equilibriumP, 'ro')
plt.xlabel("Supply and Demand Quantity")
plt.ylabel("Price")
plt.show()
print("The equilibrium price is "+str(equilibriumP)+" and equilibrium quantity is "+str(equilibriumQ)+".")
print("The consumer surplus at this equilibrium "+str((priceEnd-equilibriumP)*(equilibriumQ)*.5))
Try it out.
Equilibrium(10-p,p,0)
Producer surplus, like you might guess, is the other triangle the two curves make. Let’s modify our function to include it!
import sympy
import matplotlib.pyplot as plt
import matplotlib.patches as patches
p = sympy.Symbol("p")
def Equilibrium(demandEquation,supplyEquation,priceStart):
priceEnd = sympy.solve(demandEquation)[0]
prices = []
demandQ = []
supplyQ = []
for price in range(priceStart,priceEnd+1):
prices += [price]
demandQ += [demandEquation.subs(p,price)]
supplyQ += [supplyEquation.subs(p,price)]
equilibriumP = sympy.solve(demandEquation-supplyEquation)[0]
equilibriumQ = demandEquation.subs(p,equilibriumP)
triangle1 = patches.Polygon([[equilibriumQ,equilibriumP],[0,equilibriumP],[0,priceEnd]],True,color="green")
triangle2 = patches.Polygon([[equilibriumQ,equilibriumP],[0,equilibriumP],[0,0]],True,color="red")
currentAxis = plt.gca()
currentAxis.add_patch(triangle1)
currentAxis.add_patch(triangle2)
plt.plot(demandQ,prices)
plt.plot(supplyQ,prices)
plt.legend(["Demand","Supply"])
plt.plot(equilibriumQ,equilibriumP, 'ro')
plt.xlabel("Supply and Demand Quantity")
plt.ylabel("Price")
plt.show()
print("The equilibrium price is "+str(equilibriumP)+" and equilibrium quantity is "+str(equilibriumQ)+".")
print("The consumer surplus at this equilibrium "+str((priceEnd-equilibriumP)*(equilibriumQ)*.5))
print("The producer surplus at this equilibrium "+str((equilibriumP)*(equilibriumQ)*.5))
Equilibrium(10-p,p,0)
Different elasticities lead to different surpluses, play around with the following graphs
Equilibrium(10-p,p*2,0)
Equilibrium(15-p,p*2,0)