矩阵的第 (i,j) 个小数是删除第 i 行和第 j 列的矩阵。
minor <- function(A, i, j)
{
A[-i, -j]
}
第 (i,j) 个辅因子是第 (i,j) 个次要乘以 -1 的 i + j 次幂。
cofactor <- function(A, i, j)
{
-1 ^ (i + j) * minor(A, i, j)
}
通过这种方式,我得到了 A 的辅因子,那么我怎样才能得到伴随矩阵?
矩阵的第 (i,j) 个小数是删除第 i 行和第 j 列的矩阵。
minor <- function(A, i, j)
{
A[-i, -j]
}
第 (i,j) 个辅因子是第 (i,j) 个次要乘以 -1 的 i + j 次幂。
cofactor <- function(A, i, j)
{
-1 ^ (i + j) * minor(A, i, j)
}
通过这种方式,我得到了 A 的辅因子,那么我怎样才能得到伴随矩阵?
您需要括号括起来,并且在minor-1
的定义中需要一个行列式。
之后,您可以使用循环或outer
# Sample data
n <- 5
A <- matrix(rnorm(n*n), n, n)
# Minor and cofactor
minor <- function(A, i, j) det( A[-i,-j] )
cofactor <- function(A, i, j) (-1)^(i+j) * minor(A,i,j)
# With a loop
adjoint1 <- function(A) {
n <- nrow(A)
B <- matrix(NA, n, n)
for( i in 1:n )
for( j in 1:n )
B[j,i] <- cofactor(A, i, j)
B
}
# With `outer`
adjoint2 <- function(A) {
n <- nrow(A)
t(outer(1:n, 1:n, Vectorize(
function(i,j) cofactor(A,i,j)
)))
}
# Check the result: these should be equal
det(A) * diag(nrow(A))
A %*% adjoint1(A)
A %*% adjoint2(A)