プログラミングのための線形代数・確率統計 非公式サポートページ

正誤表の追加など, もし更新すべきことがあればここに書いていきます. それ以外はInternet Archiveの旧サポートページをご覧ください (→ 線形代数, 確率統計).

目次


行列アニメーション

『プログラミングのための線形代数』公式ページで配布されているアニメーションプログラムは2004年当時の環境を想定したものです. 2020年現在の環境ではうまく表示されないので, かわりに以下のリンクをご参考に.


関連記事


『プログラミングのための線形代数』正誤表

※ 8刷以前については旧サポートページ参照.
ごめんなさい

各刷の修正についてはこちらもご参照ください
*[[正誤表.1刷→2刷]]
*[[正誤表.2刷→3刷]]
*(3刷→4刷は修正なし)
*[[正誤表.4刷→5刷]]
*(5刷→6刷は修正なし)
*[[正誤表.6刷→8刷]]
*(8刷→10刷, 11刷→18刷は修正なし)

----

!!Major

[2019-03-11]
* 1-18刷 p. 145, 脚注 68 の 5 行目末尾: (0, ..., 0, 1) → (0, ..., 0, 1)T (T は上つき)

!!Minor

[2008-07-27]
* 1-7刷 p. 42 式 (1.12) の手前: 「対角行列の積(…)やべき乗(…)は」 → 「対角行列どうしの積や対角行列のべき乗は」
* 8-10刷 p. 42 式 (1.12) の手前: 「対角行列どうしの積(…)やべき乗(…)は」 → 同上 (直し損ね)

!!補足説明

[2016-04-08]
* AB = AC (A≠O) でも, B = C とは限りません. p.128 のとおり, dim Ker A > 0 なら「単射ではない」のだから, 違うものが A で同じものに移ってしまいます. プロのケーキも素人のケーキもつぶしたら同じかもしれませんが, つぶす前は別物ですね.

[2013-08-15]
* 「自乗」は「2乗」の少し昔風な言い方です. (最小自乗法, 自乗和, など)

[2012-12-09]
* 行列積の計算量 → [[CodeIQ]]

[2010-12-28]
* 『数学ガール/ゲーデルの不完全性定理』{{isbn_image('4797352965')}}では, 全射・単射を「もれがない」・「だぶりがない」と端的に説明していました. お見事です.

[2010-12-05]
* p. 271, 4.7.6 項: [[→ Jordan標準形に変換できることの手短な証明 (PDF)|http://www10.plala.or.jp/xyzt/lacs/lacs_jordan.pdf]]

[2009-07-08]
* p. 64 腕だめし(2): (A + BDC) の逆行列の公式は, 「逆行列の補題」や「Sherman-Morrison-Woodburyの公式」と呼ばれます。

[2009-03-14]
* 行列の演算で, A+B, A-B, A B があるのに「A 分の B」がないのはなぜか:
** もし「分数」で書くと, 「(A の逆行列) かける B」なのか「B かける (A の逆行列)」なのか区別がつかなくて困るから……かな?

[2008-08-22]
* p. 343, 付録 E.1.5: 転置行列の意味づけ → [[Transpose]]

[2008-04-05]
* p. 339, 付録 E.1 内積空間:
**ベクトル x, y のなす角をθとするとき, 内積 x・y は ||x|| ||y|| cos θ に等しい. 理由は次のとおり. y を x に平行な成分 a x と垂直な成分 v とに分けて y = a x + v と書けば, x・y = x・(a x) + 0 = a ||x||^2. また, 作り方から位置ベクトル o, y, a x は直角三角形をなすので, a ||x|| = ||y|| cos θ. よって x・y = ||x|| ||y|| cos θ.
**……というか本当はむしろ逆に, この式から角度θというものを定義する.

[2006-07-24]
* p. 95, 2.2.2 項:
** クラメルの公式を書かなかったのは, あえてです. 「クラメルの公式を使って解け」という制限のついた試験問題を除けば, 使う場面が(本書のレベルでは)少ないし, むしろ弊害の方が気になります. ——— クラメルの公式は計算量が多いので, 筆算にもプログラミングにも向きません. この公式が本領を発揮するのは, 文字式を相手に理論的な検討を行う場合です. 一つ覚えで濫用してはいけません.
* p. 167, 3.1.1 項:
** おそろしいことに, 数値計算法は, 現在もダイナミックに発展が続いています(重箱の隅ではなく). 機会があれば専門家に話を聞いてみてください. 最近でたアイデアについて熱く語ってくれることでしょう.

[2006-07-21]
* p. 34, 1.2.5 項:
** 「縦掛ける横」と「横掛ける縦」の話がピンとこない場合は, まず 2 行や 2 列の例を考えてみてください. これを確かめてから「じゃあ 1 行や 1 列なら?」と問い直せば, 今度は自信を持って答えられるはずです.
 □□        □□□□           □□     
 □□ □□□□ = □□□□      □□□□ □□ = □□
 □□ □□□□   □□□□      □□□□ □□   □□
 □□        □□□□           □□     
                                 
  □        □□□□           □      
  □ □□□□ = □□□□      □□□□ □  = □ 
  □        □□□□           □      
  □        □□□□           □      

[2006-02-27]
* p. 16, ? 1.11:
** [[甘利先生|http://ja.wikipedia.org/wiki/%E7%94%98%E5%88%A9%E4%BF%8A%E4%B8%80]]の講義では, 「世を忍ぶ仮の座標」という表現をされていました. 気分が出てますよね.

[2006-02-06]
* p. 70, ? 1.36:
** 「どれもたまたま同じ記号を使ってるだけで」は, やや語弊があったかも. ある面で似た性質や位置づけを持つからこそ, 同じ記号がしっくりくるのでしょう(|A| はどれも数になり, |A B| もしくは |A×B| が |A| |B| に等しい, など). 本書の文脈では意味の相違を強調したかったので, 「別物」と言い切ってしまいました.
* p. 76, 転置行列の行列式:
** ついでに, 共役転置 A^* の行列式は, det A の複素共役になります. 行列式の計算法(→1.3.3)や複素共役の性質(→付録 B, p. 326)からほぼ自明でしょう.

[2005-12-15]
* p. 105, 2.2.3 項:
** 逆行列を紙と鉛筆で計算する方法としては, 「筆算法」を暗記するよりも以下の方が有益かもしれません. 実質は同じことだし, こちらなら暗記が不要です. (ただし, 学生さんは, 「教科書の指示と違う方法」を許す先生かどうかよく見極めてから :-p)
 (例)
 A = 
     5   3
     2   1
 の逆行列は?
 
 → x = (x1, x2)^T, y = (y1, y2)^T とおいて, 方程式 A x = y を考えよう.
 (^T は「右肩に T」, つまり転置)
 成分ごとに書けば,
   5 x1 + 3 x2 = y1
   2 x1 +   x2 = y2
 これを x1, x2 の連立一次方程式だと思って変数消去法なりで解くと,
   x1 = - y1 + 3 y2
   x2 = 2 y1 - 5 y2
 が得られる. 解をぐっとにらめば,
 B = 
     -1   3
     2   -5
 という行列が見えてきて, x = B y と書けている.
 任意の y でこれが成立するのだから,
 この結果は「B = 『A の逆行列』」を意味する.

[2005-09-23]
* p. 43, 1.2.8 項:
** 2次正方行列の逆行列くらいは, 公式として暗記しておくといいかもしれません. この公式が成り立つこと(A をかけたら確かに単位行列になること)を, 各自で確認してみてください.
 A =
     a   b
     c   d
 のとき, A の逆行列は (1 / det A) □. ここに,
 det A = a d - b c
 □ =
      d   -b
      -c   a
 (もちろん, det A = 0 のときは逆行列は存在しません)

[2004-11-10]
* p. 168, 3.1.2:
** Ruby で大きな行列を扱いたければ, 多次元数値配列クラス[[NArray|http://www.ir.isas.ac.jp/~masa/ruby/]]も魅力的でしょう. ただし, 「まだテスト段階」とのことですが…
* p. 170, ? 3.1:
** 自動チューン機能を持つものもあります([[ATLAS|http://math-atlas.sourceforge.net/]]など).

『プログラミングのための確率統計』正誤表

ごめんなさい

!!Major

* [バグ番号211] 1-11刷 p. 280, 例題 8.2 の答: 1/4 が途中から消えていました. [2020-08-14]
** 答の 3 行目: 最初の「=」のあとの (…)+(…)+(…)+(…) を (1/4) {(…)+(…)+(…)+(…)} に訂正. 2 番目の「=」の直後の 4 倍を削除.
** 答の 6 行目: 「4・」をすべて削除 (七箇所).
** 答の 7 行目: 「= λ^2 - 25 λ + 100 = (λ - 20) (λ - 5)」にさしかえ.
** 答の 8 行目: 80 を 20 に (三箇所), 「…と 20」を「…と 5」に訂正.
* [バグ番号210] 1-11刷 p. 122 図 4.13 変換後のインクの密度: 「f(x)」を削除. [2020-08-14]
* [バグ番号209] 1-9刷 p. vii, 脚注 *2: URLが変更されました. http://www.ohmsha.co.jp/data/link/978-4-274-06775-4/ → https://www.ohmsha.co.jp/book/9784274067754/
* [バグ番号208] 1-4刷 p. 206, 図 5.17 キャプション: 図5.17(p.206)の再掲 → 図4.39(p.148)の再掲 (ご指摘ありがとうございます > 読者の方)
* [バグ番号207] 1-4刷 p. 134, 例題 4.8 答の数式の最後: P(-1≦Y≦5) → P(-5≦Y≦1) (ご指摘ありがとうございます > 読者の方)
* [バグ番号206] 1-3刷 p. 91, 14行目の式の右端の項: 7^2・1/125 → 6^2・1/125 (ご指摘ありがとうございます > 読者の方)
* [バグ番号204] 1-3刷 pp. 362-363, 索引の「四分位数」と「中央値」: 228 は細字にして, 太字の 230 を追加
* [バグ番号202] 1-2刷: 自乗誤差の「条件つき」期待値について補足修正 (ご指摘ありがとうございます > [[2011-12-29の名無しさん|PSCS.Comment]])
** p. 240 本文下から 5 行目: (→ …「おまけ:条件つき期待値と最小自乗予測」)を(→ …「…」の脚注 18)に修正.
** p. 109, 脚注 18 に追加: 「なお, h_1(g_1) = E[(Y - g_1)^2 | X=1] であることも指摘しておきます. 」
* [バグ番号201] 1-2刷 p. 212, 本文 2 行目:図 5.26 → 図 5.27 (ご指摘ありがとうございます > [[2011-12-23の名無しさん|PSCS.Comment]])
* [バグ番号201] 1-2刷 p. 213, 中ほどの数式の下「ただし上式は r≧0」: r → u (ご指摘ありがとうございます > [[2011-12-23の名無しさん|PSCS.Comment]])
* [バグ番号200] 1-2刷 p. 244, 下から 8 行目: α以内 → α未満
* [バグ番号197] 1-2刷 p. 199, 第 1 段落後の項目 1. の「D Z」: Z を太字に (ご指摘ありがとうございます > [[2011-12-10の名無しさん|PSCS.Comment]])
* [バグ番号197] 1-2刷 p. 204, 「多次元正規分布を線形変換したら〜」の第 2 段落中の数式 1 行目 f_X(A^{-1} Y): Y を小文字の太字 y に (ご指摘ありがとうございます > [[2011-12-10の名無しさん|PSCS.Comment]])

!!Minor

* [バグ番号203] 1-2刷 p. 253, 7.1.1 の本文 2 行目: 「後述の擬似乱数と」 → 「後述の擬似乱数列と」 (ご指摘ありがとうございます > [[2012-01-18の名無しさん|PSCS.Comment]])
* [バグ番号194] 1刷 p. 308, ?8.7: 汎関数という用語については補足編 PDF の 3.c.1 を参照ください (旗マークをつけておくべきでした)
* [バグ番号193] 1刷 p. 306, 脚注 24: c > 0 → c > 1 (0 < c < 1 でもそこの式は成り立ちますが, 意味を考えると c > 1 に限定するほうが無難でしょう)
* [バグ番号159] 1刷 p. 95, 下から 4 行目: 8.1.2 項 → 補足編 PDF (Oct 19, 2009 版) の 8.b.1 項

!!補足説明

[2021-08-15]
付録 B にシュワルツの不等式 |E[X Y]| ≦ √(E[X^2]) √(E[Y^2]) が漏れていました.
これは, ベクトルに関する同名の不等式(p. 334)の変種です.
証明も同ページ脚注 14 と同様です
(E[X^2] = E[Y^2] = 1 の場合には,
E[(X-Y)^2] = E[X^2] - 2 E [X Y] + E[Y^2] = 2 - 2 E[X Y] が非負なので E[X Y] ≦ 1.
同様に E[(X+Y)^2] ≧ 0 から E[X Y] ≧ -1.
一般の場合も, その両辺を定数倍すればよいだけ).
また, シュワルツの不等式は,
B.6 Holder の不等式 (正確には o にウムラウト) の p = q = 1/2 の場合ともみなせます
(B.2 Jensen の不等式で g(x) = |x| とおけば一般に |E[□]| ≦ E[|□|] なので).

補足編 PDF 「7.b 所望の分布の生成についての補足」の補足.
さらなる工夫は, 古澄英男『ベイズ計算統計学』(朝倉書店, 2015. ISBN: 978-4254128567)の
2.1節「サンプリングの基本アルゴリズム」を参照.
{{isbn_image('4254128568')}}

「自乗」は「2乗」の少し昔風な言い方です. (最小自乗法, 自乗誤差, など)

3.6.2 「最小自乗予測」について.
実は p. 100 例題 3.12 と同様に, E[(Y - g_1)^2 | X=1] = (μ - g_1)^2 + σ^2 という「誤差の分解」が成り立ちます (ただし μ ≡ E[Y | X=1], σ^2 ≡ V[Y | X=1]). 右辺を最小化したければ, どう見ても g_1 = μ がベストです. だから本文のようにいちいち微分しなくてもそこの結論は当然でした.

4.1.3 (変数変換の練習)の参考に → [[アニメーションで見る置換積分|http://www10.plala.or.jp/xyzt/pscs/integral_movie.html]]

2.5.4 「3 つ以上の独立性(要注意)」について.
確率変数 X, Y, Z, W が独立なら, たとえば「X+Y と Z-W」も独立です. しかし, 「X+Y と Z-Y」は一般に独立ではありません (Y が両方に入っているから). もっと個数が多かったりもっと複雑な関数だったりしても同様です. 3.4.5 (足し算の分散) や 例題 4.22 (正規分布の足し算) や 8.2.1 (ランダムウォーク) ではこの事情が暗黙に使われています.

4.5 の期待値について.
連続値の場合も「条件つき分布の期待値」を「条件つき期待値」と呼び, E[Y|X=a] のように書きます.
 E[Y|X=a] = ∫f_Y(y|X=a) dy   (積分範囲は Y のとり得る値すべて)
条件つき分散の式は, 連続値でも 3.6.4 項と全く同じです.

書籍中の図5.20と図5.21をもっと露骨に描くとこんな感じです ([[下書き|PSCS.PDF]]より).

{{attach_view(att2.jpg)}}
{{attach_view(slice1.jpg)}}

6.2 の検定については, (帰無仮説に対して) accept や受容・採択という言葉を使うべきでないという話もあります
[[(ref)|http://oku.edu.mie-u.ac.jp/~okumura/blog/comment/reply/2492]].
たとえば竹内啓『数理統計学』(東洋経済新報社)はこれらの言葉を避けて書かれているようです.
一方, 『統計学辞典』(東洋経済)や『数学辞典』(岩波書店)や竹村彰通『現代数理統計学』(創文社)では受容や採択という言葉が使われています.
本書では次のようにしました.
* 「棄却できない」という言い方でまず検定の論法を導入し, 棄却との非対称性を強調
* その上で accept 等の用語を紹介し, 検定の理論的考察ではそれらを使って言葉を短かく

また, 同じく 6.2 の検定では, 多重比較に言及できなかったのが残念でした(筆者の力不足です).
たとえば有意水準 0.5% の検定を 100 回やったら, 「全体の」あわてものの誤りの確率(本当は真である帰無仮説のどれかが棄却されてしまう確率)は, 最悪 0.5 × 100 = 50% にもなってしまいます.
だから, 「いろいろな職業と血液型との関係を調べた結果, ○○という職業には AB 型が有意に多い」のような調査では, 上の事情を勘案しないといけません.
「多重検定」というキーワードを調べてみてください.

付録 A.5.3 の log の性質は, 次のような具体例のほうがわかりやすかったかも.
 ※ 「u の右肩に c」を「u^c」, 「log の右下に a」を「log_a」のように表します
 
 [ア] log_a (u v) = log_a u + log_a v の例:
 8 は 2 の 3 乗. 64 は 2 の 6 乗. では 8×64 は 2 の何乗? → (答) 3+6 = 9 乗
 … 8×64 = (2×2×2)×(2×2×2×2×2×2)
 だから log_2 (8×64) = log_2 8 + log_2 64
 
 [イ] log_a (u^c) = c log_a u の例:
 8 は 2 の 3 乗. では 8 の 5 乗は 2 の何乗? → (答) 5×3 = 15 乗
 … 8^5 = (2×2×2)×(2×2×2)×(2×2×2)×(2×2×2)×(2×2×2)
 だから log_2 (8^5) = 5 log_2 8
 
 [ウ] log_u w = (log_a w) / (log_a u) の例:
 32768 は 2 の 15 乗. 8 は 2 の 3 乗. では 32768 は 8 の何乗? → (答) 15/3 = 5 乗
 … 32768 = (2×2×2)×(2×2×2)×(2×2×2)×(2×2×2)×(2×2×2)
 だから log_8 32768 = (log_2 32768) / (log_2 8)
あるいはいっそこのほうが.
 [ア] 100×1000 は 10 の何乗? → (10×10)×(10×10×10) だから 2+3 = 5 乗
 [イ] 100^3 は 10 の何乗? → (10×10)×(10×10)×(10×10) だから 3×2 = 6 乗
 [ウ] 1000000 は 100 の何乗? → (10×10)×(10×10)×(10×10) だから 6/2 = 3 乗

更新履歴