SlideShare a Scribd company logo
1 of 81
Download to read offline
プログラマのための線形代数 再 入門
∼行列・線形変換・アフィン変換∼
@taketo1024
2015/01/30 第1回プログラマのための数学勉強会
今日の内容
1. 行列の積
2. 線形変換とアフィン変換
1. 行列の積
行列の足し算
✓
3 5
4 10
◆
+
✓
3 4
5 8
◆
=
✓
3 + 3 5 + 4
4 + 5 10 + 8
◆
=
✓
6 9
9 18
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 5 · 4
4 · 5 10 · 8
◆
=
✓
9 20
20 80
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 5 · 4
4 · 5 10 · 8
◆
=
✓
9 20
20 80
◆
こうだったら簡単だったのに…
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
これが正しい計算規則です。
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
行列の掛け算
✓
3 5
4 10
◆ ✓
3 4
5 8
◆
=
✓
3 · 3 + 5 · 5 3 · 4 + 5 · 8
4 · 3 + 10 · 5 4 · 4 + 10 · 8
◆
=
✓
34 52
62 96
◆
ふぅ…
正直、3 3以上の行列計算は
地獄です。
(僕は必ず計算を間違うので気が狂いそうになる)
なぜこう定義する?
もんだい
• さの工場では車とトラックを製造しています。
• 車の製造には作業員3人、ロボット5台の稼働が必
要です。
• トラックの製造には作業員4人、ロボット8台の稼
働が必要です。
• さの工場で車を2台、トラックを3台製造するのに
必要な作業員とロボットの稼働はいくらでしょう?
こたえ
車2台 : 2 (作業員:3人 + ロボット:5台)
トラック3台 : 3 (作業員:4人 + ロボット:8台)
+)
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
こたえ
車2台 : 2 (作業員:3人 + ロボット:5台)
トラック3台 : 3 (作業員:4人 + ロボット:8台)
+)
作業員:(2 3 + 3 4) = 18人、
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
こたえ
車2台 : 2 (作業員:3人 + ロボット:5台)
トラック3台 : 3 (作業員:4人 + ロボット:8台)
+)
作業員:(2 3 + 3 4) = 18人
ロボット:(2 5 + 3 8) = 34台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
こたえ
車2台 : 2 (作業員:3人 + ロボット:5台)
トラック3台 : 3 (作業員:4人 + ロボット:8台)
+)
作業員:(2 3 + 3 4) = 18人
ロボット:(2 5 + 3 8) = 34台 こたえ
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
行列の積で書き直すと…
(ベクトルは縦に書かないの?は後で説明します)
車・トラック
作業員・ロボット
2 3
✓
3 5
4 8
◆
= 2 · 3 + 3 · 4 2 · 5 + 3 · 8
= 18 34
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
もんだい 2
• 作業員はサンドイッチを2個食べ、コーヒーを3杯
飲みます。
• ロボットはサンドイッチ6個、コーヒー10杯を燃
料として動きます。
• さの工場で車を2台、トラックを3台製造するのに
必要なサンドイッチとコーヒーはいくらでしょう?
こたえ
SW COFFEE
作業員 2個/人 3杯/人
ロボット 6個/台 10杯/台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
こたえ
2 3
✓
3 5
4 8
◆
= 18 34
SW COFFEE
作業員 2個/人 3杯/人
ロボット 6個/台 10杯/台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台 車・トラック 作業員・ロボット
こたえ
2 3
✓
3 5
4 8
◆
= 18 34
18 34
✓
2 3
6 10
◆
= 240 394
SW COFFEE
作業員 2個/人 3杯/人
ロボット 6個/台 10杯/台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台 車・トラック 作業員・ロボット
作業員・ロボット
こたえ
2 3
✓
3 5
4 8
◆
= 18 34
18 34
✓
2 3
6 10
◆
= 240 394
SW COFFEE
作業員 2個/人 3杯/人
ロボット 6個/台 10杯/台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
こたえ
車・トラック 作業員・ロボット
サンドイッチ・コーヒー作業員・ロボット
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394先にこっちを計算すると…
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
=
✓
3 · 2 + 5 · 6 3 · 3 + 5 · 10
4 · 2 + 8 · 6 4 · 3 + 8 · 10
◆
=
✓
36 59
56 92
◆
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
=
✓
3 · 2 + 5 · 6 3 · 3 + 5 · 10
4 · 2 + 8 · 6 4 · 3 + 8 · 10
◆
=
✓
36 59
56 92
◆
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
2 3
✓
36 59
56 92
◆
= 2 · 36 + 3 · 56 2 · 59 + 3 · 92
= 240 394
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
2 3
✓
36 59
56 92
◆
= 2 · 36 + 3 · 56 2 · 59 + 3 · 92
= 240 394
まとめて書けば:
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 18 34
✓
2 3
6 10
◆
= 240 394
2 3
✓
36 59
56 92
◆
= 2 · 36 + 3 · 56 2 · 59 + 3 · 92
= 240 394
同じ!
18 34
つまりこういうこと
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
車・トラック 作業員・ロボット サンドイッチ・コーヒー
52 95 240 394
18 34
つまりこういうこと
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
車・トラック 作業員・ロボット サンドイッチ・コーヒー
52 95
✓
36 59
56 92
◆
一発でいける!
240 394
SW COFFEE
作業員 2個/人 3杯/人
ロボット 6個/台 10杯/台
作業員 ロボット
車 3人/台 5人/台
トラック 4台/台 8台/台
=
SW COFFEE
車 36個/台 59杯/台
トラック 56個/台 92杯/台
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
=
✓
36 59
56 92
◆
行列の掛け算は、対応表の合成になっていた!
打ち消しあう
もんだい 3
• では車を52台、トラックを95台製造するのに必要
なサンドイッチとコーヒーは?
こたえ
18 34 240 394
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
車・トラック 作業員・ロボット サンドイッチ・コーヒー
52 95 … …
18 34
こたえ
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
車・トラック 作業員・ロボット サンドイッチ・コーヒー
52 95 …
✓
36 59
56 92
◆
一発でいきましょう
240 394…
18 34
こたえ
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
車・トラック 作業員・ロボット サンドイッチ・コーヒー
52 95 …
✓
36 59
56 92
◆
7192 11808
こたえ
行列の積は変換の合成と対応する形で
定義されていた!
x y x y A x y AB
A B
AB
あらかじめ積を計算しておけば、中間をすっ飛ばせる!
ちなみに数学ではベクトルを縦に書き、
行列を左から掛けることが多い
A B
✓
x
y
◆
A
✓
x
y
◆
BA
✓
x
y
◆
BA 順序に注意!
と書く場合はこっちの方が分かりやすいf(~x) = A~x
「転置」を取れば同じ計算になる
2 3
✓
3 5
4 8
◆ ✓
2 3
6 10
◆
= 240 394
✓
2 6
3 10
◆ ✓
3 4
5 8
◆ ✓
2
3
◆
=
✓
240
394
◆
左から作用
右から作用
… DirectX 系
… OpenGL 系
以後、変換について話すので後者の
スタイルで書きます。
(DirectX 系の人は脳内転置お願いします)
2. 線形変換とアフィン変換
線形変換
ベクトルの線形性(平行と比率)の保たれる変換
f
線形変換
… 和をバラせる
… 実数倍をバラせる
(
f(~x + ~y) = f(~x) + f(~y)
f(a · ~x) = a · f(~x)
✓
1
0
◆
,
✓
0
1
◆
の行き先だけで決まる!線形変換は
f
✓
1
0
◆
=
✓
ax
ay
◆
, f
✓
0
1
◆
=
✓
bx
by
◆
とすれば、
f
✓
x
y
◆
= f(x ·
✓
1
0
◆
+ y ·
✓
0
1
◆
)
= x · f
✓
1
0
◆
+ y · f
✓
0
1
◆
= x ·
✓
ax
ay
◆
+ y ·
✓
bx
by
◆
✓
x
y
◆
x
✓
1
0
◆
y
✓
0
1
◆
f
✓
x
y
◆
= x
✓
ax
ay
◆
+ y
✓
bx
by
◆
x
✓
ax
ay
◆
y
✓
bx
by
◆
f
その結果は行列とベクトルの積で書ける!
x
✓
ax
ay
◆
y
✓
bx
by
◆
f
✓
x
y
◆
= x
✓
ax
ay
◆
+ y
✓
bx
by
◆
=
✓
ax bx
ay by
◆ ✓
x
y
◆
f
✓
x
y
◆
=
✓
ax bx
ay by
◆ ✓
x
y
◆
つまり線形変換は の行き先を並べた行列で表現できる!
✓
1
0
◆
,
✓
0
1
◆
f
f
✓
x
y
◆
=
✓
ax bx
ay by
◆ ✓
x
y
◆
✓
1
0
◆
✓
0
1
◆
✓
ax
ay
◆
✓
bx
by
◆
… f の行列表示f
同様に3次元ベクトルの線形変換は、
3次行列との積で書ける
f
0
@
x
y
z
1
A = x
0
@
ax
ay
az
1
A + y
0
@
bx
by
bz
1
A + z
0
@
cx
cy
cz
1
A
=
0
@
ax bx cx
ay by cy
az bz cz
1
A
0
@
x
y
z
1
A
f
0
@
ax
ay
az
1
A
0
@
bx
by
bz
1
A
0
@
cx
cy
cz
1
A
線形変換の合成は行列の積に対応する
✓
x
y
◆
f
✓
x
y
◆
= A
✓
x
y
◆
g
✓
f
✓
x
y
◆◆
= BA
✓
x
y
◆
f g
g f : f と g の合成f g
左から作用
行列は線形変換の定量表現!
線形変換にはどんなものが
ある?
等倍・偏倍変換
A =
✓
a 0
0 b
◆
✓
1
0
◆
✓
0
1
◆
f
✓
a
0
◆
✓
0
b
◆
回転
A =
✓
cos✓ sin✓
sin✓ cos✓
◆
✓
1
0
◆
✓
0
1
◆
f
✓
cos ✓
sin ✓
◆
✓
sin ✓
cos ✓
◆
反転
A =
✓
1 0
0 1
◆
✓
1
0
◆
✓
0
1
◆
f
✓
0
1
◆
✓
1
0
◆
正射影
A =
✓
1 0
0 0
◆
✓
1
0
◆
✓
0
1
◆
f
✓
1
0
◆
平行移動…?
✓
1
0
◆
✓
0
1
◆
f
✓
p
q
◆
とならない変換は線形でない!
f
✓
0
0
◆
=
✓
0
0
◆
f
✓
0
0
◆
= f(
✓
0
0
◆
+
✓
0
0
◆
) = 2f
✓
0
0
◆
f
より、
でなければいけない。
f
✓
0
0
◆
=
✓
0
0
◆
✓
p
q
◆
えー、使えねぇ…
そんなことない!
xy 平面は xyz 空間の z=1 に浮いていると見る
✓
x
y
◆
✓
1
0
◆
✓
0
1
◆
0
@
0
0
1
1
A
0
@
x
y
1
1
A
xy平面の線形変換は、
z=1上で行われていると見る
0
@
ax bx 0
ay by 0
0 0 1
1
A
0
@
x
y
1
1
A =
0
@
✓
ax bx
ay by
◆ ✓
x
y
◆
1
1
A
z=1 のまま
の線形変換
✓
x
y
◆
一方、こういう3次行列を考えれば、
z=1 上の点の平行移動が表現できる!
0
@
1 0 p
0 1 q
0 0 1
1
A
0
@
x
y
1
1
A =
0
@
x + p
y + q
1
1
A
z=1 は固定されたまま!
✓
p
q
◆
平行移動
真横から見ると分かる!
x, y x, y
z z
z=1 z=1
0
@
1
0
0
1
A ,
0
@
0
1
0
1
A
0
@
0
0
1
1
A
0
@
1
0
0
1
A ,
0
@
0
1
0
1
A
0
@
p
q
1
1
A
: 不変
z=1ではxy平面の平行移動!
空間全体は線形変換
0
@
1 0 p
0 1 q
0 0 1
1
A
平面上の平行移動は線形ではないが、
空間内に埋め込めば線形変換として表現できる!
線形変換と平行移動を組み合わせたものを
「アフィン変換」という
0
@
1 0 p
0 1 q
0 0 1
1
A
0
@
ax bx 0
ay by 0
0 0 1
1
A
アフィン変換も一つ上の次元から見れば、
ただの線形変換!
線形変換 平行移動
同様に xyz 空間も 4次元 xyzw 空間 において、
w=1 上に浮いてると考えれば、
xyz空間
w
0
B
B
@
0
0
0
1
1
C
C
A
x, y, z
4次行列によって3次元空間の
線形変換・平行移動を表現できる!
0
B
B
@
ax bx cx 0
ay by cy 0
az bz cz 0
0 0 0 1
1
C
C
A
線形変換
0
B
B
@
1 0 0 p
0 1 0 q
0 0 1 r
0 0 0 1
1
C
C
A
平行移動
これに加えて、
「射影変換」も一つ上の次元の行列で表現できる
(需要があればまた次回)
3Dレンダリングの座標変換は、
全て4次元行列の積で表現できる!
オブジェクト座標 ワールド座標 スクリーン座標
まとめ
1. 行列は線形変換の定量表現
2. 行列の積は変換の合成に対応
3. 次数をあげれば平行移動も射影も表現できる
Thanks!
Twitter: @taketo1024

Blog: http://taketo1024.hateblo.jp

More Related Content

What's hot

ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話Nagisa Eto
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先Taketo Sano
 
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更T. Suwa
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdfcatupper
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~Takuya Akiba
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 

What's hot (20)

ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Rolling Hashを殺す話
Rolling Hashを殺す話Rolling Hashを殺す話
Rolling Hashを殺す話
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先
 
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 

Viewers also liked

ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法大介 束田
 
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg 「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg Junpei Tsuji
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちはYoshio Hanawa
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏Yusuke Hirao
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうかMasahito Zembutsu
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 Ken'ichi Matsui
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析Yuki Mizuno
 
MySQLテーブル設計入門
MySQLテーブル設計入門MySQLテーブル設計入門
MySQLテーブル設計入門yoku0825
 
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからHiroshi Kawada
 
AutoEncoderで特徴抽出
AutoEncoderで特徴抽出AutoEncoderで特徴抽出
AutoEncoderで特徴抽出Kai Sasaki
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門樽八 仲川
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側Takeshi HASEGAWA
 
人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説Livesense Inc.
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術Noriaki Kadota
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向shigeki_ohtsu
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているyoku0825
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みyuichi takeda
 

Viewers also liked (20)

ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法ゲーム開発におけるバックトラック法
ゲーム開発におけるバックトラック法
 
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg 「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
MySQLテーブル設計入門
MySQLテーブル設計入門MySQLテーブル設計入門
MySQLテーブル設計入門
 
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれから
 
AutoEncoderで特徴抽出
AutoEncoderで特徴抽出AutoEncoderで特徴抽出
AutoEncoderで特徴抽出
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
 
人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
 

Similar to プログラマのための線形代数再入門

Operations research yonezawa_no2
Operations research yonezawa_no2Operations research yonezawa_no2
Operations research yonezawa_no2ssuser0bebd2
 
トーナメントは運か実力か
トーナメントは運か実力かトーナメントは運か実力か
トーナメントは運か実力かKazuro Fukuhara
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回kyoto university
 
Operations research yonezawa_no1
Operations research yonezawa_no1Operations research yonezawa_no1
Operations research yonezawa_no1ssuser0bebd2
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 

Similar to プログラマのための線形代数再入門 (6)

Operations research yonezawa_no2
Operations research yonezawa_no2Operations research yonezawa_no2
Operations research yonezawa_no2
 
平方剰余
平方剰余平方剰余
平方剰余
 
トーナメントは運か実力か
トーナメントは運か実力かトーナメントは運か実力か
トーナメントは運か実力か
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
 
Operations research yonezawa_no1
Operations research yonezawa_no1Operations research yonezawa_no1
Operations research yonezawa_no1
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 

More from Taketo Sano

Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Taketo Sano
 
トポロジーと圏論の夜明け
トポロジーと圏論の夜明けトポロジーと圏論の夜明け
トポロジーと圏論の夜明けTaketo Sano
 
Swift で数学研究のススメ
Swift で数学研究のススメSwift で数学研究のススメ
Swift で数学研究のススメTaketo Sano
 
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータTaketo Sano
 
特性類の気持ち
特性類の気持ち特性類の気持ち
特性類の気持ちTaketo Sano
 
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べTaketo Sano
 
山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門Taketo Sano
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
 
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学Taketo Sano
 
情報幾何学 #2.4
情報幾何学 #2.4情報幾何学 #2.4
情報幾何学 #2.4Taketo Sano
 
情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16Taketo Sano
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
 
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) Taketo Sano
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計Taketo Sano
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)Taketo Sano
 
2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertibleTaketo Sano
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebViewTaketo Sano
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかるTaketo Sano
 
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数Taketo Sano
 

More from Taketo Sano (20)

Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
 
トポロジーと圏論の夜明け
トポロジーと圏論の夜明けトポロジーと圏論の夜明け
トポロジーと圏論の夜明け
 
Swift で数学研究のススメ
Swift で数学研究のススメSwift で数学研究のススメ
Swift で数学研究のススメ
 
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
 
特性類の気持ち
特性類の気持ち特性類の気持ち
特性類の気持ち
 
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
 
山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
 
情報幾何学 #2.4
情報幾何学 #2.4情報幾何学 #2.4
情報幾何学 #2.4
 
情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望)
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)
 
2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebView
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかる
 
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
 

プログラマのための線形代数再入門