行列の乗法

提供: testwiki
ナビゲーションに移動 検索に移動

数学において、行列の対から別の行列を作り出す二項演算としての行列の乗法(ぎょうれつのじょうほう)は、実数複素数などのが初等的な四則演算でいうところの乗法を持つことと対照的に、そのような「数の配列」の間の乗法として必ずしも一意的な演算を指しうるものではない。そのような意味では、一般に「行列の乗法」は幾つかの異なる二項演算を総称するものと考えることができる。行列の乗法の持つ重要な特徴には、与えられた行列の行および列の数(行列の型やサイズあるいは次元と呼ばれるもの)が関係して、得られる行列の成分がどのように特定されるかが述べられるということが挙げられる。

例えば、ベクトルの場合と同様に、任意の行列に対してスカラーを掛けるという操作が、その行列の全ての成分に同じ数を掛けるという方法で与えられる。また、テンプレート:仮リンクの場合と同様に、同じサイズの行列に対して成分ごとの乗法を入れることによって定まる行列の積はアダマール積と呼ばれる。それ以外にも、二つの行列のクロネッカー積区分行列として得られる。

このようにさまざまな乗法が定義できるという事情の中にあっても、しかし最も重要な行列の乗法は連立一次方程式やベクトルの一次変換に関するもので、応用数学工学へも広く応用がある。これは通例、行列の積(ぎょうれつのせき、テンプレート:Lang-en-short[1][2])と呼ばれるもので、テンプレート:Mvarテンプレート:Math 行列で、テンプレート:Mvarテンプレート:Math 行列ならば、それらの行列の積 テンプレート:Mvarテンプレート:Math 行列として与えられ、その成分は テンプレート:Mvar の各行の テンプレート:Mvar 個の成分がそれぞれ順番に テンプレート:Mvar の各列の テンプレート:Mvar 個の成分と掛け合わされる形で与えられる(後述)。

この通常の積は可換ではないが、結合的かつ行列の加法に対して分配的である。この行列の積に関する単位元(数において テンプレート:Math を掛けることに相当するもの)は単位行列であり、正方行列逆行列(数における逆数に相当)を持ち得る。行列の積に関して行列式乗法的である。一次変換行列群あるいは群の表現などの理論を考える上において行列の積は重要な演算となる。

行列のサイズが大きくなれば、二つあるいはそれ以上の行列の積の計算を定義に従って行うには、非常に膨大な時間が掛かるようになってしまうため、効果的に行列の積を計算できるアルゴリズムが考えられてきた。

スカラー倍

テンプレート:Main

行列に付随するもっとも単純な形の乗法としてスカラー乗法が挙げられる(これはクロネッカー積の特別の場合になっている)。

行列 テンプレート:Mvar のスカラー テンプレート:Math による左スカラー倍テンプレート:Lang-en-short)は、

λA=(λaij)

で与えられる テンプレート:Mvar と同じサイズの行列 テンプレート:Math となる。つまり、

λA=λ[a11a12a1ma21a22a2man1an2anm]=[λa11λa12λa1mλa21λa22λa2mλan1λan2λanm] 

同様に、行列 テンプレート:Mvar のスカラー テンプレート:Math による右スカラー倍テンプレート:Lang-en-short)は

Aλ=[a11a12a1ma21a22a2man1an2anm]λ=[a11λa12λa1mλa21λa22λa2mλan1λan2λanmλ]

で定義される。

基礎とするが(例えばまたは複素数のような)可換環ならば、左及び右スカラー倍の概念は一致して、単にスカラー倍と呼ばれる。より一般の環では(四元数体のように)非可換であるから左右が異なれば異なる乗法である。

通常の行列の積

二つの行列の積

まずは二つの行列を掛け合わせることを考える(任意個数への一般化は後述)。

行列の積の計算過程の図示。行列テンプレート:Mathの第テンプレート:Math行列テンプレート:Mathの第テンプレート:Mathの各成分の積を実線部分のように取り、続いて点線のように加えていくことにより、積テンプレート:Mathテンプレート:Math 成分を得る。

テンプレート:Math 行列 テンプレート:Mvarテンプレート:Math 行列 テンプレート:Mvar

A=[a11a12a1ma21a22a2man1an2anm],B=[b11b12b1pb21b22b2pbm1bm2bmp]

とするとき、これらの行列の積 テンプレート:Mvar(通例、乗法記号は特に用いずに併置で表す)は、 各 テンプレート:Math 成分 テンプレート:Mvarテンプレート:Mvar の第 テンプレート:Mvar 行に横に並ぶ成分 テンプレート:Mvarテンプレート:Mvar の第 テンプレート:Mvar 列に縦に並ぶ成分 テンプレート:Mvarテンプレート:Math に亙って足し合わせた和

cij=k=1maikbkj

で与えられる テンプレート:Math 行列

AB=[c11c12c1pc21c22c2pcn1cn2cnp]

である[3][4][5][6]。従って、積 テンプレート:Mvar が定義されるのは テンプレート:Mvar の列の本数と テンプレート:Mvar の行の本数が一致している場合に限られる(今の場合は テンプレート:Mvar 本)。

多数の行列の積

テンプレート:Main

二つ以上の個数の行列に対しても、それらの連続する各対に関してサイズの条件が満たされるならば、行列の積を定義することができる。

テンプレート:Math-個の行列 テンプレート:Math がそれぞれサイズ テンプレート:Math であるとき(ここで テンプレート:Math は何れも単に正整数であって、これらの下付き添数はそれぞれどの行列に対応するのかを示す以上の意味は無い)、これら行列の積

i=1nAi=A1A2An=(aij(1))(aij(2))(aij(n))

テンプレート:Math 行列であり、その任意の テンプレート:Math-成分は

i1=1s1i2=1s2in1=1sn1ai0,i1(1)ai1,i2(2)ain1,in(n)

で与えられる。

行列の冪

正方行列に関しては、行の本数と列の本数が常に等しいから、通常の数と同様に自分自身を繰り返し掛けることができて、この行列の積の特別の場合としての反復乗積は行列のテンプレート:Lang-en-short)を定義することができる。行の本数と列の本数が一致しない一般の矩形行列では冪を考えることができない。即ち、テンプレート:Math 行列 テンプレート:Mvar と正整数 テンプレート:Math に対して

Ak=AAAk times

の逆として行列の冪根を考えたり、また冪級数として行列の指数函数やその逆写像として行列の対数函数などを定義したりすることもできる。

その他の乗法

二つの行列に対して定義されるその他の乗法を以下にいくつか挙げる。実は通常の乗法よりも定義としては単純なものもいくつかある。

アダマール積

テンプレート:Main

同じサイズの二つの行列に対し、アダマール積テンプレート:Lang-en-short)、要素ごとの積テンプレート:Lang-en-short)、点ごとの積テンプレート:Lang-en-short)、成分ごとの積テンプレート:Lang-en-short)あるいはシューア積テンプレート:Lang-en-short)などと呼ばれる積を定義することができる[7]。同じサイズの二つの行列 テンプレート:Mvar, テンプレート:Mvar のアダマール積 テンプレート:Math はもとと同じサイズの行列で、その テンプレート:Math-成分は テンプレート:Mvarテンプレート:Math-成分と テンプレート:Mvarテンプレート:Math-成分との積で与えられる。つまり、

AB=(aijbij)

全部書けば、

[a11a12a1ma21a22a2man1an2anm][b11b12b1mb21b22b2mbn1bn2bnm]=[a11b11a12b12a1mb1ma21b21a22b22a2mb2man1bn1an2bn2anmbnm] 

この演算は(テンプレート:Mvar 個ある各成分において)通常の数の積を一斉に行うことに他ならない。故にアダマール積は可換結合的、かつ成分ごとの和に対して分配的になる。これはまた、クロネッカー積の主小行列でもある。

フロベニウス積

フロベニウス(内)積テンプレート:Lang-en-short)は行列を単にベクトルと見做してとった成分ごとの内積で、テンプレート:Math などと書かれることもある。これはアダマール積の成分の和でもあり、具体的に書けば

A:B=i,jaijbij=vec(tA)vec(B)=tr(tAB)=tr(AtB)

となる。ただし "テンプレート:Math" は行列のであり、"テンプレート:Math" は行列の一列化である。この内積からフロベニウスノルムが誘導される。

クロネッカー積

テンプレート:Main

二つの行列 テンプレート:Mvar, テンプレート:Mvar のサイズがそれぞれ テンプレート:Math, テンプレート:Math であるとき、これらがどのようなサイズであったとしても(サイズに関する制約条件なしに)、この二つの行列のクロネッカー積テンプレート:Lang-en-short)は

AB=[a11Ba12Ba1nBa21Ba22Ba2nBam1Bam2BamnB]

で与えられるサイズ テンプレート:Math の行列である[8]。これはより一般のテンソル積を行列に対して適用したものになっている。

テンプレート:脚注ヘルプ テンプレート:Reflist

参考文献

テンプレート:Refbegin

  • Henry Cohn, Robert Kleinberg, Balazs Szegedy, and Chris Umans. Group-theoretic Algorithms for Matrix Multiplication. テンプレート:Arxiv. Proceedings of the 46th Annual Symposium on Foundations of Computer Science, 23–25 October 2005, Pittsburgh, PA, IEEE Computer Society, pp. 379–388.
  • Henry Cohn, Chris Umans. A Group-theoretic Approach to Fast Matrix Multiplication. テンプレート:Arxiv. Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, 11–14 October 2003, Cambridge, MA, IEEE Computer Society, pp. 438–449.
  • Coppersmith, D., Winograd S., Matrix multiplication via arithmetic progressions, J. Symbolic Comput. 9, p. 251-280, 1990.
  • テンプレート:Citation
  • Knuth, D.E., The Art of Computer Programming Volume 2: Seminumerical Algorithms. Addison-Wesley Professional; 3 edition (November 14, 1997). ISBN 978-0-201-89684-8. pp. 501.
  • テンプレート:Citation.
  • Ran Raz. On the complexity of matrix product. In Proceedings of the thirty-fourth annual ACM symposium on Theory of computing. ACM Press, 2002. テンプレート:Doi.
  • Robinson, Sara, Toward an Optimal Algorithm for Matrix Multiplication, SIAM News 38(9), November 2005. PDF
  • Strassen, Volker, Gaussian Elimination is not Optimal, Numer. Math. 13, p. 354-356, 1969.
  • テンプレート:Citation
  • Vassilevska Williams, Virginia, Multiplying matrices faster than Coppersmith-Winograd, Manuscript, May 2012. PDF

テンプレート:Refend

関連項目

テンプレート:Commons category

テンプレート:Linear algebra