【发布时间】:2019-04-05 00:42:22
【问题描述】:
晚安。我有 Coursera 的作业。但是我有两天时间试图解决我的问题。
我的作业是:
编写以下函数:
makeCacheMatrix:这个函数创建一个特殊的“矩阵”对象,可以缓存它的逆矩阵。 cacheSolve:此函数计算上面 makeCacheMatrix 返回的特殊“矩阵”的逆。如果已经计算了逆(并且矩阵没有改变),那么 cachesolve 应该从缓存中检索逆。 可以使用 R 中的 solve 函数计算方阵的逆矩阵。例如,如果 X 是方阵可逆矩阵,则 solve(X) 返回其逆矩阵。
我使用库 matlib 来计算矩阵的逆。
library(matlib)
makeCacheMatrix <- function(x = matrix()) {
if (ncol(x)==nrow(x) && det(x)!=0) {
m<-NULL
set<-function(y){
x<<-y
m<<-NULL
}
get<-function() x
setinverse <- function() m <<- inv(x)
getinverse<-function() m
list(set=set,get=get,setinverse=setinverse,getinverse=getinverse)
}else{
return(message("The matrix is'n invertible."))
}
}
cacheSolve <- function(x, ...) {
m<-x$getinverse
if (!is.null(m)) {
message("getting cached data")
return(m)
}
data<-x$get
m <- inv(data, ...)
x$setinverse(m)
m
}
但是当我尝试例如测试我的代码时
x<-makeCacheMatrix(matrix(c(1,0,0,0,1,0,0,0,2),ncol=3,nrow=3))
x$get()
x$getinverse()
我得到一个 NULL 结果。我不知道我的代码有什么问题。有人可以帮我吗?
【问题讨论】:
标签: r