弊社出版書籍『Javaで学ぶコンピュータ数学』本文中に誤りがありました。お詫びして訂正いたします。
追加の訂正があります。こちらを参照してください→ 『Javaで学ぶコンピュータ数学』正誤表2
「誤」 Kaijyou15.java
「正」 Kaijyou15_1.java
「誤」 次のようにすると、15がfloat型になります。
「正」 次のようにすると、15がdouble型になります。
「誤」 破堤
「正」 破綻
「誤」 cardinal number または 底(base or radix)
「正」 radix または base(底)
cardinal numberは、別の概念を示す言葉です。例えば、(1)個数を表す語、(2)濃度=カーディナル数の意味があります。ですので、記数法や基数変換にあたって用いる基数という言葉の正しい訳語はradix、あるいはbase(底)です。
「誤」 符号ビット *22
「正」 最上位のひと桁 *22
脚注*22が「符号ビット」に付いているが、これは7文字前の「最上位のひと桁」の脚注です。そして、「符号ビット」の脚注に「正」sign bitを追加します。
「誤」 指数部は、小数点の移動が左へ9桁だったため、+10+127=137。136を2進数に変換すると、
「正」 指数部は、小数点の移動が左へ10桁だったため、+10+127=137。137を2進数に変換すると、
ネイピア数2.7182を入力するところを2.7128と打ち間違えていました。
「誤」
10 進数値を入力して下さい。>2.7128
[int](0x2)H
[long](0x2)H
[float](0x402d9e84)H
[double](0x4005b3d07c84b5dd)H
「正」
10 進数値を入力して下さい。>2.7182
[int](0x2)H
[long](0x2)H
[float](0x402df6fd)H
[double](0x4005bedfa43fe5c9)H
記号^はべき乗の意味です。2^3は2*2*2=8となります。
「誤」指数部が128だから、2^{128-127}=2^1
「正」指数部が205だから、2^{205-127}=2^78
「誤」 (-1)^0 x 2^1
「正」 (-1)^0 x 2^78
「誤」 指数部が128だから
「正」 指数部が135だから
「誤」 (-1)^0x2^1
「正」 (-1)^0x2^8
「誤」 more digits
「正」 alignment
「今回のまとめ」の1つ目
「○実数型は値を格納した時点で丸め誤差を発生します。」 はP.45の「今回のまとめ」の最後に移動する。
「誤」 表2.1.6: 問題 論理和の真理値表
「正」 表2.1.6: 問題 排他的論理和の真理値表
\bar{A}はAの否定の意味です。
「誤」
=A・B + \bar{A}・B
=B・(A + \bar{A})
=B・1
=B
「正」
=A・1 + \bar{A}・B
=A + \bar{A}・B
=A + B
12行目に「ところで、この演算→はプログラミングの中でそう使う機会がありません。」と記載しました。これについて、次のようなご指摘を頂きました。
(文面は著者がまとめましたので、そのままではありません。)
型Bを受け取って型Aを返す関数は、「BならばA」と同型であることが示されているので、メソッドの「A hoge (B b)」という定義が→を表していて、これは頻繁に使います。カリー・ハワード同型対応といいます。
これは論理演算子の体系とは別の体系なので、本文の文脈において「Java言語には→を表す演算子は用意されていません」というのは間違いではないのですが、演算→をプログラミングで使う機会がないわけではありません。
「誤」ソースコード: Sample_isSquareMatrix.java 未完成版
「正」 ソースコード: Sample_GaussJordanElimination.java 未完成版
「誤」ソースコード: Sample_isSquareMatrix.java 完成版
「正」 ソースコード: Sample_GaussJordanElimination.java 完成版
サンプルコードP291は関数SkenkeiSaishouJijyouHouがスケルトン状態です。
実行は出来ますが、目的とするグラフを表示出来ません。
サンプルコードP297(Sample RegLine.java)が完成版となります。
サンプルコードP291の画面出力は、下記のCSVデータ(本文中OpenOfficeで使用したデータです)を実行した結果です。
20,120
150,225
278,240
data001.csvで実行した場合、下記の出力となります。
y=ax+b
value of a = 0.8920197621838888
value of b = 26.47085915257076
「誤」 * compile : >javac Sample_RegLine.java -Xlint:unchecked
「誤」 * usage : >java Sample_RegLine ./data002.csv */
「正」 * compile : >javac Sample_Correlation.java -Xlint:unchecked
「正」 * usage : >java Sample_Correlation ./data002.csv */
P.317に掲載したサンプルコードP312(Sample_Correlation.java)の画面出力は、下記のCSVファイルで実行した結果です。
20,120
150,225
278,240
P.292の図6.2.11のグラフも、このCSVファイルで実行したときに表示されます。
data001.csvで実行した場合、下記の出力となります。
y=ax+b
value of a = 0.8920197621838888
value of b = 26.47085915257076
r = 0.9942482449593888
Java実行ファイル実行後の
バッチ ジョブを終了しますか (Y/N)? y
はWindowsに特有の表示です。UNIX系のOSでは表示されません。
「バッチファイル」はWindows特有の機能です。同様の処理を行うためには、UNIX系OSでは「シェルスクリプト」を作成します。