7,870 views
この記事は最終更新から 1842日 が経過しています。
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