Corrections and clarifications to the text of the printed version of 2nd edition of the book appear here.
p. 41 (P2.3.2) The comment in the definition of the constant $G$ indicates incorrect units:
G = 6.6743e-11 # J/K
should be
G = 6.6743e-11 # Nm^2/kg^2
p. 90 (E3.2) There is a missing minus sign in the inequality defining the plot range for the sinc function, which should be $-20 \le x \le 20$.
p. 125 (P.4.2.2) In the traditional formulation of Zipf's law, the constant $C$ is defined through $\log C = \log(w_1)$, instead of $C = \log(w_1)$.
p. 125 (P4.2.4) The Morse code example translating to 'PYTHON 3'
in this exercise should be: '.--. -.-- - .... --- -. / ...--'
. Thanks to Alisa Crowe for pointing out this typo.
p.162 (Example E4.19, Listing 4.8) The linspace
function lives in the numpy
package, not the pyplot
module:
r = plt.linspace(0,200,1000)
should be replaced with
r = np.linspace(0,200,1000)
and NumPy imported at the start of the program with
import numpy as np
p. 309 (Example E7.6) In the second call to plt.errorbar
one of the arguments escaped the close parenthesis:
... mfc='k', mec='k'), capsize=3
should read
... mfc='k', mec='k', capsize=3)
p. 345 (Example E7.24) This comment line in Listing 7.25 is incorrect:
# Initial conditions - ring of inner radius r, width dr centred at (cx,cy) (mm)
should read:
# Initial conditions - circle of radius r centred at (cx,cy) (mm)
p.366 (Example E8.4) The import
import matplotlib.pyplot as plt
is not necessary in this code example.
p.368 (Example E8.5) The linspace
function lives in the numpy
package, not the pyplot
module. The following lines:
ax = plt.linspace(-5, 5, 1000)
ax2 = plt.linspace(1, 6, 6)
should be replaced with
ax = np.linspace(-5, 5, 1000)
ax2 = np.linspace(1, 6, 6)
p.385 (Example E8.14) The lambda
function defining the lower limit of the $z$ integral should take arguments x, y
, not x, vy
(though since this lower limit is a constant (0), neither argument is used and the code will run correctly as it is.
p.400 (Example E8.18) The term $-mg$ in the formula for $\dot{u}_4$ should be simply $-g$ in the text before Listing 8.14. The code is correct.
p.469 The description of the thresh
argument to the pandas.dropna
function is incorrect: a row or column is not dropped if it contains at least thresh
NaN values; rather, it is dropped if it does not contain at least that number of non-NaN values. By coincidence, this is the same thing for the example given, but the difference can be seen by dropping rows:
In [x]: df
Out[x]:
A B C D
0 1.1 NaN NaN 10.3
1 0.8 NaN 3.6 2.9
2 1.2 2.5 1.6 2.7
3 NaN NaN NaN NaN
4 NaN NaN 3.6 5.3
In [x]: df.dropna(thresh=3, axis=0)
Out[x]:
A B C D
1 0.8 NaN 3.6 2.9
2 1.2 2.5 1.6 2.7
Rows 0, 3 and 4 are dropped because they contain fewer than thresh=3
valid entries.
Many thanks to Andre Nepomuceno for pointing this out.
p.479 (P9.4.2) The value for the reference viscosity to use is $\eta_0 = 1.869 \times 10^{-5}\;\mathrm{kg\,m^{-1}\,s^{-1}}$.
p. 267 (E6.16): tranformation $\rightarrow$ transformation
p. 286 (P6.6.3): bactrium $\rightarrow$ bacterium