DetL_JPH {lazy.symbolic}R Documentation

ラプラス展開による記号行列の行列式

Description

英語のヘルプファイル: DetL

Arguments

A

正方行列(数値または記号)

row

ラプラス展開に用いる行番号

col

ラプラス展開に用いる列番号

maxlevel

再帰呼び出しの深さ

simplify

= 0 の場合、Simplify や remove_paren を使用しない
= 1 の場合、Simplify を使用

debug

= 1 の場合、詳細を表示

level

変更しないこと

Details

ラプラス展開は以下のように定義されます:

 DetL(A) = \sum_{j=1}^n  A[i,j] x cofactor(A,i,j)
 cofactor(A,i,j) = (-1)^{i+j} DetL( A[-i,-j] )

ここで DetL( A[-i,-j] ) は A の小行列 M(i,j) と呼ばれます。

Value

行列 A の行列式

Examples


# 2 x 2 行列の行列式
Aa2 <- demomat(2,2,root="a")
DetL(Aa2)

# 三角行列
L=demomat(4,4,root="L", shape="lowert")
DetL(L, maxlevel=3)
U=demomat(4,4,root="U", shape="uppert")
DetL(U, maxlevel=3)

# 3 x 3 行列
Aa3 <- matrix(letters[1:9],3,3,byrow=1)
# 2 次小行列を用いた場合
DetL(Aa3)
DetL(Aa3, row=2)

# 完全なラプラス展開
( d1 <- DetL(Aa3, maxlevel=2) )
( d2 <- DetL(Aa3, row=2, maxlevel=2) )
( d3 <- DetL(Aa3, row=NULL, col=1, maxlevel=2) )

# 数値による検算
set.seed(1701)
An <- matrix( runif(9), 3, 3 )
Printm(det(An))
Printm( Eval(d1, Aa3=An), Eval(d2, Aa3=An), Eval(d3, Aa3=An) )

# MatSwp を使う Det 関数との比較
( d4 <- Det(Aa3) )
Printm( Eval(d4, Aa3=An) )


# 4 x 4 行列
Aa4 <- matrix(letters[1:16],4,4,byrow=1)
DetL(Aa4)
# 以下では A2 は第1レベルの部分行列を表す。
# すべての A2 が同じではないことに注意。
DetL(Aa4, maxlevel=2)
DetL(Aa4, maxlevel=3)

# 一般の n x n の場合(n が大きいと遅い)
n <- 4
( B <- demomat(n,n,root="b") )
( dd <- DetL(B, maxlevel=n) )

# 数値による検算
set.seed(1701)
Bn <- matrix( runif(n*n) ,n )
Printm( Eval(dd,B=Bn), det(Bn) )



[Package lazy.symbolic version 1.0.0.20250830 ]