SlideShare a Scribd company logo
Submit Search
Upload
プログラマのための線形代数再入門
Report
Share
Taketo Sano
Follow
•
317 likes
•
53,920 views
1
of
81
プログラマのための線形代数再入門
•
317 likes
•
53,920 views
Report
Share
Download Now
Download to read offline
Science
2015/1/30 「プログラマのための数学勉強会」にて発表。 動画: https://www.youtube.com/watch?v=hyzotMaTtPg
Read more
Taketo Sano
Follow
Recommended
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列 by
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Taketo Sano
57.3K views
•
113 slides
基底変換、固有値・固有ベクトル、そしてその先 by
基底変換、固有値・固有ベクトル、そしてその先
Taketo Sano
31.4K views
•
50 slides
グラフィカルモデル入門 by
グラフィカルモデル入門
Kawamoto_Kazuhiko
117.8K views
•
67 slides
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 by
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
Ken'ichi Matsui
96K views
•
96 slides
BERT入門 by
BERT入門
Ken'ichi Matsui
7.5K views
•
36 slides
深層学習の数理 by
深層学習の数理
Taiji Suzuki
79.7K views
•
182 slides
More Related Content
What's hot
因果探索: 基本から最近の発展までを概説 by
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
15.3K views
•
47 slides
研究効率化Tips Ver.2 by
研究効率化Tips Ver.2
cvpaper. challenge
20.2K views
•
298 slides
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築 by
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
1.5K views
•
19 slides
【メタサーベイ】基盤モデル / Foundation Models by
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
16.4K views
•
63 slides
計算機アーキテクチャを考慮した高能率画像処理プログラミング by
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
8.8K views
•
173 slides
FastAPIを使って 機械学習モデルをapi化してみた by
FastAPIを使って 機械学習モデルをapi化してみた
Sho Tanaka
1.2K views
•
15 slides
What's hot
(20)
因果探索: 基本から最近の発展までを概説 by Shiga University, RIKEN
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
•
15.3K views
研究効率化Tips Ver.2 by cvpaper. challenge
研究効率化Tips Ver.2
cvpaper. challenge
•
20.2K views
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築 by Kosuke Shinoda
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
•
1.5K views
【メタサーベイ】基盤モデル / Foundation Models by cvpaper. challenge
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
•
16.4K views
計算機アーキテクチャを考慮した高能率画像処理プログラミング by Norishige Fukushima
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
•
8.8K views
FastAPIを使って 機械学習モデルをapi化してみた by Sho Tanaka
FastAPIを使って 機械学習モデルをapi化してみた
Sho Tanaka
•
1.2K views
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I... by Deep Learning JP
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
Deep Learning JP
•
677 views
畳み込みニューラルネットワークの高精度化と高速化 by Yusuke Uchida
畳み込みニューラルネットワークの高精度化と高速化
Yusuke Uchida
•
64.5K views
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial) by RyuichiKanoh
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
•
25.6K views
数学で解き明かす深層学習の原理 by Taiji Suzuki
数学で解き明かす深層学習の原理
Taiji Suzuki
•
3.8K views
cvpaper.challenge 研究効率化 Tips by cvpaper. challenge
cvpaper.challenge 研究効率化 Tips
cvpaper. challenge
•
21.3K views
Active Learning の基礎と最近の研究 by Fumihiko Takahashi
Active Learning の基礎と最近の研究
Fumihiko Takahashi
•
942 views
近年のHierarchical Vision Transformer by Yusuke Uchida
近年のHierarchical Vision Transformer
Yusuke Uchida
•
13.8K views
Optimizer入門&最新動向 by Motokawa Tetsuya
Optimizer入門&最新動向
Motokawa Tetsuya
•
23K views
機械学習による統計的実験計画(ベイズ最適化を中心に) by Kota Matsui
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
•
13.1K views
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム by Kouhei Sutou
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
•
9.1K views
強化学習その3 by nishio
強化学習その3
nishio
•
26.7K views
テスト文字列に「うんこ」と入れるな by Kentaro Matsui
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
•
177.9K views
Glibc malloc internal by Motohiro KOSAKI
Glibc malloc internal
Motohiro KOSAKI
•
62.1K views
ブレインパッドにおける機械学習プロジェクトの進め方 by BrainPad Inc.
ブレインパッドにおける機械学習プロジェクトの進め方
BrainPad Inc.
•
14.5K views
Viewers also liked
ゲーム開発におけるバックトラック法 by
ゲーム開発におけるバックトラック法
大介 束田
6.5K views
•
40 slides
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg by
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
Junpei Tsuji
70.3K views
•
42 slides
偶然にも500万個のSSH公開鍵を手に入れた俺たちは by
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
Yoshio Hanawa
124.7K views
•
21 slides
技術選択とアーキテクトの役割 by
技術選択とアーキテクトの役割
Toru Yamaguchi
42K views
•
90 slides
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏 by
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
Yusuke Hirao
82.1K views
•
88 slides
運用に自動化を求めるのは間違っているだろうか by
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
55.8K views
•
195 slides
Viewers also liked
(20)
ゲーム開発におけるバックトラック法 by 大介 束田
ゲーム開発におけるバックトラック法
大介 束田
•
6.5K views
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg by Junpei Tsuji
「明日話したくなる「素数」のお話」第1回プログラマのための数学勉強会 #maths4pg
Junpei Tsuji
•
70.3K views
偶然にも500万個のSSH公開鍵を手に入れた俺たちは by Yoshio Hanawa
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
Yoshio Hanawa
•
124.7K views
技術選択とアーキテクトの役割 by Toru Yamaguchi
技術選択とアーキテクトの役割
Toru Yamaguchi
•
42K views
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏 by Yusuke Hirao
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
Yusuke Hirao
•
82.1K views
運用に自動化を求めるのは間違っているだろうか by Masahito Zembutsu
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
•
55.8K views
実践イカパケット解析 by Yuki Mizuno
実践イカパケット解析
Yuki Mizuno
•
118.7K views
MySQLテーブル設計入門 by yoku0825
MySQLテーブル設計入門
yoku0825
•
48.3K views
ウェブパフォーマンスの基礎とこれから by Hiroshi Kawada
ウェブパフォーマンスの基礎とこれから
Hiroshi Kawada
•
111.7K views
AutoEncoderで特徴抽出 by Kai Sasaki
AutoEncoderで特徴抽出
Kai Sasaki
•
37.7K views
オンラインゲームの仕組みと工夫 by Yuta Imai
オンラインゲームの仕組みと工夫
Yuta Imai
•
869.7K views
Webアプリケーション負荷試験実践入門 by 樽八 仲川
Webアプリケーション負荷試験実践入門
樽八 仲川
•
51.1K views
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発 by 慎一 古賀
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
•
86K views
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側 by Takeshi HASEGAWA
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
Takeshi HASEGAWA
•
132.6K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 by Takuto Wada
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
•
148.6K views
人は一ヶ月でエンジニアになれるのか - 詳細解説 by Livesense Inc.
人は一ヶ月でエンジニアになれるのか - 詳細解説
Livesense Inc.
•
394.8K views
中の下のエンジニアを脱出するための仕事術 by Noriaki Kadota
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
•
46.8K views
SSL/TLSの基礎と最新動向 by shigeki_ohtsu
SSL/TLSの基礎と最新動向
shigeki_ohtsu
•
56.8K views
MySQL 5.7の罠があなたを狙っている by yoku0825
MySQL 5.7の罠があなたを狙っている
yoku0825
•
122.3K views
フーリエ変換と画像圧縮の仕組み by yuichi takeda
フーリエ変換と画像圧縮の仕組み
yuichi takeda
•
239.5K views
Similar to プログラマのための線形代数再入門
Operations research yonezawa_no2 by
Operations research yonezawa_no2
ssuser0bebd2
300 views
•
81 slides
平方剰余 by
平方剰余
Arisa Niitsuma
2.4K views
•
80 slides
トーナメントは運か実力か by
トーナメントは運か実力か
Kazuro Fukuhara
1.9K views
•
31 slides
KMC JavaScriptから始めるプログラミング2016 第一回 by
KMC JavaScriptから始めるプログラミング2016 第一回
kyoto university
1.9K views
•
78 slides
Operations research yonezawa_no1 by
Operations research yonezawa_no1
ssuser0bebd2
845 views
•
65 slides
暗号技術の実装と数学 by
暗号技術の実装と数学
MITSUNARI Shigeo
9.6K views
•
35 slides
Similar to プログラマのための線形代数再入門
(6)
Operations research yonezawa_no2 by ssuser0bebd2
Operations research yonezawa_no2
ssuser0bebd2
•
300 views
平方剰余 by Arisa Niitsuma
平方剰余
Arisa Niitsuma
•
2.4K views
トーナメントは運か実力か by Kazuro Fukuhara
トーナメントは運か実力か
Kazuro Fukuhara
•
1.9K views
KMC JavaScriptから始めるプログラミング2016 第一回 by kyoto university
KMC JavaScriptから始めるプログラミング2016 第一回
kyoto university
•
1.9K views
Operations research yonezawa_no1 by ssuser0bebd2
Operations research yonezawa_no1
ssuser0bebd2
•
845 views
暗号技術の実装と数学 by MITSUNARI Shigeo
暗号技術の実装と数学
MITSUNARI Shigeo
•
9.6K views
More from Taketo Sano
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201... by
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Taketo Sano
1.1K views
•
52 slides
トポロジーと圏論の夜明け by
トポロジーと圏論の夜明け
Taketo Sano
3.4K views
•
81 slides
Swift で数学研究のススメ by
Swift で数学研究のススメ
Taketo Sano
1.4K views
•
33 slides
(意欲的な中高生のための)トポロジー・圏論・コンピュータ by
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
Taketo Sano
3.8K views
•
76 slides
特性類の気持ち by
特性類の気持ち
Taketo Sano
3.9K views
•
42 slides
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ by
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Taketo Sano
29.4K views
•
42 slides
More from Taketo Sano
(20)
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201... by Taketo Sano
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Taketo Sano
•
1.1K views
トポロジーと圏論の夜明け by Taketo Sano
トポロジーと圏論の夜明け
Taketo Sano
•
3.4K views
Swift で数学研究のススメ by Taketo Sano
Swift で数学研究のススメ
Taketo Sano
•
1.4K views
(意欲的な中高生のための)トポロジー・圏論・コンピュータ by Taketo Sano
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
Taketo Sano
•
3.8K views
特性類の気持ち by Taketo Sano
特性類の気持ち
Taketo Sano
•
3.9K views
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ by Taketo Sano
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Taketo Sano
•
29.4K views
山手線は丸いのか?プログラマのためのトポロジー入門 by Taketo Sano
山手線は丸いのか?プログラマのためのトポロジー入門
Taketo Sano
•
24K views
何もないところから数を作る by Taketo Sano
何もないところから数を作る
Taketo Sano
•
4.8K views
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学 by Taketo Sano
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
Taketo Sano
•
4.5K views
情報幾何学 #2.4 by Taketo Sano
情報幾何学 #2.4
Taketo Sano
•
2K views
情報幾何学 #2 #infogeo16 by Taketo Sano
情報幾何学 #2 #infogeo16
Taketo Sano
•
2.2K views
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト by Taketo Sano
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
•
7.6K views
何もないところから数を作る by Taketo Sano
何もないところから数を作る
Taketo Sano
•
9.5K views
objc2swift (続・自動変換の野望) by Taketo Sano
objc2swift (続・自動変換の野望)
Taketo Sano
•
4.3K views
さらに上を目指すための iOS アプリ設計 by Taketo Sano
さらに上を目指すための iOS アプリ設計
Taketo Sano
•
30.9K views
objc2swift (自動変換の野望) by Taketo Sano
objc2swift (自動変換の野望)
Taketo Sano
•
6.6K views
2015 02-18 xxx-literalconvertible by Taketo Sano
2015 02-18 xxx-literalconvertible
Taketo Sano
•
3.8K views
let UIWebView as WKWebView by Taketo Sano
let UIWebView as WKWebView
Taketo Sano
•
29.5K views
コードを書けば複素数がわかる by Taketo Sano
コードを書けば複素数がわかる
Taketo Sano
•
4.8K views
虚数は作れる!Swift で学ぶ複素数 by Taketo Sano
虚数は作れる!Swift で学ぶ複素数
Taketo Sano
•
42.2K views
プログラマのための線形代数再入門
1.
プログラマのための線形代数 再 入門 ∼行列・線形変換・アフィン変換∼ @taketo1024 2015/01/30
第1回プログラマのための数学勉強会
2.
今日の内容 1. 行列の積 2. 線形変換とアフィン変換
3.
1. 行列の積
4.
行列の足し算 ✓ 3 5 4 10 ◆ + ✓ 3
4 5 8 ◆ = ✓ 3 + 3 5 + 4 4 + 5 10 + 8 ◆ = ✓ 6 9 9 18 ◆
5.
行列の掛け算 ✓ 3 5 4 10 ◆
✓ 3 4 5 8 ◆ = ✓ 3 · 3 5 · 4 4 · 5 10 · 8 ◆ = ✓ 9 20 20 80 ◆
6.
行列の掛け算 ✓ 3 5 4 10 ◆
✓ 3 4 5 8 ◆ = ✓ 3 · 3 5 · 4 4 · 5 10 · 8 ◆ = ✓ 9 20 20 80 ◆ こうだったら簡単だったのに…
7.
行列の掛け算 ✓ 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 ◆ これが正しい計算規則です。
8.
行列の掛け算 ✓ 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 ◆
9.
行列の掛け算 ✓ 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 ◆
10.
行列の掛け算 ✓ 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 ◆
11.
行列の掛け算 ✓ 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 ◆
12.
行列の掛け算 ✓ 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 ◆
13.
行列の掛け算 ✓ 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 ◆
14.
行列の掛け算 ✓ 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 ◆
15.
行列の掛け算 ✓ 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 ◆
16.
行列の掛け算 ✓ 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 ◆
17.
行列の掛け算 ✓ 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 ◆
18.
行列の掛け算 ✓ 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 ◆
19.
行列の掛け算 ✓ 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 ◆ ふぅ…
20.
正直、3 3以上の行列計算は 地獄です。 (僕は必ず計算を間違うので気が狂いそうになる)
21.
なぜこう定義する?
22.
もんだい • さの工場では車とトラックを製造しています。 • 車の製造には作業員3人、ロボット5台の稼働が必 要です。 •
トラックの製造には作業員4人、ロボット8台の稼 働が必要です。 • さの工場で車を2台、トラックを3台製造するのに 必要な作業員とロボットの稼働はいくらでしょう?
23.
こたえ 車2台 : 2
(作業員:3人 + ロボット:5台) トラック3台 : 3 (作業員:4人 + ロボット:8台) +) 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台
24.
こたえ 車2台 : 2
(作業員:3人 + ロボット:5台) トラック3台 : 3 (作業員:4人 + ロボット:8台) +) 作業員:(2 3 + 3 4) = 18人、 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台
25.
こたえ 車2台 : 2
(作業員:3人 + ロボット:5台) トラック3台 : 3 (作業員:4人 + ロボット:8台) +) 作業員:(2 3 + 3 4) = 18人 ロボット:(2 5 + 3 8) = 34台 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台
26.
こたえ 車2台 : 2
(作業員:3人 + ロボット:5台) トラック3台 : 3 (作業員:4人 + ロボット:8台) +) 作業員:(2 3 + 3 4) = 18人 ロボット:(2 5 + 3 8) = 34台 こたえ 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台
27.
行列の積で書き直すと…
28.
(ベクトルは縦に書かないの?は後で説明します) 車・トラック 作業員・ロボット 2 3 ✓ 3 5 4
8 ◆ = 2 · 3 + 3 · 4 2 · 5 + 3 · 8 = 18 34 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台
29.
もんだい 2 • 作業員はサンドイッチを2個食べ、コーヒーを3杯 飲みます。 •
ロボットはサンドイッチ6個、コーヒー10杯を燃 料として動きます。 • さの工場で車を2台、トラックを3台製造するのに 必要なサンドイッチとコーヒーはいくらでしょう?
30.
こたえ SW COFFEE 作業員 2個/人
3杯/人 ロボット 6個/台 10杯/台 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台 ✓ 3 5 4 8 ◆ ✓ 2 3 6 10 ◆
31.
こたえ 2 3 ✓ 3 5 4
8 ◆ = 18 34 SW COFFEE 作業員 2個/人 3杯/人 ロボット 6個/台 10杯/台 作業員 ロボット 車 3人/台 5人/台 トラック 4台/台 8台/台 車・トラック 作業員・ロボット
32.
こたえ 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台/台 車・トラック 作業員・ロボット 作業員・ロボット
33.
こたえ 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台/台 こたえ 車・トラック 作業員・ロボット サンドイッチ・コーヒー作業員・ロボット
34.
まとめて書けば: 2 3 ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ = 18 34 ✓ 2 3 6 10 ◆ = 240 394
35.
まとめて書けば: 2 3 ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ = 18 34 ✓ 2 3 6 10 ◆ = 240 394先にこっちを計算すると…
36.
まとめて書けば: 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 ◆
37.
まとめて書けば: 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 ◆
38.
まとめて書けば: 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
39.
まとめて書けば: 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
40.
まとめて書けば: 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 同じ!
41.
18 34 つまりこういうこと ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ 車・トラック 作業員・ロボット サンドイッチ・コーヒー 52 95 240 394
42.
18 34 つまりこういうこと ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ 車・トラック 作業員・ロボット サンドイッチ・コーヒー 52 95 ✓ 36 59 56 92 ◆ 一発でいける! 240 394
43.
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 ◆ 行列の掛け算は、対応表の合成になっていた! 打ち消しあう
44.
もんだい 3 • では車を52台、トラックを95台製造するのに必要 なサンドイッチとコーヒーは?
45.
こたえ 18 34 240
394 ✓ 3 5 4 8 ◆ ✓ 2 3 6 10 ◆ 車・トラック 作業員・ロボット サンドイッチ・コーヒー 52 95 … …
46.
18 34 こたえ ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ 車・トラック 作業員・ロボット サンドイッチ・コーヒー 52 95 … ✓ 36 59 56 92 ◆ 一発でいきましょう 240 394…
47.
18 34 こたえ ✓ 3 5 4
8 ◆ ✓ 2 3 6 10 ◆ 車・トラック 作業員・ロボット サンドイッチ・コーヒー 52 95 … ✓ 36 59 56 92 ◆ 7192 11808 こたえ
48.
行列の積は変換の合成と対応する形で 定義されていた! x y x
y A x y AB A B AB あらかじめ積を計算しておけば、中間をすっ飛ばせる!
49.
ちなみに数学ではベクトルを縦に書き、 行列を左から掛けることが多い A B ✓ x y ◆ A ✓ x y ◆ BA ✓ x y ◆ BA 順序に注意! と書く場合はこっちの方が分かりやすいf(~x)
= A~x
50.
「転置」を取れば同じ計算になる 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 系
51.
以後、変換について話すので後者の スタイルで書きます。 (DirectX 系の人は脳内転置お願いします)
52.
2. 線形変換とアフィン変換
53.
線形変換 ベクトルの線形性(平行と比率)の保たれる変換 f
54.
線形変換 … 和をバラせる … 実数倍をバラせる ( f(~x
+ ~y) = f(~x) + f(~y) f(a · ~x) = a · f(~x)
55.
✓ 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
56.
その結果は行列とベクトルの積で書ける! 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 ◆
57.
つまり線形変換は の行き先を並べた行列で表現できる! ✓ 1 0 ◆ , ✓ 0 1 ◆ f f ✓ x y ◆ = ✓ ax bx ay
by ◆ ✓ x y ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ ✓ ax ay ◆ ✓ bx by ◆ … f の行列表示f
58.
同様に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
59.
線形変換の合成は行列の積に対応する ✓ x y ◆ f ✓ x y ◆ = A ✓ x y ◆ g ✓ f ✓ x y ◆◆ = BA ✓ x y ◆ f
g g f : f と g の合成f g 左から作用
60.
行列は線形変換の定量表現!
61.
線形変換にはどんなものが ある?
62.
等倍・偏倍変換 A = ✓ a 0 0
b ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ a 0 ◆ ✓ 0 b ◆
63.
回転 A = ✓ cos✓ sin✓ sin✓
cos✓ ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ cos ✓ sin ✓ ◆ ✓ sin ✓ cos ✓ ◆
64.
反転 A = ✓ 1 0 0
1 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ 0 1 ◆ ✓ 1 0 ◆
65.
正射影 A = ✓ 1 0 0
0 ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ 1 0 ◆
66.
平行移動…? ✓ 1 0 ◆ ✓ 0 1 ◆ f ✓ p q ◆
67.
とならない変換は線形でない! f ✓ 0 0 ◆ = ✓ 0 0 ◆ f ✓ 0 0 ◆ = f( ✓ 0 0 ◆ + ✓ 0 0 ◆ ) =
2f ✓ 0 0 ◆ f より、 でなければいけない。 f ✓ 0 0 ◆ = ✓ 0 0 ◆ ✓ p q ◆
68.
えー、使えねぇ…
69.
そんなことない!
70.
xy 平面は xyz
空間の z=1 に浮いていると見る ✓ x y ◆ ✓ 1 0 ◆ ✓ 0 1 ◆ 0 @ 0 0 1 1 A 0 @ x y 1 1 A
71.
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 ◆
72.
一方、こういう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 ◆ 平行移動
73.
真横から見ると分かる! 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
74.
平面上の平行移動は線形ではないが、 空間内に埋め込めば線形変換として表現できる!
75.
線形変換と平行移動を組み合わせたものを 「アフィン変換」という 0 @ 1 0 p 0
1 q 0 0 1 1 A 0 @ ax bx 0 ay by 0 0 0 1 1 A アフィン変換も一つ上の次元から見れば、 ただの線形変換! 線形変換 平行移動
76.
同様に xyz 空間も
4次元 xyzw 空間 において、 w=1 上に浮いてると考えれば、 xyz空間 w 0 B B @ 0 0 0 1 1 C C A x, y, z
77.
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 平行移動
78.
これに加えて、 「射影変換」も一つ上の次元の行列で表現できる (需要があればまた次回)
79.
3Dレンダリングの座標変換は、 全て4次元行列の積で表現できる! オブジェクト座標 ワールド座標 スクリーン座標
80.
まとめ 1. 行列は線形変換の定量表現 2. 行列の積は変換の合成に対応 3.
次数をあげれば平行移動も射影も表現できる
81.
Thanks! Twitter: @taketo1024 Blog: http://taketo1024.hateblo.jp