`--> `
Errata

List by Page No.

p.13 P1.1.52010/09/19 - In the example below the table of formulae, the divisor for calculating
`Vol20`

should be 12, not 4.Vol20 = ((15 + 5*sqrt(5))/12)*E^3;

pp.17-19 Code fragments`%Solution1`

,`%Solution2`

,`%Solution3`

2011/08/31 - In each fragment, the caluclation of
`xc`

should be done*outside*the`if`

statement. The complete script`Eg1_2`

given on page 20 is correct.

p.43 P2.2.72010/02/10 - The given sine and cosine values are switched around. The correct values are
cos(pi/3)=1/2; sin(pi/3)=sqrt(3)/2; sin(2*pi/3)=sqrt(3)/2;

p.48-50 and`Eg3_1`

2012/02/13 - The development of the program to calculate the "best" p/q is unnecessarily
complicated. The variable
`e0`

for intermediate "best" error, the variable`p0`

for intermediate "best" p, and the statements associated with these variables are not necessary. Just updating`err_pq`

,`pBest`

, and`qBest`

directly everytime after finding a smaller error is all that is necessary. The resulting simpler code is posted on the Software page as`SimplerEg3_1.m`

.

p.60 P3.2.62014/03/17 - In the second last sentence, the final term in the sequence to display
is
*B(m,*, not**r**)*B(m,m)*.

p.60 P3.2.72014/03/17 - Develop a program that prints
. Start at**t0**, t1, ..., t26, not**t0***t1*.

p.70 and`Eg4_1`

2014/03/17 - The script comment and the title statement of the plot contain an error:
the argument to the function
`exp`

should be**-**x/2, not x/2. The code for the calculation of the function value is correct though. The file`Eg4_1.m`

posted on the Software page has been corrected.

p.71 Second last code fragment2011/10/27 - One of the vector indices shown is wrong for replacing the statement
`x(2) = x(3) + x(4)`

. The correct fragment should be

`i = 1;`

`x(`

**i+1**) = x(i+2) + x(i+3);

and not`x(i) = x(i+2) + x(i+3)`

p.72 First code fragment2011/10/27 - The last statement should assign the value
**30**to`x(4)`

, not the value 35.

p.81 First code fragment2011/10/27 - In the second call to the
`fill`

function, there should be a comma to separate the arguments`y+1`

and the color vector, like this:

`fill(x,y+1,[0.4 0.6 1.0])`

p.141 Second line on the page2011/08/30 - The built-in function used should be
`all`

, not`any`

. That is, the value of`all(x < y)`

is 1 if and only if`x(k) < y(k)`

for every subscript`k`

.

p.142 P6.1.182014/10/02 - The stopping condition of the game "Gap N" is the difference between
the number of heads and the number of tails being N. However, the expression
given below the example sequence was wrong. It should read
|#
**tails**- #heads| and not |#tosses - # heads|.

p.181 Last paragraph2022/05/09 **Eight**perfect shuffles are needed to restore an ordinary deck of playing cards. The typo in the last paragraph stated seven cards. The script`Eg8_1`

gives the correct result, as shown on Figure 8\_1 on the next page.

p.183 Last sentence in**Problem Statement**section2012/03/13 - The deck sizes should be
*n*= 2:2:**60**(not 2:2:100) in order to match the code in`Eg8_1`

.

p.189 Code block near the bottom of the page2011/05/10 - The boolean expression for the
`if`

statement should bex(k+1) < x(k)

and not`x(k+1) < x(x)`

.

p.241 Function`ShowRect`

2012/11/10 - The vector arguments to the
`plot`

function should have length**5**, not 4, since it is necessary to "wrap around" to the first vertex in order to draw a closed rectangle. The original code draws a sideways 'U' only, missing one edge of the rectangle. Here is the correct call to the`plot`

function:plot([R.left R.right R.right R.left R.left],... [R.bot R.bot R.top R.top R.bot], 'k','Linewidth',2)

p.269 Code block near the top of the page2010/01/24 - The loop body is missing the statement
`s = C{k}`

; The loop should be

for k=1:length(C)

s = C{k};

P(k) = str2num(s(67:75)); Lat(k) = str2num(s(137:146)); Long(k) = str2num(s(147:157)); end

p.341 Last sentence before Figure 14.72014/03/03 - The top node is the root node while the
**81**(not 27) nodes across the bottom are leaf nodes.

p.342 P14.1.32011/05/10 - Part (b) of the problem statement should read "... then the reverse of s is
the concatenation of the reverse of s(
**2:n**) and s(1) in that order." The subvector was incorrectly specified as s(1:n-1).

List by Date

p.181 Last paragraph2022/05/09 **Eight**perfect shuffles are needed to restore an ordinary deck of playing cards. The typo in the last paragraph stated seven cards. The script`Eg8_1`

gives the correct result, as shown on Figure 8\_1 on the next page.

p.142 P6.1.182014/10/02 - The stopping condition of the game "Gap N" is the difference between
the number of heads and the number of tails being N. However, the expression
given below the example sequence was wrong. It should read
|#
**tails**- #heads| and not |#tosses - # heads|.

p.60 P3.2.62014/03/17 - In the second last sentence, the final term in the sequence to display
is
*B(m,*, not**r**)*B(m,m)*.

p.60 P3.2.72014/03/17 - Develop a program that prints
. Start at**t0**, t1, ..., t26, not**t0***t1*.

p.70 and`Eg4_1`

2014/03/17 - The script comment and the title statement of the plot contain an error:
the argument to the function
`exp`

should be**-**x/2, not x/2. The code for the calculation of the function value is correct though. The file`Eg4_1.m`

posted on the Software page has been corrected.

p.341 Last sentence before Figure 14.72014/03/03 - The top node is the root node while the
**81**(not 27) nodes across the bottom are leaf nodes.

p.241 Function`ShowRect`

2012/11/10 - The vector arguments to the
`plot`

function should have length**5**, not 4, since it is necessary to "wrap around" to the first vertex in order to draw a closed rectangle. The original code draws a sideways 'U' only, missing one edge of the rectangle. Here is the correct call to the`plot`

function:plot([R.left R.right R.right R.left R.left],... [R.bot R.bot R.top R.top R.bot], 'k','Linewidth',2)

p.181 Last sentence in**Problem Statement**section2012/03/13 - The deck sizes should be
*n*= 2:2:**60**(not 2:2:100) in order to match the code in`Eg8_1`

.

p.48-50 and`Eg3_1`

2012/02/13 - The development of the program to calculate the "best" p/q is unnecessarily
complicated. The variable
`e0`

for intermediate "best" error, the variable`p0`

for intermediate "best" p, and the statements associated with these variables are not necessary. Just updating`err_pq`

,`pBest`

, and`qBest`

directly everytime after finding a smaller error is all that is necessary. The resulting simpler code is posted on the Software page as`SimplerEg3_1.m`

.

p.81 First code fragment2011/10/27 - In the second call to the
`fill`

function, there should be a comma to separate the arguments`y+1`

and the color vector, like this:

`fill(x,y+1,[0.4 0.6 1.0])`

p.71 Second last code fragment2011/10/27 - One of the vector indices shown is wrong for replacing the statement
`x(2) = x(3) + x(4)`

. The correct fragment should be

`i = 1;`

`x(`

**i+1**) = x(i+2) + x(i+3);

and not`x(i) = x(i+2) + x(i+3)`

p.72 First code fragment2011/10/27 - The last statement should assign the value
**30**to`x(4)`

, not the value 35.

pp.17-19 Code fragments`%Solution1`

,`%Solution2`

,`%Solution3`

2011/08/31 - In each fragment, the caluclation of
`xc`

should be done*outside*the`if`

statement. The complete script`Eg1_2`

given on page 20 is correct.

p.141 Second line on the page2011/08/30 - The built-in function used should be
`all`

, not`any`

. That is, the value of`all(x < y)`

is 1 if and only if`x(k) < y(k)`

for every subscript`k`

.

p.342 P14.1.32011/05/10 - Part (b) of the problem statement should read "... then the reverse of s is
the concatenation of the reverse of s(
**2:n**) and s(1) in that order." The subvector was incorrectly specified as s(1:n-1).

p.189 Code block near the bottom of the page2011/05/10 - The boolean expression for the
`if`

statement should bex(k+1) < x(k)

and not`x(k+1) < x(x)`

.

p.13 P1.1.52010/09/19 - In the example below the table of formulae, the divisor for calculating
`Vol20`

should be 12, not 4.Vol20 = ((15 + 5*sqrt(5))/12)*E^3;

p.43 P2.2.72010/02/10 - The given sine and cosine values are switched around. The correct values are
cos(pi/3)=1/2; sin(pi/3)=sqrt(3)/2; sin(2*pi/3)=sqrt(3)/2;

p.269 Code block near the top of the page2010/01/24 - The loop body is missing the statement
`s = C{k}`

; The loop should be

for k=1:length(C)

s = C{k};

P(k) = str2num(s(67:75)); Lat(k) = str2num(s(137:146)); Long(k) = str2num(s(147:157)); end