a_n = a_n(... => a_n = a(...
(v(t + Dt) - v(t)) => (v(t) - v(t- Dt))
! print column of data => ! input column of data
(see Program mouse) and SUB Euler ... Problem 4.7. Choose
(see Program mouse and SUB EulerRichardson ... Problem 4.7). Choose'
Note the space between y and *.y *= ++x; */
The correction should read: "All currently known methods for determining the optimal route require a computing time that ... The abbreviation NP (nondeterministic polynomial) refers to the problems that can be verified in polynomial time. It is conjectured that such problems cannot be solved in polynomial time."
Page 56, line before Eq. (3.22). Replace ... second-order in (D t)2: by ... second-order in (D t):
Page 67. Exercise 4.3, line 5. Replace If list(2) < list(1) ... by If list(2) < order(1) ...
Page 87. Problem 4.12b, line 2. Replace delta = 20 by dtheta = 20
Page 89. Project 4.2c, last line. Replace -2GMm/E by -GMm/2E
Page 191. Problem 7.4a, line 2. "Choose a reasonable value for <n>
Page 202. Replace N by n in Eq. (7.24).
Page 210. First line after Eq. (7.37). Replace ... used to obtain (7.37) in known as by ... used to obtain (7.37) is known as
4/2/99. Emily Clark found a typo in the molecular dynamics program in Chapter 8, page 223. A corrected program is available.
Page 236. The code given at top of the page is for a square lattice rather than a triangular lattice. The correct code for the triangular lattice follows:
LET nx = sqr(N)
LET ny = nx
LET ax = Lx/nx
LET ay = Ly/ny
LET i = 0
FOR col = 1 to nx
FOR row = 1 to ny
LET i = i + 1
IF(mod(row,2) = 0) then
LET x(i) = (col - 0.75)*ax
ELSE
LET x(i) = (col - 0.25)*ax
END IF
LET y(i) = (row - 0.5)*ay
NEXT row
NEXT col
Page 260. Problem 8.18b, line 5. Replace (This by This
Page 274. Problem 9.1c. replace uj = cos(...) by uj = sin(...)
Page 282, line 1. Replace ((1/2)N - k) by (k - N)
Page 282, line 2. Replace g(-k) = g(k) by g(-k) = g*(k) (* stands for complex conjugate.)
Page 400. n should be replaced by N in the last term in Eq. (12.31).
Page 416. The three figures in Fig. 13.3 should be labeled (a), (b) and (c) respectively.
Page 443. Problem 13.12, line 7. Replace Hoes by How
Page 514, paragraph 2, line 4. Replace mod(int(A/2i^N),2) by mod(int(A/2^N),2). Also replace nth bit by Nth bit.
Page 519, line 8. Replace h(i+1) = h(i) + 1 by h(i+1) = h(i+1) + 1
Page 520. In SUB initial, replace FOR topple = 0 to 20 by FOR topple = 0 to L
Page 589. Problem 17.12a, line 4. Replace Problem 17.17d by Problem 17.7d
Page 593. Problem 17.15a, line 6. Replace mod(x,2) x mod(y,2) = 1 by mod(x+y,2) = 0
Page 598. Problem 17.17f, line 4. Replace in part (a) by in part (b)
Page 617. Project 17.4a, lines 6, 7. Replace than compute ... by then compute
Page 628: paragraph 3, line 5. replace specify Np by specify pN
Page 644: Problem 18.10g, line 1 after equation. Replace the exact ground state by the exact ground state energy
2/17/98. Rongfeng Sun found that function arctan on page 86 should be replaced by
An even easier way is to use the angle function. ANGLE(x,y) returns the counterclockwise angle between the positive x-axis and the point (x,y). OPTION ANGLE degrees should be used.
FUNCTION arctan(x,y)
! convert -pi/2 to pi/2 radians to 0 to 180 degrees
IF x > 0 then
LET theta = atn(abs(y/x))
ELSE IF y > 0 then
LET theta = atn(y/x) + pi
ELSE
LET theta = pi - atn(y/x) ! corrected from text
END IF
LET arctan = theta*180/pi
END DEF
1/29/98. S. K. Foong points out that the changes explained at the top of page 638
are not implemented in the program. Below is an implementation:
FOR i = 1 to n
LET x = xmin + (i - 1)*dx
LET arg = 0.25*(x - x0)^2/delta2
LET arg2 = 0.25*(x - x0 -0.5*k0*dt)^2/delta2
LET e = exp(-arg)
LET e2 = exp(-arg2)
LET Re(i) = A*cos(k0*(x - x0))*e ! value at t = 0
LET Im(i) = A*sin(k0*(x - x0 - 0.5*b))*e2 ! value at t = dt/2
NEXT i
1/13/98. S. K. Foong has kindly informed us of the following typos:
Page 636, Eq. (18.21b): replace R(x,t) by R(x,t+ Delta t).
5/28/97. Yingzi Wang found that the discussion on pp. 423-424 on ns and its various moments refers to an old Fig. 13.3. The corrected values of ns for p = 0.2 for Fig. 13.3 in the text are ns(1) = 20, ns(2) = 4, ns(3) = 5, and ns(7) = 1. From these results we have ws(1) = 20/50, ws(2) = 8/50, ws(3) = 15/50, and ws(7) = 7/50, and hence S = 130/50. Similarly, P(p=0.6) = 121/135 corresponding to Fig. 13.3b (not Fig. 13.3c).
2/27/97. Apurba Pradhan has pointed out a typo on the second line of pg. 68 which should read: For example, an increase in a from 0.24 to 1, ...
2/11/97. Emily Clark has pointed out that the reference to Program vector_product in Exercise 4.1, pg. 66 should be to Program vector.
1/30/97. Yingzi Wang has pointed out that Program simple_map in Chapter 2 passes two parameters, a and b, that are not used in the main program or in the only subroutine. The program has been corrected. A spelling error in a comment in Program series_test has also been corrected.
1/9/97. The variable t was added to the list of variables passed in SUB scope of Program rc (pages 114-115). A typo in SUB force of Program scatter has also been corrected. Thanks to Roger Cowley, Department of Physics, Camden College of Arts and Sciences, Rutgers University, Camden, NJ 08102.
1/9/97. On page 140, line 22, (including x = 1) should be replaced by (including c = 0).
1/7/97. Phil Lockett of Centre College in Danville, Kentucky has pointed out the following corrections and clarifications:
The Euler-Richardson method described in Eqs. (5.40-5.41) and the second-order Runger-Kutta algorithm described in eqs. (5.51)-(5.53) are identical.
The phrase "point probability" on page 362 should be "joint probability."
11/24/96. S. K. Foong has kindly informed us of the following typos:
pg. 40, second line after Eq. (3.8b). Replace forms (3.10) by forms (3.8).
pg. 40, one line before Eq. (3.10). ... We can use (3.8) and (3.9) to write Fd
pg. 42, two lines above Eq. (3.14a):. Replace new position xn+1 by new position yn+1.
pg. 74. In Problems 4.6 and 4.7, the references to part (a) and (b) of Fig. 4.4 are reversed.
04/29/96. SUB change in Program ideal in Chapter 16 has been corrected so that the accumulation of the demon and system energies is done after each Monte Carlo step per particle as stated in the program. (The published version in the text incorrectly accumulated the energy after each particle.) We thank Hongmao Sung for finding this error.
04/03/96. Use of black and white. The colors "black" and "white" are handled differently on the Macintosh and IBM PC compatibles in True BASIC. In particular, the default background color on the Macintosh and IBM PC compatibles is white and black, respectively. All the programs were tested on the Macintosh and most were tested on MS-DOS. If you have trouble with black/white on the latter, either use SET BACKGROUND "black" or use colors different than black and white.
03/06/96. A typo in a comment statement has been corrected in Program graph_sol in Chapter 6. We thank Anil Tuladhar for calling this typo to our attention.
12/21/95. The calculation of the virial in Program md in Chapter 8 was corrected thanks to a suggestion by Len Sander of the University of Michigan.
12/05/95. A typo was corrected in Program ising.c in Appendix B which affected the calculation of the initial energy. We thank Jon Machta and his students for bring this typo to our attention.
09/11/95. Program ising in Chapter 17 differs slightly from the code listed in the text.
09/01/95. Program koch in
Chapter 14 was revised so that distances shown on the screen
are the same in both the vertical and horizontal directions.
Page 30. Program simple_map passes two parameters, a and b, which are not used in the main program or in the only subroutine. corrected program.
Page 40, second line after Eq. (3.8b). Replace forms (3.10) by forms (3.8).
Page 40, one line before Eq. (3.10). ... We can use (3.8) and (3.9) to write
Fd in ...
Page 42, two lines above Eq. (3.14a):. Replace new position xn+1 by new position yn+1.
Page 52. In SUB draw_axes the line
LET y0 = max(0,ymin) should be removed because the next few lines define y0.
Page 56, line before Eq. (3.22). Replace ... second-order in (D t)2: by ... second-order in (D t):
Page 66. The reference to Program vector_product in Exercise 4.1 should be to Program vector.
Page 67. Exercise 4.3, line 5. Replace If list(2) < list(1) ... by If list(2) < order(1) ...
Page 68. Second line should read: For example, an increase in a from 0.24 to 1, ...
Page 74. In Problems 4.6 and 4.7, the references to part (a) and (b) of Fig. 4.4 are reversed.
Page 84. A typo in SUB force of Program scatter has been corrected. corrected program.
Page 86. The function arctan on page 86 should be replaced by
Page 87. Problem 4.12b, line 2. Replace delta = 20 by dtheta = 20
Page 89. Project 4.2c, last line. Replace -2GMm/E by
-GMm/2E
Pages 114-115. The variable t was added to the list of variables passed in SUB scope of Program rc. corrected program.
Page 122. The Euler-Richardson method described in eqs. (5.40-5.41) and the second-order Runger-Kutta algorithm described in eqs. (5.51)-(5.53) are identical.
Page 125. Denis Donnelly has found two typos in the Runge-Kutta discussion on p. 125:
Page 138. A typo in a comment statement has been corrected in Program graph_sol in Chapter 6. corrected program
Page 140. line 22, (including x = 1) should be replaced by (including c = 0).
Page 191. Problem 7.4a, line 2. "Choose a reasonable value for <n>
Page 202. Replace N by n in Eq. (7.24).
Page 210. First line after Eq. (7.37). Replace ... used to obtain (7.37) in known as by ... used to obtain (7.37) is known as
Page 222-223. The calculation of the virial in Program md was
corrected by replacing
Page 236. The code given at top of the page is for a square lattice rather than a triangular lattice. The correct code for the triangular lattice follows:
Page 260. Problem 8.18b, line 5. Replace (This by This
Page 274. Problem 9.1c. replace uj = cos(...) by uj = sin(...)
Page 282, line 1. Replace ((1/2)N - k) by (k - N)
Page 282, line 2. Replace g(-k) = g(k)
by g(-k) = g*(k) (* stands for complex
conjugate.)
Page 362. Replace the phrase "point probability" by "joint probability."
Page 403. The equation on
the second line from the bottom should read "\chi^2 \approx M, not "less than
or equal to." Page 416. The three figures in Fig. 13.3 should be labeled (a), (b) and (c) respectively.
Pages 423-424. The discussion of ns and its various moments refers to an old Fig. 13.3. The corrected values of ns for p = 0.2 for Fig. 13.3 in the text are ns(1) = 20, ns(2) = 4, ns(3) = 5, and ns(7) = 1. From these results we have ws(1) = 20/50, ws(2) = 8/50, ws(3) = 15/50, and ws(7) = 7/50, and hence S = 130/50. Similarly, P(p=0.6) = 121/135 corresponding to Fig. 13.3b (not Fig. 13.3c).
Page 443. Problem 13.12, line 7. Replace Hoes by How
Page 462. Program koch in
Chapter 14 was revised so that distances shown on the screen
are the same in both the vertical and horizontal directions.
Page 514, paragraph 2, line 4. Replace mod(int(A/2i^N),2) by
mod(int(A/2^N),2). Also replace nth bit by Nth bit.
Page 519, line 8. Replace h(i+1) = h(i) + 1 by
h(i+1) = h(i+1) + 1
Page 520. In SUB initial, replace FOR topple =
0 to 20 by FOR topple = 0 to L
Page 548. SUB change in Program ideal has been corrected so that the accumulation of the demon and system energies is done after each Monte Carlo step per particle as stated in the program. (The published version in the text incorrectly accumulated the energy after each particle.)
Page 575-579. Program ising differs slightly from the code listed in the text.
Page 589. Problem 17.12a, line 4. Replace Problem
17.17d by Problem 17.7d
Page 593. Problem 17.15a, line 6. Replace
mod(x,2) x mod(y,2) = 1 by
mod(x+y,2) = 0
Page 598. Problem 17.17f, line 4. Replace in part
(a) by in part (b)
Page 607. Paragraph beginning with "Suppose that a
salesperson ... " Macneil Shonle points out that the statement "All
exact methods for determining the optimal route require a computing
time that ... (The NP refers to non-polynomial, that is, such
problems that cannot be done in a time proportional to some finite
polynomial in N.)" is incorrect, because it has not been proven that
P .NE. NP. Even if the two sets were unequal, the set of
non-polynomial problems is much larger than just NP.
The correction should read:
"All currently known methods for determining the optimal route
require a computing time that ... The abbreviation NP
(nondeterministic polynomial) refers to the problems that can be
verified in polynomial time. It is conjectured that such problems
cannot be solved in polynomial time."
Page 617. Project 17.4a, lines 6, 7. Replace than
compute ... by then compute
Page 628: paragraph 3, line 5. replace specify Np by specify
pN
Page 636. Replace R(x,t) by R(x,t+ Delta t) in Eq. (18.21b).
Page 637. Replace (m Delta x)2 by m (Delta x)2 in Eq. (18.23).
Page 638. The changes explained at the top of the page
are not implemented in the program. Below is an implementation:
Page 644: Problem 18.10g, line 1 after equation. Replace the exact
ground state by the
exact ground state energy
Page 696. Macneil Shonle found a typo in the sixth line of Example 4 which should be
Page 707. A typo was corrected in Program ising.c in Appendix B which affected the calculation of the initial energy.
Please send corrections and comments to Harvey Gould, hgould@clarku.edu, or
Jan Tobochnik,
jant@kzoo.edu.Sorted by page Number
An even easier way is to use the ANGLE function. ANGLE(x,y) returns the counterclockwise angle between the positive x-axis and the point (x,y). OPTION ANGLE degrees should be used. The function ANGLE is equivalent to the function atan2(x, y) in Fortran and C.
FUNCTION arctan(x,y)
! convert -pi/2 to pi/2 radians to 0 to 180 degrees
IF x > 0 then
LET theta = atn(abs(y/x))
ELSE IF y > 0 then
LET theta = atn(y/x) + pi
ELSE
LET theta = pi - atn(y/x) ! corrected from text
END IF
LET arctan = theta*180/pi
END DEF
Equation (5.59a) is missing Dt at the end
Equation 5.59b has a k3x instead of k3v
by
LET virial = virial + dx*ax(i) + dy*ay(i)
LET virial = virial + dx*fxij + dy*fyij
LET nx = sqr(N)
LET ny = nx
LET ax = Lx/nx
LET ay = Ly/ny
LET i = 0
FOR col = 1 to nx
FOR row = 1 to ny
LET i = i + 1
IF(mod(row,2) = 0) then
LET x(i) = (col - 0.75)*ax
ELSE
LET x(i) = (col - 0.25)*ax
END IF
LET y(i) = (row - 0.5)*ay
NEXT row
NEXT col
FOR i = 1 to n
LET x = xmin + (i - 1)*dx
LET arg = 0.25*(x - x0)^2/delta2
LET arg2 = 0.25*(x - x0 -0.5*k0*dt)^2/delta2
LET e = exp(-arg)
LET e2 = exp(-arg2)
LET Re(i) = A*cos(k0*(x - x0))*e ! value at t = 0
LET Im(i) = A*sin(k0*(x - x0 - 0.5*b))*e2 ! value at t = dt/2
NEXT i
Note the space between y and *.
y *= ++x; */