(*^ ::[paletteColors = 128; automaticGrouping; magnification = 150; currentKernel; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, L1, e6, 14, "Times"; ; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, L1, a20, 18, "Times"; ; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, L1, a15, 14, "Times"; ; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, L1, a12, 12, "Times"; ; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = input, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L1, 12, "Courier"; ; fontset = output, output, inactive, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ; fontset = message, inactive, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = print, inactive, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = info, inactive, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakBelow, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, L1, 12, "Courier"; ; fontset = name, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, L1, 10, "Times"; ; fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = Left Header, nohscroll, cellOutline, 12; fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, L1, 12; fontset = Left Footer, cellOutline, blackBox, 12; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Courier"; ; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; next21StandardFontEncoding; ] :[font = title; inactive; preserveAspect; startGroup; ] Oligopoly :[font = subsubtitle; inactive; preserveAspect; ] Hal Varian January 1992 :[font = section; inactive; Cclosed; preserveAspect; startGroup; ] Cournot equilibria with linear demands :[font = text; inactive; preserveAspect; ] Let's draw some pictures of Cournot equilibrium with linear demands. We start with the following inverse demand functions :[font = input; preserveAspect; ] p1[x1_,x2_] := 10 - b1 x1 - c x2 p2[x1_,x2_] := 10 - b2 x2 - c x1 :[font = text; inactive; preserveAspect; ] The profit functions become :[font = input; preserveAspect; ] profit1[x1_,x2_] := Evaluate[p1[x1,x2]*x1] profit2[x1_,x2_] := Evaluate[p2[x1,x2]*x2] :[font = text; inactive; preserveAspect; ] The reaction curves are determined by :[font = input; preserveAspect; ] solution1=Solve[D[profit1[x1,x2],x1]==0,x1][[1]] solution2=Solve[D[profit2[x1,x2],x2]==0,x2][[1]] r1[x2_] := Evaluate[x1/.solution1] r2[x1_] := Evaluate[x2/.solution2] :[font = text; inactive; preserveAspect; ] If we fix the parameters, we can plot these isoprofit contours. We will set c=b1, so that the two goods are perfect substitutes. ;[s] 3:0,0;77,1;81,2;130,-1; 3:1,11,8,Times,0,12,0,0,0;1,10,8,Courier,1,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; ] b1=b2=c=1 isoprofitLines=ContourPlot[profit1[x1,x2], {x1,0,7},{x2,0,7},ContourShading->False] :[font = text; inactive; preserveAspect; ] We can also plot the reaction curves. Here's a neat way to do it using ParametricPlot. ;[s] 3:0,0;72,1;86,2;88,-1; 3:1,11,8,Times,0,12,0,0,0;1,10,8,Courier,1,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; endGroup; ] reactionCurves=ParametricPlot[{{r1[t],t},{t,r2[t]}},{t,0,7}] Show[isoprofitLines,reactionCurves] :[font = section; inactive; Cclosed; preserveAspect; startGroup; ] Stackelberg equilibrium :[font = text; inactive; preserveAspect; ] We derived the reaction curve for firm 2 above. We can calculate the Stackelberg equilibrium by plugging this reaction curve into firm 1's profit function and maximizing that. :[font = input; preserveAspect; ] stackProfit1[x1_] := Evaluate[profit1[x1,x2]/.solution2] stackProfit1[x1] :[font = input; preserveAspect; endGroup; ] solutionStack=Solve[D[stackProfit1[x1],x1]==0,x1][[1]] stackX1=x1/.solutionStack stackX2=r2[x1]/.solutionStack :[font = section; inactive; preserveAspect; startGroup; ] Bertrand equilibrium :[font = text; inactive; preserveAspect; endGroup; endGroup; ] Do Nash with upward sloping reaction functions... ^*)