欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

伴随矩阵 和 余子式, 行列式的关系

程序员文章站 2022-07-12 14:09:29
...
矩阵的伴随矩阵, 实际是由每个点位的余子式构成.
当矩阵不为正方矩阵时, 在求伴随矩阵前会刨去多余的部分再求伴随矩阵.
余子式和行列式请参考 : 
http://blog.163.com/[email protected]/blog/static/163877040201531043037899/
> install.packages("LoopAnalyst")
> x <- matrix(1:12,3,4,byrow=TRUE)
> x
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

当矩阵不为正方矩阵时, 在求伴随矩阵前会刨去多余的部分再求伴随矩阵.
> LoopAnalyst::make.adjoint(x)
     [,1] [,2] [,3]
[1,]   -4    8   -4
[2,]    8  -16    8
[3,]   -4    8   -4

因为x不是正方矩阵, 所以它的伴随矩阵等于减去第四列后得到的正方矩阵的伴随矩阵.
> x[,-4]
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    5    6    7
[3,]    9   10   11
> LoopAnalyst::make.adjoint(x[,-4])
     [,1] [,2] [,3]
[1,]   -4    8   -4
[2,]    8  -16    8
[3,]   -4    8   -4

验证一下, 伴随矩阵的每个点是不是这上面对应的余子式.
还记得余子式的计算方法吗? 

=====================
-1^(行号+列号) 
     乘以
去除对应行列后的行列式
=====================

因为x不是正方矩阵, 所以先剪掉多余的列, 然后在算余子式
> (-1)^(1+1) * det(x[,-4][-1,-1])
[1] -4
> (-1)^(2+1) * det(x[,-4][-2,-1])
[1] 8
> (-1)^(3+1) * det(x[,-4][-3,-1])
[1] -4
> (-1)^(1+2) * det(x[,-4][-1,-2])
[1] 8
> (-1)^(2+2) * det(x[,-4][-2,-2])
[1] -16
> (-1)^(3+2) * det(x[,-4][-3,-2])
[1] 8
....


以上用到矩阵去除某行或某列的方法
如x[-1, -2]表示减去第1行和第2列

> x
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> x[-1,-2]
     [,1] [,2] [,3]
[1,]    5    7    8
[2,]    9   11   12

如x[-1,]表示减去第1行, 注意不要忘记逗号
> x[-1,]
     [,1] [,2] [,3] [,4]
[1,]    5    6    7    8
[2,]    9   10   11   12

如x[, -2]表示减去第2列, 注意不要忘记逗号
> x[,-2]
     [,1] [,2] [,3]
[1,]    1    3    4
[2,]    5    7    8
[3,]    9   11   12


如果要减去多行或多列怎么减呢? 传入向量即可
如减去第一行, 第1列和第3列

> x
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> x[-1, -c(1,3)]
     [,1] [,2]
[1,]    6    8
[2,]   10   12


[参考]