我想找到“如果矩阵b是非奇异矩阵,则找到b的倒数,否则找到b的广义逆”
所以我做了这个陈述。但它不起作用。
a<-c(1:9)
a
b<-matrix(a,3,3)
b
library(MASS)
ifelse(ncol(b)==nrow(b),(ifelse(det(b)==0,ginv(b),solve(b)),ginv(b))
然后我修改了这样的语句
a<-c(1:9)
a
b<-matrix(a,3,3)
b
library(MASS)
d<-ifelse(det(b)==0,ginv(b),solve(b))
e<-ginv(b)
ifelse(ncol(b)==nrow(b),d,e)
但答案只是行= 1 col = 1 b的广义逆的值。
请帮助我....
答案 0 :(得分:0)
你有一个迷路(
ifelse(ncol(b)==nrow(b),ifelse(det(b)==0,ginv(b),solve(b)),ginv(b))
## [1] -0.6388889
请注意,您不需要ifelse
。 ncol(b)==nrow(b)
不会返回向量,也不会返回det(b)==0
。
答案 1 :(得分:0)
要回答您的问题,请使用简单的if
和else
语句返回值。
取代
d <- ifelse(det(b)==0,ginv(b),solve(b))
e <- ginv(b)
ifelse(ncol(b)==nrow(b),d,e)
由此:
d <- if(det(b)==0) ginv(b) else solve(b)
e <- ginv(b)
if(ncol(b)==nrow(b)) d else e
## [,1] [,2] [,3]
## [1,] -0.6388889 -5.555556e-02 0.5277778
## [2,] -0.1666667 -9.234353e-17 0.1666667
## [3,] 0.3055556 5.555556e-02 -0.1944444