General Equilibrium

Hal Varian
January 1992

General equilibrium dynamics

Let's look at a few trajectories generated by the dynamics in the text.  We'll use a one-consumer  symmetric Cobb-Douglas economy.  We'll assume an endowment of (1,1,1).  In this case the excess demand function for goods 1 and 2 looks like  this:

z1[pp1_,pp2_] := (pp1  + pp2  + 1)/(3 pp1)-1
z2[pp1_,pp2_] := (pp1  + pp2  + 1)/(3 pp2)-1

The equilibrium is obtained by solving these two equations in two unknowns:

Solve[{z1[p1,p2]==0,z2[p1,p2]==0},{p1,p2}]

Now let's solve the differential equation describing the dynamics.

solution=NDSolve[
        {p1'[t] == (p1[t]  + p2[t]  + 1)/(3 p1[t])-1,
         p2'[t] == (p1[t]  + p2[t]  + 1)/(3 p2[t])-1,
         p1[0]==0.1,
         p2[0]==0.2}, 
         {p1[t],p2[t]},{t,1,10}]

price1[t_] := Evaluate[p1[t]/.solution]
price2[t_] := Evaluate[p2[t]/.solution]

Plot[price1[t],{t,0,10}]
Plot[price2[t],{t,0,10}]

I haven't been able to coerce Mathematica into displaying the trajectories for this system yet, but I have been able to plot the vector field generated by the system using the package PlotField.  First we load it, then we ask it to plot the field generated by this dynamics.

<<Graphics`PlotField`
PlotVectorField[{(pp1  + pp2  + 1)/(3 pp1)-1,
                 (pp1  + pp2  + 1)/(3 pp2)-1},
                 {pp1,0.8,1.2},{pp2,0.8,1.2},Axes->True]

Since we have only one consumer, the vector field described by the excess demand functions is in fact a gradient filed.  This means that we should get qualitatively the same vector field if we plot a potential function for this system.  Indirect utility is a suitable potential function in this case.  (Actually, we want to use the negative of indirect utility since the Walrasian equilibrium minimizes indirect utility.)

PlotGradientField[-Log[p1 + p2 + 1] + (1/3)*Log[p1]
                  + (1/3)*Log[p2],{p1,0.8,1.2},{p2,0.8,1.2},
                  Axes->True]

An unstable system

Do the Gale example with a unique unstable equilibrium.