我试图使用R来计算矩阵行列式,使用拉普拉斯表达式。
我使用递归函数,我的代码附在下面。它运行正常,但给了我一个NA结果。我不知道我错在哪里。有谁可以帮助我?
determinant<-function(A){
n<-ncol(A)
det<-numeric(n)
A<-matrix(nrow=n,ncol=n) #A is a square matrix, all values are generated randomly
if (n==1) {
det=A[1,1] #give the determinant if n=1
}
return(det)
}
M3 <- matrix(rnorm(5^2), 5, 5)
determinant(M3)
答案 0 :(得分:1)
问题在于您的行A<-matrix(nrow=n,ncol=n)
这会使用填充了A
值的矩阵替换参数NA
;如果你评论它可以正常工作:
determinant<-function(A){
n<-ncol(A)
det<-numeric(n)
# A<-matrix(nrow=n,ncol=n) #A is a square matrix, all values are generated randomly
if (n==1) {
det=A[1,1] #give the determinant if n=1
}
else if (n==2){
det=A[1,1]*A[2,2]-A[1,2]*A[2,1] #give the determinant if n=2
}
return(det)
}
set.seed(123) # set the seed for reproducibility
M3 <- matrix(rnorm(5^2), 5, 5)
determinant(M3)
[1] -0.3867446
det(M3) # check the result
[1] -0.3867446