**Errata for Miranda and Fackler
Applied Computational Economics and Finance **

**Last Updated: ****Wednesday, March 07, 2012**

As of

**Chapter 2**

**p. 13 ( 9/29/03)**

Replace

Backward
and forward substitution yield the theoretical results *x*_{1}=1-*M*^{-1}
and *x*_{2}= *M*^{-1}+1+*M*-1(1-*M*^{-1}).

with

Backward
and forward substitution here yield the results *x*_{2}=(1+2*M*^{-1})/(1+*M*^{-1}) and *x*_{1}=2-*x*_{2}.

**Chapter 4**

**p. 60 (12/18/06)**

Second paragraph of Section 4.1 change *f*(*x*_{1})<*f*(*x*_{2})
to *f*(*x*_{2})<*f*(*x*_{1})

**Chapter 5**

**pp. 93 (1/26/08)**

Replace

*p _{j}*
represents the

with

**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

{(*x*_{1},*x*_{2})| -1 < *x*_{1}
< 2, 4 < *x*_{2} < 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 *K*_{2}*K*_{0}

**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^{+}(S_{0},S_{0})
to R^{+}(S_{0},S_{1})

**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 -

**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 **max_{i} ∑_{j}|A_{ij}|**

**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 25