我想在不使用函数的情况下找到逆矩阵的值solve(x)
。
inversed matrix = 1/det(x) * "cofactor"^(transpose)
我知道矩阵 = 的行列式和矩阵 =det(x)
的转置t(x)
。但我不知道如何获得矩阵 x 的辅因子并获得逆矩阵。
矩阵的第 (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)
}
一个警告:你不应该使用这种计算逆矩阵的方法,除了家庭作业,因为它是计算密集型的,而且(如果我没记错的话)在数值上不是很稳定。出于实际目的,请使用solve
orqr.solve
或chol2inv
。比较这些:
A <- matrix(c(5,1,1,3),2,2)
solve(A)
qr.solve(A)
chol2inv(chol(A))
如果您有预先计算的cholesky 分解,chol2inv
将对您进行排序。