SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
このスライドは、
行列計算の基礎的な内容を
淡々と述べる物です。
過度な期待はしないでください。
あと、部屋は明るくして、
画面から3メートルは離れて
見やがって下さい。
冬見の
行列をはじめからていねいに



           TokyoSNA 6th
              2012/09/07
          @who_you_me
前回(第5章)


      のとき、




   この計算、間違ってね?
というわけで、
今回は行列の基礎について、
一緒にお勉強しましょう!
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
行列とは
数学の線型代数学周辺分野における行列(ぎょうれつ、英: matrix)
は、数や記号や式などを「行」と「列」に沿って矩形状に排列した
ものである。
                         (Wikipedia)




数を長方形に並べたものを、行列と呼びます。
               (プログラミングのための線形代数)
こいつらのこと
行




 列


横の並びが行、
縦の並びが列。
2×2行列
           2×3行列
(2次正方行列)


                   5×3行列



(行数)×(列数)でサイズを表現。
行数と列数が同じ時は、n次正方行列
とも。
行列Aの第i行、第j列の値を、Aの(i, j)成分
と呼ぶ。
                  (1, 3)成分
こんな具合に添字をつける。
これを、
  3×4行列

と略記することも。
「これって何の意味があるの?」
「これって何の役に立つの?」
は、のちほど。
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
和
同じサイズの行列に対して、




 例:


要は対応する要素どうしの足し算。
定数倍
任意の数cに対して、




 例:


要はすべての要素をc倍。
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積
k×m行列   とm×n行列   に対して




例:
積(間違い)
同じサイズの行列に対して、
積(間違い)
同じサイズの行列に対して、
積(間違い)
同じサイズの行列に対して、




       なんでや!
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
行列ってなに?
答
行列は写像だ
行列は写像だ
行列は写像だ
行列は写像だ
行列は写像だ
行列は写像だ
行列は写像だ

n次元ベクトル(n×1ベクトル)   にm×n行列 を
掛けると、m次元ベクトル          が得られる。


つまり、行列   を指定すれば、ベクトルを別の
ベクトルに移す写像が定まる!
例:




2次元の点   が、3×2行列      により、



3次元の点     に写されている!
例:




行列は写像だ
2次元の点   が、3×2行列      により、



3次元の点     に写されている!
単なる「点から点への移動」じゃなくて、
「空間全体の変形」で捉えよう!



 http://www.ohmsha.co.jp/data/link/4-274-06578-2/anime/
積(間違い)
同じサイズの行列に対して、




       なんでや!
行列の積=合成写像
ベクトル    を   で飛ばし、行った先      を

さらに写像   で飛ばす。すると最終的な行き先は、
        。

このとき、行列の積      は、 を   に一気に飛ばす
写像。
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
計算してみよう!



   でも、その前に……
転置行列
行列  の行と列を入れ替えたものを、   の転置行
列と呼び、 と書く。
問題



     のとき、   を求めよ。
答
計算結果   テキスト
違うけど、何か似てるような……
計算結果     テキスト




  こうすると全く同じに
つまり……
テキストでは、(何の注釈もなしに)計算結果の対
角成分を0にしていた!




なんでそんなことをするのか
アジェンダ
1.行列ってなに?
2.行列計算の基礎
3.もう一度、行列ってなに?
4.計算してみよう!
5. Pythonで行列計算
Pythonで行列計算
numpyを使おう!
 >>> import numpy as np
 >>> A = np.matrix([
 ...     [0, 0, 0, 0, 1],
 ...     [1, 0, 0, 0, 0],
 ...     [1, 1, 0, 0, 0],
 ...     [0, 1, 1, 1, 1],
 ...     [0, 0, 1, 0, 0],
 ...     [0, 0, 1, 1, 0]
 ... ])
 >>> A * A.T
 matrix([[1, 0, 0, 1, 0],
         [0, 1, 1, 0, 0],
         [0, 1, 2, 1, 0],
         [1, 0, 1, 4, 2],
         [0, 0, 0, 2, 2]])
参考
平岡和幸、堀玄
『プログラミングのための線形代数』
オーム社
以上、ご清聴
ありがとうございました!

Más contenido relacionado

Destacado

『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データHisao Soyama
 
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみるHisao Soyama
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―Hisao Soyama
 
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクションHisao Soyama
 
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
 グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ- グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-Hisao Soyama
 
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦CO-Sol for Community
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入Hisao Soyama
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~Hisao Soyama
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 

Destacado (10)

『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ『アジャイルデータサイエンス』2章 データ
『アジャイルデータサイエンス』2章 データ
 
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
階層ベイズでプロ野球各球団の「本当の強さ」を推定してみる
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
 
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
 
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
 グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ- グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
 
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~
本当に知ってる!? リアルなデータ分析の世界~サイカのエンジニアが語る、話題の技術の「いま」と「未来」~
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 

Matrix