(15) ベクトルの内積

投稿者: | 2013/08/23

Octaveではベクトルの内積も簡単に求められる。
ベクトルaとベクトルbを以下のように定義する。

octave:20> a=[1 2 3]
a =
   1   2   3
octave:21> b=[2 3 4]
b =
   2   3   4

内積は「a・b」だからと「a*b」と書いてしまうとダメ。

octave:22> a*b
error: operator *: nonconformant arguments (op1 is 1x3, op2 is 1x3)

1行3列の行列の積として認識されてしまうのでエラーが出てしまう。

そこで、行列の積が成り立つように形を変えてやる。
すなわち、aが1行3列であれば、bを3行1列に 転置 してやれば行列の積が成り立つ。
Octaveでは行列の転置を「」で記述する。

octave:22> b'
ans =
   2
   3
   4
octave:23> a*b'
ans =  20

a=(1,2,3) と b=(2,3,4) の内積は、1×2+2×3+3×4=20 である。

当然だが、以下のように配列要素同士の積の総和を求めても同じ。

octave:24> sum(a.*b)
ans =  20

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です