Your SlideShare is downloading. ×
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列

294
views

Published on

2015/03/27 「第2回プログラマのための数学勉強会」にて発表。 …

2015/03/27 「第2回プログラマのための数学勉強会」にて発表。
http://maths4pg.connpass.com/event/11781/

Published in: Education

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
294
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. プログラマのための線形代数 再 入門 2 ∼要件定義から学ぶ行列式と逆行列∼ @taketo1024 2015/03/27 第2回プログラマのための数学勉強会
  • 2. 今回の目標 ただの計算地獄だった行列式と逆行列を システム開発の文脈で説明し直し、 プログラマが納得して使えるようになること。
  • 3. 行列式 (determinant)
  • 4. 行列式 (determinant) A = ✓ 1 2 3 4 ◆
  • 5. 行列式 (determinant) A = ✓ 1 2 3 4 ◆ detA = 1 2 3 4 = 1 · 4 2 · 3
  • 6. 行列式 (determinant) A = ✓ 1 2 3 4 ◆ detA = 1 2 3 4 = 1 · 4 2 · 3 +
  • 7. 行列式 (determinant) A = ✓ 1 2 3 4 ◆ detA = 1 2 3 4 = 1 · 4 2 · 3 -
  • 8. 行列式 (determinant) A = ✓ 1 2 3 4 ◆ detA = 1 2 3 4 = 1 · 4 2 · 3 = 2
  • 9. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A
  • 10. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 11. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 12. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 13. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 14. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 15. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 16. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8
  • 17. 行列式 (determinant) A = 0 @ 1 2 3 4 5 6 7 8 9 1 A detA = 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 + 2 · 6 · 7 + 3 · 4 · 8 3 · 5 · 7 2 · 4 · 9 1 · 6 · 8 = 0
  • 18. 行列式 (determinant) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  • 19. 行列式 (determinant) = 1 · 6 · 11 · 16 1 · 6 · 12 · 15 + 1 · 7 · 12 · 14 1 · 7 · 10 · 16 + 1 · 8 · 11 · 14 1 · 8 · 10 · 15 +2 · 5 · 12 · 15 2 · 5 · 11 · 16 + 2 · 7 · 9 · 16 2 · 7 · 12 · 13 + 2 · 8 · 11 · 13 2 · 8 · 9 · 15 +3 · 5 · 10 · 16 3 · 5 · 12 · 14 + 3 · 6 · 12 · 13 3 · 6 · 9 · 16 + 3 · 8 · 9 · 14 3 · 8 · 10 · 13 +4 · 5 · 10 · 15 4 · 5 · 11 · 14 + 4 · 6 · 9 · 15 4 · 6 · 11 · 13 + 4 · 7 · 10 · 13 4 · 7 · 9 · 13 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 !?
  • 20. 人間がやるべき計算じゃない
 (コンピュータのある時代でよかった)
  • 21. 計算は機械がやればいいが、 これが何なのかは分かっておきたい。
  • 22. プログラマの「理解」の3層構造 • 要件が分かる:何のためのものなのか • 仕様が分かる:何を与えると何が返ってくるのか • 実装が分かる:どのように動いているのか プログラマはこの3つが ってはじめて「分かった」と言える。
  • 23. 1. 行列式の「要件」
  • 24. (復習) 行列は線形変換の定量表現 ✓ x y ◆ x ✓ 1 0 ◆ y ✓ 0 1 ◆ f y ✓ bx by ◆ x ✓ ax ay ◆ f ✓ x y ◆ = ✓ ax bx ay by ◆ ✓ x y ◆
  • 25. (復習) 等倍・偏倍変換 A = ✓ a 0 0 b ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ a 0 ◆ ✓ 0 b ◆
  • 26. (復習) 回転 A = ✓ cos✓ sin✓ sin✓ cos✓ ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆
  • 27. (復習) 反転 A = ✓ 1 0 0 1 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ 0 1 ◆ ✓ 1 0 ◆
  • 28. (復習) 正射影 A = ✓ 1 0 0 0 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ 1 0 ◆
  • 29. ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ a 0 ◆ ✓ 0 b ◆ ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 1 0 ◆ f 変換の特徴を表す 1次元の量 を考えたい 特に潰れるかどうかを 判別したい
  • 30. 潰れると元に戻せない! ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ f ✓ 1 0 ◆ ✓ 0 1 ◆ f f 1 ? 同じように潰れてしまう 復元できない!
  • 31. 行列式の「要件」 • n次元の線形変換は n次正方行列 (n2 個の数) で表される。 • 線形変換の特徴を 1次元の量 によって表したい。 • 特に「潰れてしまう」かどうかを判別したい。 n次正方行列 A detAの行列式A (1次元の量)
  • 32. 2. 行列式の「仕様」
  • 33. 変換後の面積と向きに注目!
  • 34. ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ a 0 ◆ ✓ 0 b ◆ ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 1 0 ◆ f 面積 ab 倍 面積同じ 面積同じ 面積 0
  • 35. ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ a 0 ◆ ✓ 0 b ◆ ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 1 0 ◆ f 表向き 表向き 裏向き 向きなし
  • 36. ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ a 0 ◆ ✓ 0 b ◆ ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 1 0 ◆ f detA = ab detA = 1 detA = -1 detA = 0
  • 37. detA = 「面積の倍率 向き」 ✓ x y ◆ x ✓ 1 0 ◆ y ✓ 0 1 ◆ f y ✓ bx by ◆ x ✓ ax ay ◆ f ✓ x y ◆ = ✓ ax bx ay by ◆ ✓ x y ◆
  • 38. 3次元(さらに高次元)の場合、 det A = 体積の倍率 向き f 0 @ ax ay az 1 A 0 @ bx by bz 1 A 0 @ cx cy cz 1 A 右手系 → 左手系 の場合 detA < 0
  • 39. 行列式の「仕様」 detA > 0 = 0 < 0 … 向きを保ち、体積 detA 倍 … 潰れる … 向きを変えて、体積 -detA 倍
  • 40. 3. 行列式の「実装」
  • 41. 「n2 次元 → 1次元」の関数を 一発で出すのは難しい
  • 42. 複雑なものは簡単なものの組み合わせに (設計の基本!)
  • 43. 1) det E = 1 ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ E = ✓ 1 0 0 1 ◆ id detE = 1 1 0 0 1 = 1
  • 44. 2) det(b, a) = -det(a, b) ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ A = ✓ 0 1 1 0 ◆ 裏向き f det(b, a) = det(a, b) 0 1 1 0 = 1 0 0 1 = 1
  • 45. det(a1 + a2, b) = det(a1, b) + det(a2, b), det(k・a, b) = k・det(a, b) ✓ 1 0 ◆ ✓ 0 1 ◆ f 3) det(ka, b) = k · det(a, b) A = ✓ 2 0 0 1 ◆ ✓ 0 1 ◆ ✓ 2 0 ◆ 2 0 0 1 = 2 · 1 0 0 1 = 2 det(a1 + a2, b) = det(a1, b) + det(a2, b)
  • 46. 実はこれが行列式の全て! detE = 1 det(b, a) = det(a, b) det(ka, b) = k · det(a, b) 1) 2) 3) (交代性) (多重線形性) det(a1 + a2, b) = det(a1, b) + det(a2, b)
  • 47. 1) ∼ 3) から導かれる便利な性質 4) 5) det(a, a) = 0 det(a kb, b) = det(a, b)
  • 48. 計算してみよう!
  • 49. 1 2 3 4
  • 50. 1 2 3 4
  • 51. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 3)
  • 52. 1 2 3 4 = 1 2 0 4 + 0 2 3 4
  • 53. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 3)
  • 54. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 0 = 0 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 4)
  • 55. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 = 4 1 0 0 1 + 2 · 3 0 1 1 0 3)
  • 56. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 = 4 1 0 0 1 + 2 · 3 0 1 1 0 = 4 1 0 0 1 2 · 3 1 0 0 1 2)
  • 57. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 = 4 1 0 0 1 + 2 · 3 0 1 1 0 = 4 1 0 0 1 2 · 3 1 0 0 1 = 1 = 11)
  • 58. 1 2 3 4 = 1 2 0 4 + 0 2 3 4 = 1 2 0 0 + 1 0 0 4 + 0 2 3 0 + 0 0 3 4 = 4 1 0 0 1 + 2 · 3 0 1 1 0 = 4 1 0 0 1 2 · 3 1 0 0 1 = 2
  • 59. 1 2 3 4 5 6 7 8 9
  • 60. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0
  • 61. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0 = 1 = 1 = 1 = 1 = 1 = 1
  • 62. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0 = 1 · 5 · 9 1 · 6 · 8 +2 · 6 · 7 2 · 4 · 9 +3 · 4 · 8 3 · 5 · 7 = 0
  • 63. 行列式計算のアルゴリズム 1. 各行から列が重複しないように成分を取り出して掛ける 2. 残った 0, 1 だけの行列式を計算する(偶数回の交代で単 位行列になる場合 1、奇数回の場合 -1) 3. これらの取り出し方の全パターンを足し合わせる
  • 64. アルゴリズムを数式にすると… detA = X 2Sn Y i ai, (i) . . . . . . . . .
  • 65. detA = X 2Sn Y i ai, (i) . . . . . . . . . アルゴリズムを数式にすると… A の i 行から取り出した成分
  • 66. detA = X 2Sn Y i ai, (i) . . . . . . . . . 各行に渡る成分の積 アルゴリズムを数式にすると…
  • 67. detA = X 2Sn Y i ai, (i) . . . . . . . . . 残った 0, 1 だけの行列式 アルゴリズムを数式にすると…
  • 68. detA = X 2Sn Y i ai, (i) . . . . . . . . . 並べ替えの全パターンの総和 アルゴリズムを数式にすると…
  • 69. アルゴリズムを数式にすると… detA = X 2Sn Y i ai, (i) . . . . . . . . .
  • 70. detA = X 2Sn Y i ai, (i) . . . . . . . . . = X 2Sn Y i ai, (i)sgn( ) アルゴリズムを数式にすると… 並べ替えの「符号」 (偶数回: 1, 奇数回: -1)
  • 71. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0 detA = X 2Sn Y i ai, (i)sgn( ) 同じ式に見えるかな?
  • 72. これが行列式の「定義」として 数学の本に出てくる
  • 73. 理解すべき原理はこっち: detE = 1 det(b, a) = det(a, b) det(ka, b) = k · det(a, b) 1) 2) 3) (交代性) (多重線形性) det(a1 + a2, b) = det(a1, b) + det(a2, b)
  • 74. 出発点はシンプルな方が良い
  • 75. 宿題: 行列と行列式を好きな言語で 実装してみましょう
  • 76. 行列式の展開
  • 77. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0
  • 78. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0
  • 79. 1 2 3 4 5 6 7 8 9 = 1 0 @5 · 9 1 0 0 0 1 0 0 0 1 + 6 · 8 1 0 0 0 0 1 0 1 0 1 A +2 0 @4 · 9 0 1 0 1 0 0 0 0 1 + 6 · 7 0 1 0 0 0 1 1 0 0 1 A +3 0 @4 · 8 0 0 1 1 0 0 0 1 0 + 5 · 7 0 0 1 0 1 0 1 0 0 1 A
  • 80. 1 2 3 4 5 6 7 8 9 = 1 0 @5 · 9 1 0 0 0 1 0 0 0 1 + 6 · 8 1 0 0 0 0 1 0 1 0 1 A +2 0 @4 · 9 0 1 0 1 0 0 0 0 1 + 6 · 7 0 1 0 0 0 1 1 0 0 1 A +3 0 @4 · 8 0 0 1 1 0 0 0 1 0 + 5 · 7 0 0 1 0 1 0 1 0 0 1 A
  • 81. 1 2 3 4 5 6 7 8 9 = 1 ✓ 5 · 9 1 0 0 1 + 6 · 8 0 1 1 0 ◆ 2 ✓ 4 · 9 1 0 0 1 + 6 · 7 0 1 1 0 ◆ +3 ✓ 4 · 8 1 0 0 1 + 5 · 7 0 1 1 0 ◆
  • 82. 1 2 3 4 5 6 7 8 9 = 1 ✓ 5 · 9 1 0 0 1 + 6 · 8 0 1 1 0 ◆ 2 ✓ 4 · 9 1 0 0 1 + 6 · 7 0 1 1 0 ◆ +3 ✓ 4 · 8 1 0 0 1 + 5 · 7 0 1 1 0 ◆
  • 83. 1 2 3 4 5 6 7 8 9 = 1 ✓ 5 · 9 1 0 0 1 + 6 · 8 0 1 1 0 ◆ 2 ✓ 4 · 9 1 0 0 1 + 6 · 7 0 1 1 0 ◆ +3 ✓ 4 · 8 1 0 0 1 + 5 · 7 0 1 1 0 ◆ = 1 5 6 8 9 2 4 6 7 9 + 3 4 5 7 8
  • 84. 1 2 3 4 5 6 7 8 9 = 1 ✓ 5 · 9 1 0 0 1 + 6 · 8 0 1 1 0 ◆ 2 ✓ 4 · 9 1 0 0 1 + 6 · 7 0 1 1 0 ◆ +3 ✓ 4 · 8 1 0 0 1 + 5 · 7 0 1 1 0 ◆ = 1 5 6 8 9 2 4 6 7 9 + 3 4 5 7 8 … 第1行で展開
  • 85. 1 2 3 4 5 6 7 8 9 = 1 · 5 · 9 1 0 0 0 1 0 0 0 1 + 1 · 6 · 8 1 0 0 0 0 1 0 1 0 +2 · 4 · 9 0 1 0 1 0 0 0 0 1 + 2 · 6 · 7 0 1 0 0 0 1 1 0 0 +3 · 4 · 8 0 0 1 1 0 0 0 1 0 + 3 · 5 · 7 0 0 1 0 1 0 1 0 0 くくり出し方を変えれば、任意の行・列で展開できる = 2 4 6 7 9 + 5 1 3 7 9 8 1 3 4 6
  • 86. n次行列式は (n-1) 次行列式の和に展開できる → 再帰呼び出しでも実装できる(宿題)
  • 87. そして逆行列
  • 88. ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ a 0 ◆ ✓ 0 b ◆ ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆ ✓ 0 1 ◆ ✓ 1 0 ◆ ✓ 1 0 ◆ f 逆行列:逆変換に対応する行列 f 1 A 1 = ✓ cos( ✓) sin( ✓) sin( ✓) cos( ✓) ◆ A 1 = ✓ 1/a 0 0 1/b ◆ A 1 = ✓ 1 0 0 1 ◆ 逆変換なし!
  • 89. A = 0 @ 1 2 3 1 0 1 2 1 2 1 A
  • 90. A = 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 @ x y z 1 A 0 @ x + 2y + z x z 2x + y 2z 1 A A 1 det A 0 であれば、逆行列 A-1 は取れるはず。 A 1 A = E AA 1 = E
  • 91. やってみましょう。 (トリッキーなことをします)
  • 92. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 第1行で展開
  • 93. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 2行目を1行目にコピペ
  • 94. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 = 0
  • 95. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 = 0 同じ行が並んでいるので 計算するまでもなく 0
  • 96. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 2 1 2 1 0 1 2 1 2 = 2 0 1 1 2 1 1 1 2 2 2 1 0 2 1 = 0 = 03行目を1行目にコピペ
  • 97. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 2 1 2 1 0 1 2 1 2 = 2 0 1 1 2 1 1 1 2 2 2 1 0 2 1 = 0 = 0
  • 98. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 2 1 2 1 0 1 2 1 2 = 2 0 1 1 2 1 1 1 2 2 2 1 0 2 1 = 0 = 0 Aの要素が並んでいる…
  • 99. 1 2 3 1 0 1 2 1 2 = 1 0 1 1 2 2 1 1 2 2 + 3 1 0 2 1 = 4 1 0 1 1 0 1 2 1 2 = 1 0 1 1 2 0 1 1 2 2 1 1 0 2 1 2 1 2 1 0 1 2 1 2 = 2 0 1 1 2 1 1 1 2 2 2 1 0 2 1 = 0 = 0 縦には同じ行列式…これは…!
  • 100. ドーン! 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 0 1 1 2 1 1 2 2 1 0 2 1 1 C C C C C C C C C C A = 0 @ 4 0 0 1 A
  • 101. 同じことを 第2行、第3行 でもやる。
  • 102. ドドーン! 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 2 3 1 2 1 3 2 2 1 2 2 1 1 C C C C C C C C C C A = 0 @ 0 4 0 1 A 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 2 3 0 1 1 3 1 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 0 0 4 1 A
  • 103. 全部合わせて… 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 0 1 1 2 1 1 2 2 1 0 2 1 1 C C C C C C C C C C A = 0 @ 4 0 0 1 A 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 2 3 1 2 1 3 2 2 1 2 2 1 1 C C C C C C C C C C A = 0 @ 0 4 0 1 A 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 2 3 0 1 1 3 1 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 0 0 4 1 A
  • 104. Enter the Matrix… 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 0 1 1 2 2 3 0 1 2 3 0 1 1 1 2 2 1 3 2 2 1 3 1 1 1 0 2 1 1 2 2 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 4 0 0 0 4 0 0 0 4 1 A
  • 105. 両辺 detA = 4 で割れば… 0 @ 1 2 3 1 0 1 2 1 2 1 A 0 B B B B B B B B B B @ 0 1 1 2 2 3 0 1 2 3 0 1 1 1 2 2 1 3 2 2 1 3 1 1 1 0 2 1 1 2 2 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 4 0 0 0 4 0 0 0 4 1 A detA = 4
  • 106. できあがり! 0 @ 1 2 3 1 0 1 2 1 2 1 A · 1 detA 0 B B B B B B B B B B @ 0 1 1 2 2 3 0 1 2 3 0 1 1 1 2 2 1 3 2 2 1 3 1 1 1 0 2 1 1 2 2 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 1 0 0 0 1 0 0 0 1 1 A = A 1 = 1 4 0 @ 1 7 1 0 8 4 1 3 2 1 A
  • 107. n次行列の場合も全く同じ (宿題ってことで)
  • 108. 高次元の計算にはもっと効率的な方法がある • 余因子行列による方法 … O(n3) • 掃き出し法 … O(n2) • LU分解 … O(n2) • …
  • 109. まとめ • 行列式は線形変換の特徴を表す1次元の量 • detA 0 のとき、逆変換が作れる • 計算は機械に任せよう(仕組みが分かってれば良い)
  • 110. 行列式の原理: detE = 1 det(b, a) = det(a, b) det(ka, b) = k · det(a, b) 1) 2) 3) (交代性) (多重線形性) det(a1 + a2, b) = det(a1, b) + det(a2, b)
  • 111. 線形変換は多変数の変換のうち最も単純なもの。 ホントは逆変換が一発で求められること自体ありがたい。
  • 112. プログラマのための線形代数 再 入門 3 ∼基底変換、固有値、そしてその先∼ 次回予告:
  • 113. Thanks! Twitter: @taketo1024
 Blog: http://taketo1024.hateblo.jp 0 @ 1 2 3 1 0 1 2 1 2 1 A · 1 detA 0 B B B B B B B B B B @ 0 1 1 2 2 3 0 1 2 3 0 1 1 1 2 2 1 3 2 2 1 3 1 1 1 0 2 1 1 2 2 1 1 2 1 0 1 C C C C C C C C C C A = 0 @ 1 0 0 0 1 0 0 0 1 1 A