【发布时间】:2016-06-09 14:32:23
【问题描述】:
我对 R-Cran 很陌生。我想解决一个有约束的线性逆模型。我正在使用 limSolve 包中的 ldei 函数。 这是我的线性系统和约束:
A x X = C
G x X >=H,其中 G=I 且 H=0。 (基本上:X>=0)
地点:
2x2 矩阵中的 A;
X (nrow=2, ncol=n) 是未知向量-(矩阵);
C (nrow=2, ncol=n) 是已知常数向量-(矩阵)。
矩阵 G 是单位矩阵,H 是具有零值的向量(矩阵)。
需要满足约束X>=0,因为X代表室外空气中二氧化氮和臭氧的浓度,不能为负数。
这是我的 r 代码,我假设 n=10:
library(limSolve)
A <- matrix(data = NA, nrow=2,ncol=2)
A[1,c(1:2)] <- c(-3.956946e-05,-1.558643e-05)
A[2,c(1:2)] <- c(-8.785099e-05, 1.540414e-04)
ctmp1 <- c(-3.000286e-04,-0.0003545647,-0.0002958569,-0.000356863,-0.0003602479,-0.0004177914,-0.0004280350,-0.0003890670,-0.0004984785,-0.0005695379)
ctmp2 <- c(-6.462205e-05,-0.0007740174,-0.0006427914,-0.001056369,-0.0009569179,-0.0008562010,-0.0005402486,-0.0005043381,-0.0006366220,-0.0009332219)
inC <- rbind(ctmp1,ctmp2)
C <- matrix(data=inC, nrow=2, ncol=10)
G <- matrix(ncol=2,nrow=2,data= c(1,0,0,1))
inH <- rbind(rep(0., length.out=10),rep(0., length.out=10))
H <- matrix(data=inH, nrow=2, ncol=10)
# I am aware I need to use the apply-family instead of do loops-- this is my work in progress--..
for (i in 1:10){
print(i)
E <- A
FF <- c(C[1,i],C[2,i])
GG <- G
HH <- H[,i]
res <-ldei(E,FF,GG,HH)
print(res$X)
}
### Here the output:
[1] 1
[1] 6.326385 3.188475
[1] 2
[1] 8.93305028 0.06985077
[1] 3
[1] 7.44753875 0.07454004
[1] 4
Error in svd(V2, nu = 0, nv = unsolvable) : a dimension is zero
我将非常感谢任何解决问题的提示:
“svd(V2, nu = 0, nv = unsolvable) 中的错误:维度为零”
非常感谢您的帮助!
【问题讨论】: