「C & Fortran 演習で学ぶ数値計算」 読者のページ

本ページは、片桐孝洋、大島聡史 共著、「C&Fortran 演習で学ぶ数値計算」、共立出版 (2022年3月19日出版) の、正誤表と情報交換のページです。
この度は本書をお買い上げ、誠にありがとうございました。著者一同、御礼申し上げます。

初版における、現在把握している誤り、修正点、情報は、以下になります。ご迷惑をお掛けして、申し訳ございません

-------------------------------------

●2022年4月21日:
配布中のFortran90コードについて、GNU gfortran以外のコンパイラ(Intelコンパイラ、富士通コンパイラ)でもコンパイル可能なコードを配布中です。また、以下のコード上の誤りのいくつかを修正しています。詳しくは、出版社のページのPDFをご覧ください。


●現在判明の正誤表について
・pp. 9 のdouble型説明文
【誤】 ・・・ × ^{指数部-1023} ×・・・
【正】 ・・・ × 2^{指数部-1023} ×・・・  

・pp. 12、式(1.5)の分子
【誤】 - 2 a
【正】 - 2 c

・pp. 21、ソースコードC1.4、12行目
【誤】 x = (-2.0 * a) / ・・・
【正】 x = (-2.0 * c ) / ・・・

・pp. 22、ソースコードF1.4、10行目
【誤】 x = (-2.0 * a) / ・・・
【正】 x = (-2.0 * c ) / ・・・

・pp. 22、実行結果
Cの出力例:
【誤】
 Improved x = -3.333333e-31
 a x*x + b x + c = 1.000000e-15
【正】
 Improved x = -6.666667e-31
 a x*x + b x + c = 0.000000e+00


Fortranの出力例も、上記と同様の誤りがあります。

・pp. 40 の 式 (3.9)
【誤】 ・・・ \sum_{ k = 0}^N
【正】 ・・・ \sum_{ j = 0}^N

・pp. 44 の 式 (3.12)
【誤】 ・・・ + d
【正】 ・・・ + d_ j

・pp. 49 の 式 (3.36)とその下の式
【誤】 ・・・式中の y_i
【正】 ・・・          y_j

・pp. 49 の 式 (3.40)の下の節
【誤】 ・・・ スカラ \sum_{i=1}^{M} a_i^* を求めることができる.
【正】 ・・・ スカラ a_i^*, i = 1, 2, ..., M を求めることができる.

・pp.62 のソースコードC35(続き)
【追加】 47行、48行の間 u[N]=0.0;

・pp.64のソースコードF3.5(続き)
【追加】 53行、54行の間 u(N) =0.0

・pp.72の5行目
【誤】 T_0 = (b-a) / (f(a)+ ...
【正】 T_0 = (b-a) * (f(a)+ ...

・pp. 75 の 1行目
【誤】 ・・・ ただし,S_{n+1} は
【正】 ・・・ ただし,S_n

・pp. 118 の式(6.12)
【誤】 ・・・ -ωA_U)
【正】 ・・・ -ωA_U) / ω

・pp. 118 の式(6.13)
【誤】 ・・・ + b
【正】 ・・・ + ω b

・pp. 119 の式(6.14)
【誤】 ・・・ + (b_1, b_2, ..., b_n)^T
【正】 ・・・ + ω (b_1, b_2, ..., b_n)^T

・pp. 120 の 式(6.16)
【誤】 ・・・ = M^{-1} N e_k
【正】 ・・・ = M^{-1} N e_{k-1}

・pp. 120 の 式(6.16)の下
【誤】 k = 0, 1, ...., k-1
【正】 k は k-1, k-2, ..., 0

・pp. 124 の 式(6.30)
【誤】 A_k = R_k Q_k
【正】 A_k = Q_k R_k

・pp. 124 の 式(6.31)
【誤】 A_{k+1} = Q_k R_k
【正】 A_{k+1} = R_k Q_k

・pp. 123 の アルゴリズム6.4
【誤】 9行目: xを正規化して x = y;
【正】 9行目: yを正規化して x = y;

・pp. 131 の 式(6.48)
【誤】 Q = H_{n-1} ... H_2 H_1
【正】 Q^T = H_{n-1} ... H_2 H_1

・pp. 131 の下から2行目
【誤】 したがって,QA=Rとなり,A=Q^T Rである。ここで、Q^T=Qである。
【正】 したがって,Q^T A=Rとなり,A=(Q^T)^{-1} Rである。ここで、Q^-1=Q^Tである。

・pp. 164 の 式(7.2)
【誤】 lim_{h→∞}
【正】 lim_{h→0}

・pp.165、式(7.9)
【誤】 ・・・ + h f (x_i, y_i )
【正】 ・・・ + h f (x_{i-1}, y_{i-1})

・pp. 172、 式(7.22)
【誤】  ・・・ = y^(1) (x_{i-1}) + h f_1 (x_i, y_i^{(1)}, y_i^{(2)})
【正】  ・・・ = y_i ^(1) (x_{i-1}) + h f_1 (x _{i-1}, y_i^{(1)}(x_{i-1}), y_i^{(2)}(x_{i-1}))

・pp. 175、 下から2行目
【誤】  ・・・ を値を
【正】  ・・・ 値を

pp.203の8行目
【誤】 要点を抑える
【正】 要点をさえる


●その他の情報
・pp. 10 (例)の説明の後、以下の文章を追加:
 「なお,以上の例ではαを∞とおいている点に注意する.ランダウの記号は,αを-∞や+∞とおいて利用されることが多い.

・pp.21-22の問題2.1の修正(上記のpp.12の式(1.5)の誤り)をしたコードが提供されています(2022年3月28日現在)。

・pp. 44 、下から2行目
原文: 以上を u_{j+1} とおくと・・・
追加: 式(3.20) を u_{j+1} とおくと・・・

・pp.192-193 のソースコード C7.4 7_4_PoissonGS.f、 および pp.194-195 ソースコード F7.4 7_4_PoissonGS.f
   ローカル変数dmaxを初期化せずに用いていますが、実際には適当な数値(1.0 など)での初期化が必要です。
また、関数CalcErrは初回は実行不要のため if ( i > 0 ) などの条件分岐が必要です。
いずれもWebで配布しているソースコードでは修正済です。


--------------------------------------
更新日時: 2025年5月27日