線形代数



  • 行列とベクトルの演算

    > v1:=vector([1,2,4]);



    > A:=matrix([[1,alpha,beta],[0,1,gamma],[0,0,1]]);



    > evalm(A);



    > evalm(A &* v1);



    > multiply(A,v1);



  • 順番を入れ換えると計算できない。

    > multiply(v1,A);



  • Maple では通常もちいるベクトルは列ベクトルらしい

    そこで、チェック!

  • 列ベクトルを行ベクトルに転置してから演算の順番を入れ換えると計算できる。

    > multiply(transpose(v1),A);



  • 列ベクトルと行ベクトルの積

    > multiply(v1, transpose(v1));



  • 上の演算は行列の積として計算されるようだ。
    試しに、以下の行列の演算を行うと同じ結果を得る。

    > multiply(matrix([[1],[2],[4]]),matrix([[1,2,4]]));



  • 3行1列の行列

    > aa:=matrix([[1],[2],[4]]);



  • 1行3列の行列

    > bb:=transpose(aa);



  • 乗算では順番が大切

    > multiply(aa,bb);



    > multiply(bb,aa);



  • 3行3列の行列

    > aaa:=matrix([[1,2,3],[4,5,6],[7,8,9]]);



  • その転置行列

    > bbb:=transpose(aaa);



  • あらためて、乗算では順番が大切

    > multiply(aaa,bbb);



    > multiply(bbb,aaa);



  • ベクトルの入力

    > vector([1, 2 ,3]);



  • 1行3列の行列

    > matrix([[1,2,3]]);



  • かぎカッコの太さの微妙な違いに注意!!

  • 列ベクトルを行ベクトルに変換すれば以下の演算ができる。

    > evalm(matrix([[1,2,3]]) - transpose(vector([1, 2 ,3])));



  • 3行1列の行列

    > matrix([[1],[2],[3]]);



  • 3行1列の行列からはベクトルはそのままで引き算できる。

    > evalm(matrix([[1],[2],[3]]) - vector([1, 2 ,3]));



  • 結論:ベクトルは、n行1列の行列として取り扱われているようだ。