Technology

Hal Varian
January 1992

Cobb-Douglas Production Functions

We use Cobb-Douglas production functions a lot in our examples, so it makes sense to get a good idea of what they look like.   Here is the simplest example:

ContourPlot[x1 x2,{x1,0,10},{x2,0,10},ContourShading->False]

Let's see what happens to the CD production function as we vary the parameter a.

Do[
	ContourPlot[x1^a x2^(1-a),{x1,0,10},{x2,0,10},
	ContourShading->False,
	ContourSmoothing->True,
	AxesLabel->{"Factor 1","Factor 2"},
	PlotPoints->12],
   {a,0.1,0.9,0.1}]

After Mathematica has generated this set of graphs, click on the second bracket from the left---the one containing the entire set of graphs---and press Command-y (or Alt-y, depending on your system).  Mathematica will animate the set of graphs and you can see how the shape of the isoquants changes as you change the parameter a.

The Leontieff Production Function

Here's a picture of the Leontieff production function.  Again, we  we change the parameter a.

Do[
ContourPlot[Min[a x1,(10-a)x2],{x1,1,10},{x2,1,10},
ContourShading->False,
PlotPoints->50],{a,1,9}]

Here's what happens if we have two Leontieff technologies.  We can put any amount of input into one or the other

ContourPlot[Min[x1,2 x2]+Min[2 x1,x2],{x1,1,10},{x2,1,10},
ContourShading->False,PlotPoints->50]

Let's try to build up something that looks like a Cobb-Douglas production function out of Leontieff functions.   To do this, we want to pick the parameters of the Leontieff function to lie on the CD isoquant.  First we'll generate a list of plots, and then we'll superimpose them:

listOfPlots=
Table[
	ContourPlot[Min[a x1, x2/a], {x1,1,10},{x2,1,10},
	ContourShading->False, Contours->{4}],
{a,.5,2,.1}]

Show[listOfPlots]

It's a little ragged, but the idea is there.  If you want to make it look nicer, set PlotPoints->50 or so in the original commands.  However, this will take a lot longer to plot.

The Technical Rate of Substitution

We saw in the text that the Technical Rate of Substitution of the Cobb-Douglas production function is given by (x2/x1).   Let's draw lines with this slope that pass through each point on the curve  x1*x2=10.

The formula for a straight line  with coordinates (y1,y2) that passes through a point (x1,x2) is 
                y2 = x2 + m (x1 - y1).
At a given point on the isoquant, (x1,x2), the  slope of the tangent line is x2/x1.
Making this substitution gives us
                 y2 = x2 - (x2/x1)(x1 - y1).
Finally, since the points (x1,x2) are all on the isoquant, x2=10/x1.  Making this substitution gives us
                 y2 = 10/x1 - (10/x1^2)(x1 - y1).
We want to plot this family of lines for a number of values of  x1.  In order to do this we will use the Mathematica function Table .  We  can construct a list of  10 of these straight lines as follow

Table[10/x1 - (10/x1^2)(x1 - y1),{x1,1,10}]

Now we just feed this list of functions into the Plot command.  However, before we do that we need to Evaluate the table, to convert it to a form that Plot can understand.
We also set the AspectRatio and the PlotRange so the graph will look nice.

Plot[Evaluate[Table[10/x1 - (10/x1^2)(y1-x1),{x1,1,20}]],
{y1,0,10},AspectRatio->1,PlotRange->{{0,10},{0,10}}]

Notice how the set of tangent lines "reconstruct" the isoquant x1*x2=10.  The family of  tangent lines completely describes the shape of the isoquant.  This simply geometric fact will have profound consequences later on.

Homothetic and Homogeneous Functions

It is easy to recognize a homothetic function since the formula for it's tangent lines will only depend on x1/x2.  This is just another way of saying that the TRS is constant along lines through the origin.  This is trivial to verify for the Cobb-Douglas production function, so let's look at the CES production function.  It is convenient to define the CES production function first.

CES[x1_,x2_, rho_] := (x1^rho + x2^rho)^(1/rho)

The TRS for this function is given by

D[CES[x1,x2,rho],x1]/D[CES[x1,x2,rho],x2]

It is easy to see that this is just (x2/x1)^(1-rho).

The CES production function

Let's take a look at how the CES production function changes as the parameter changes.  First we generate a series of plots of the function, then we animate it by choosing a plot and hitting Control-y.

Do[
	ContourPlot[(.5 x1^rho + .5 x2^rho)^(1/rho),{x1,1,10},{x2,1,10},
	ContourShading->False,
	PlotPoints->20],
   {rho,1.05,-10,-1}]