我想要找到“如果矩阵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)
ifel
我需要在一个列表中solve超过上千个矩阵。但是,我得到了错误Lapack routine dgesv: system is exactly singular。我的问题是,我的输入数据是非奇异矩阵,但是在对这些矩阵进行计算之后,其中一些得到了奇异。但是,一个包含数据子集的可重复的示例是不可能的,因为它会很长(我已经尝试过了)。这里是我问题的一个基本例子(A是经过一些计算后的矩阵,R是我需要做的下一个计算):
A=matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), nrow=4)
R = solve(diag(4)-A)
你有什么想法如何“解决”这个问题,也许其
当使用一个名为did的R包时,我会得到以下错误:
Error in solve.default(preV) : system is computationally singular:
reciprocal condition number = 4.09946e-19
solve函数有一个名为tol的参数,因此我可以设置容忍度,从而避免这个问题。但是这个包没有提供这个选项来从它的顶级函数中指定这个tol,所以没有办法为solve设置tol。
我在考虑另一种选择。由于solve()默认使用.Machine$double.eps for tol,所以如果我能够减少这个默认值,那就更好了。多么?
我不是高级R用户。我主要使用它来进行矩阵代数计算。我有一个很大的矩阵(9400x9400;675.1 MB),我想要对其求逆。我试过"solve“函数和"chol2inv",我得到”错误在...‘a’必须是一个复数矩阵“。我也试过使用MASS包中的"ginv“函数,得到错误消息"Error in svd(X):infinite or missing values in 'x'”。我确信我的矩阵没有空(全零)列或行。我使用:和我得到了相同的矩阵进行了检查。也没有NA值,我已经用测试过了。我的矩阵是数字矩阵和方阵("is.numeri
从数学上讲,通过Cholesky分解求正定矩阵的逆矩阵比仅使用np.linalg.inv(X)更快。然而,当我同时尝试这两种方法时,发现Cholesky分解的性能更差!
# Inversion through Cholesky
p = X.shape[0]
Ip = np.eye(p)
%timeit scipy.linalg.cho_solve(scipy.linalg.cho_factor(X,lower=True), Ip)
The slowest run took 17.96 times longer than the fastest. This could mean that an
我想最小化函数FlogV (使用多正态分布,Z是数据矩阵NxC;SIGMA是数据协方差的方阵CxC,R是长度为C的向量)
FLogV <- function(P){
(here I define parameters, P, within R and SIGMA)
logC <- (C/2)*N*log(2*pi)+(1/2)*N*log(det(SIGMA))
SOMA.t <- 0
for (j in 1:N){
SOMA.t <- SOMA.t+sum(t(Z[j,]-R)%*%solve(SIGMA)%*%(Z[j,]-R))
}
MlogV <
我尝试计算R中协方差矩阵的逆矩阵。我使用solve和ginv函数,但是我不能正确地找到单位矩阵。我想知道为什么会这样。以前有没有人遇到过这个问题?如何修复它?
d <- data.frame(r1,r2,r3,r4)
ad <- cov(d) # get covariance
您可以通过以下方式访问ad:
ad <- structure(c(0.000564103047135273, 0.000209426917735389,
-2.50601812852379e-07, 0.000318692159506722, 0.000209426917735389,
8.92
M矩阵
1000 793504755
793504755 629649829362825
这是我的矩阵M in R solve(M)给出了这个错误:
solve(M)
Error in solve.default(M) :
system is computationally singular: reciprocal condition number = 8.36282e-20
而excel中的MMINV给出了此2 x 2矩阵的所需输出
R计算是使用某种分解算法进行逆运算吗?为什么它不为我的矩阵提供输出?矩阵行列式也不是零。事实上,这是一个很大的值。
#!/usr/bin/python
x = np.linalg.solve(A, B)
上面可以计算出Ax = B的根,这里A是3乘3矩阵,B是3×1向量。我想在带有的特征库中找到一个函数--相同的函数,而不是Python库。结果x使用Python linalg.solve()是正确的。矩阵A和B如下:
A:
64 256 1024
48 256 1280
24 192 1280
B:
-9
0
0
但是,我选择了下面的代码(C++特征)来解决同样的问题,错误是显示给我的。
// C++ with Eigen Library
auto x = A.colPivHous
我正面临着以下挑战,我似乎找不到解决方案:
基本上,我想为数据的StoNED -随机非光滑包络编写一些代码。
我是这样开始的:
# dim(G) is 35x15
# dim(X) is 5x15
# dim(y) is 5x1
# dim(h) is 15x1
# y is a vector of output, x a matrix of input,
h a vector of zeros, G a matrix of constraint parameters, betaa shall be estimated
library(CVXR)
betaa <- Variable