|
3.7.5 ベクトルおよび行列の積

ベクトルおよび行列の各種の積
スカラー kをベクトルの各要素に掛ける.
In[1]:= k {a, b, c}
Out[1]= 
「ドット(点)」演算子はベクトルのスカラー積を与える.
In[2]:= {a, b, c} . {ap, bp, cp}
Out[2]= 
ドット演算子を使い行列とベクトルを掛け合わせることも可能である.
In[3]:= {{a, b}, {c, d}} . {x, y}
Out[3]= 
ドット演算子は行列同士の積にも使う.
In[4]:= {{a, b}, {c, d}} . {{1, 2}, {3, 4}}
Out[4]= 
ドット演算子を使ったベクトルと行列の積では,右方向にでも左方向にでも積が取れる.このことは重要で,これに関連した形で, Mathematicaでは「行」ベクトルと「列」ベクトルが区別されないようになっている.ドット演算子を使えば必要な演算操作を的確に行ってくれる.(形式的には,内積 a.bとするとテンソル aの最後の添数が bの最初の添数で縮約されることを示す.)
ベクトル vと行列 mを定義する.
In[5]:= m = {{a, b}, {c, d}} ; v = {x, y}
Out[5]= 
ベクトル vを mに左側から掛け合わせる. vが行ベクトルとして扱われることに 注目.
In[6]:= m . v
Out[6]= 
今度は,右側から vを掛け合わす. vは列ベクトルとして扱われる.
In[7]:= v . m
Out[7]= 
左右両側から vを mに掛け合わせる.スカラー量が得られる.
In[8]:= v . m . v
Out[8]= 
目的によっては,具体的な要素を与えずにベクトルや行列を設けたいときがある.そのようなときも,ドット演算子が使え,シンボル的に積を表すことができる.
ドット演算子が非可換な積として機能する.
In[9]:= a . b . a
Out[9]= 
それでも,結合性はある.
In[10]:= (a . b) . (a . b)
Out[10]= 
和の内積は自動的には展開されない.
In[11]:= (a + b) . c . (d + e)
Out[11]= 
この場合,関数Distributeを使って分配則を強制できる. Distributeの使い方は 2.2.10を参照のこと.
In[12]:= Distribute[ % ]
Out[12]= 
ドット演算子は,ベクトルや行列等の「内積」を与える.高等な計算では,さらに,外積やクロネッカー(Kronecker)の積が必要になるだろう.このような演算子は一般化された関数 Outerを使い構成で きる.
ベクトルの外積は行列になる.
In[13]:= Outer[Times, {a, b}, {c, d}]
Out[13]= 
行列とベクトルの外積は3階のテンソルになる.
In[14]:= Outer[Times, {{1, 2}, {3, 4}}, {x, y, z}]
Out[14]= 
外積は 3.7.11で詳しく説明するので,そちらを参照のこと.
|