Errata for Miranda and Fackler
Applied Computational Economics and Finance

Last Updated: Wednesday, March 07, 2012

As of 9/29/03 errata will be dated as they are entered. Non-dated entries were made before this date.

Chapter 2

p. 13 (9/29/03)

Replace
     Backward and forward substitution yield the theoretical results x1=1-M-1 and x2= M-1+1+M-1(1-M-1).
with
     Backward and forward substitution here yield the results x2=(1+2M-1)/(1+M-1) and x1=2-x2.

Chapter 4

p. 60 (12/18/06)

Second paragraph of Section 4.1 change f(x1)<f(x2) to f(x2)<f(x1)

Chapter 5

 pp. 93 (1/26/08)

Replace
     pj represents the jth prime number
with
     pj represents the square root of the jth prime number

p. 110 (9/23/05)

The value of f should be 0.025 not 0.06 to generate Figure 5.4.

Chapter 6

p. 133 (12/18/06)

In the matrix on the top of the page, the (6,5)th element should be 2 instead of 1

p. 137-8 (2/17/05)

In order to form spline approximants over the interval
     {(x1,x2)| -1 < x1 < 2, 4 < x2 < 9}
the code segment on the bottom of page 137 should read
     fspace = fundefn('spli',[10 15],[-1 4],[2 9])
and the offset code segment on the top of page 138 should read
     fspace = fundefn('spli',[10 15],[-1 4],[2 9], 1)

p. 140 (3/7/12)

Script and text give alpha=2 but the plot is for alpha=1. The plot can be obtained by running demapp06.

p. 144 (2/17/05)

Script should plot residual function, but plots effective supply instead.  To correct, replace
     splot = funeval(c,fspace,pplot);
     plot(splot,pplot);

with
     rplot = resid(c,pplot,fspace,alpha,eta);
     plot(pplot,rplot)

p. 148 (5/20/09)

The last line of the first code fragment should read
     r = [r(:); x0(2)-s0; x1(2)];

p. 151

Exercise 6.5 makes more sense if rho is 0.06 rather than 0.6 (an agent with a rate of time preference of 0.6 will borrow heavily in youth and have to work like a dog for the rest of his life to pay off his debts).

Chapter 7

p. 159

(1,0) and (a+1,s+1) are reversed in definition of g(a,s,x). Similarly p(0,0)-c and p(a,s+1)-k are reversed in definition of f(a,s,x).

p. 184 (6/17/04)

The second line should read
     S=(0:emax)’;
One should also add the line
     m=length(e);

p. 197 (2/17/05)

In the first three instances of V(:,:) the second argument should be 0 not 1. In the fourth instance it should be 1 not 0.

Chapter 8

p. 196 (12/18/08)

First two equations change K2 to K0

p. 209 (9/29/03)

Second equation, change subscript on f from i to p.

Chapter 9

p. 241 (10/24/03)

The first line of text should end with “the model parameters price, kbar, gamma and abar.

The second line of the first full paragraph should read:
“Here, the output price, long-run mean replacement cost, replacement cost mean reversion rate, maximum asset age, replacement cost shock standard deviation, and discount factor are specified, respectively:”

p. 244 (4/8/04)

In paragraph 2 the profit shock is incorrectly called a replacement cost shock.

p. 247

Change definition of shock distribution to

     [e,w] = qnwlogn(nshocks,-sigma^2/2,sigma^2);

p. 248 (11/21/2005)

Change computation of the LQ approximation to

     estar = 1;
     pstar = (sstar-xstar).^(-alpha);
     [vlq,xlq] = lqapprox(model,snodes,sstar,xstar,pstar);

In the second full paragraph, the words upward and downward are reversed.

p. 251

Change computation of the LQ approximation to

     pstar = kappa - xstar^(-gamma);
     [vlq,xlq] = lqapprox(model,snodes,sstar,xstar,pstar);

p. 257

Change definition of shock distribution to

     [e,w] = qnwlogn(nshocks,-sigma^2/2,sigma^2);

p. 258

Change computation of the LQ approximation to

     estar = 1;
     pstar = a(1);
     [vlq,xlq] = lqapprox(model,snodes,sstar,xstar,pstar);

p. 260 (12/15/08)

The diagonal elements of Sigma should be 0.04 rather than 0.4 (to make them consistent with the code on p. 261)

p. 261-262 (12/18/06)

We’ve listed seven things to do and enumerated them 1, 2, 3, 4, 4, 5 and 6 (nobody’s perfect).

p. 262

Change computation of the LQ approximation to

     pstar = [0 0];
     [vlq,xlq,plq,ss,xx,pp] = lqapprox(model,snodes,sstar,xstar,pstar);

p. 265

Change definition of shock distribution to

     [e,w] = qnwlogn(nshocks,-sigma^2/2,sigma^2);

p. 265 (10/25/05)


Change definition of upper bound for S to

     smax = [e(nshocks)  xstar+3.0];

p. 266

Change computation of the LQ approximation to

     estar = 1;
     pstar = [xstar^(1-beta) alpha*(xstar-1)];
     [vlq,xlq] = lqapprox(model,snodes,sstar,xstar,pstar);

p. 269

Change computation of the LQ approximation to

     pstar = [pbar xstar(1)/(1-delta*rho)];
     [vlq,xlq,plq,ss,xx,pp] = lqapprox(model,snodes,sstar,xstar,pstar);

p.272 (7/27/05)

Change
     model.T=T;
 to
     model.horizon=T;

p. 281

In case ‘f1’ after line fxx=zeros(n,m,m) insert

     fxx(:,1,1) = zeros(n,1)-gamma(2);

In case ‘f2’ after line fxx=zeros(n,m,m) insert

     fxx(:,2,2) = zeros(n,1)-gamma(2);

p. 284

Change last 4 lines with the following 6 lines

     gx(:,1,:) = [(1-psi)*g1x psi*g2x];
     gxx(:,1,1,1) = (1-psi)*g1xx;
     gxx(:,1,2,2) = psi*g2xx;
     g(:,2) = (1-psi)*g2 + psi*g1;
     gx(:,2,:) = [psi*g1x (1-psi)*g2x];
     gxx(:,2,1,1) = psi*g1xx;

p. 288

In case ‘f1’ replace fx and fxx lines with

     fx = [px.*q1-p-kappa px.*q1];
     fxx = zeros(n,m,m);
     fxx(:,1,1) = pxx.*q1 - 2*px;
     fxx(:,1,2) = pxx.*q1 - px;
     fxx(:,2,1) = pxx.*q1 - px;
     fxx(:,2,2) = pxx.*q1;

In case ‘f2’ replace fx and fxx lines with

     fx = [px.*q2 px.*q2-p-kappa];
     fxx = zeros(n,m,m);
     fxx(:,1,1) = pxx.*q2;
     fxx(:,1,2) = pxx.*q2-px;
     fxx(:,2,1) = pxx.*q2-px;
     fxx(:,2,2) = pxx.*q2-2*px;

Chapter 10

p. 317 (4/13/09)

In the second and third equations the (r-δ) terms should be (r-δ-ν/2).

p. 322 (10/24/03)

Last line change V(S) to V(S,t).

p. 346 (12/18.06)

Fouth line from bottom change “change” to “charge”

p. 356

Fifth line of Section 10.5.3 change R+(S0,S0) to R+(S0,S1)

Chapter 11

p. 379

The syntax of finsolve changed to eliminate A and a outputs

Also first line of the last code fragment should be:

     out = func(flag,s,additional parameters)

(no t in argument list)

p. 381

Add following line at the top of the first code fragment:

     a = b;

Alternatively change last line on p. 380 to:

     if hasdiv, a = Phii*delta; end

p. 382 (4/13/09)

The lines
     case 'sigma'
       out = sigma;


should be
     case 'sigma'
       out = sigma*S;

p. 429 (10/6/2005)

In equation in last full paragraph change +˝σ2 to -˝σ2

 

Appendix A

p. 459

On line 9 change y to x. Also in the definition of a norm ||x||=0 if and only if x=0.

p. 464 (1/1/05)

The definition of the inf norm is incorrect. It should be maxij|Aij|

p. 471 (1/24/06)
The two equations at the bottom of the page both should have a 2 following the integral signs.

Appendix B

p. 477

Last paragraph change 2x1 to 1x2

p. 482 (4/3/05;1/24/06)

9 lines from bottom change x to X
3 lines from botton change “<” to “>”
This code fragment is, in fact, rather stupid. A more interesting fragment (and probably what was intended) is:
     P=.25;
     X=0;
     DX=5;
     while DX>1E-7;
      DX=DX/2;
      if cdfn(X)>P, X=X-DX; else X=X+DX; end
      disp(X)
     end
This computes the 25th pecentile of a standard normal distribution (cdfn is available in the CompEcon Toolbox).