矩形行列の行列式

矩形行列の行列式

間違いがあるかもしれません

Mapleで使ったことを書いていくページ

上へ

    • 定義;

    • ; 行列 (ただし, ) とする. の第成分をとする.

    • この行列式を

    • とする.

    • (i)

    • の場合

    • .

    • (ii)

    • の場合

    • ,

    • ただし

    • はから第行と第列を除いた行列.

    • このように縦長の行列の行列が定義されている. このとき, Mapleでは, 次のように関数を作ればよい. PDF, Mapleファイル

    • Mapleでの矩形行列の定義

    • f:=X->

    • if MTM[size](X,1)=MTM[size](X,2) then return(LinearAlgebra[Determinant](X));

    • else

    • if MTM[size](X,2)=1 then return(add((-1)^(i-1)*X[i,1],i=1..MTM[size](X,1)));

    • else print(seq((-1)^(i-1)*X[i,1]*(linalg[delrows](linalg[delcols](X,1..1),i..i)),i=1..MTM[size](X,1))); return(add((-1)^(i-1)*X[i,1]*f(linalg[delrows](linalg[delcols](X,1..1),i..i)),i=1..MTM[size](X,1)));

    • end if;

    • end if;

    • MTM[size](X,1)=MTM[size](X,2);行列の行数と列数が同じ場合は, そのままLinearAlgebraパッケージにあるDeteminant関数に入れる.

    • 無くても良いが,

    • の場合に自作の関数に入れるよりは, 効率がいいと考えられる.

    • MTM[size](X,2)=1;列数が1の場合の処理はadd関数を使って定義通りに求める

    • print(seq((-1)^(i-1)*X[i,1]*(linalg[delrows](linalg[delcols](X,1..1),i..i)),i=1..MTM[size](X,1)));;計算途中を表示するためのprint文

    • linalg[delrows](linalg[delcols](X,1..1),i..i);linalg[delcols](X,1..1)で第1列を削除, linalg[delrows](・・・,i..i)で第i行を削除した行列を作って, 再帰的にまわす

    • (-1)^(i-1)*X[i,1];定義の(ii)の和の中の係数になっている.

参考文献

定義や定理などは, 中神・柳井 (2012)の「矩形行列の行列式」 55ページ, 定義 1.4.1などを参照 [amazon]

Cybernetのサポート 条件分岐

よしいずの雑記帳 Mapleにおける線形代数に関するコマンド

Matlabでの関数の定義などはこちら

Rでの関数定義などはこちら

トップへ