0

我想找到“如果矩阵 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)

但答案只是 b 的泛化倒数的 row=1 col=1 值。

请帮我....

4

2 回答 2

0

你有一只流浪(

ifelse(ncol(b)==nrow(b),ifelse(det(b)==0,ginv(b),solve(b)),ginv(b))
## [1] -0.6388889

请注意,您不需要这样做ifelsencol(b)==nrow(b)不返回向量,也不返回det(b)==0.

于 2013-05-12T02:38:57.597 回答
0

要回答您的问题,请使用简单的ifandelse语句返回值。代替

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
于 2013-05-12T02:41:13.277 回答