r语言 - 获取未确定系统的 n 个解决方案的样本



我有一个不确定的方程组(Ax = b(,有无限的解。 我的目标是为这个系统获得 n 个随机解(n 个向量 x(。 是否可以使用 R 来做到这一点(如果可能的话,使用基本 R 函数(?

使用base::qr.solve()您可以获得 1 个解决方案,但它总是相同的。

下面是一个可重现的示例:

# Ex data illustrating this situation: Ax = b
A = matrix(
c(rep(1,11), 0.1803, 0.0071, 0.0063, 0.0201, 0.3333, 0.0043, 0.1573, 0.0007, 0.2439, 0.0072, 0.0011),
nrow = 2,
ncol = 11,
byrow = TRUE
)
b = as.matrix(c(1,0.1))
# currently not random x solutions
x = qr.solve(A, b)

当前结果:

print(x)
[,1]
[1,] 0.5363741
[2,] 0.4636259
[3,] 0.0000000
[4,] 0.0000000
[5,] 0.0000000
[6,] 0.0000000
[7,] 0.0000000
[8,] 0.0000000
[9,] 0.0000000
[10,] 0.0000000
[11,] 0.0000000

以下是一些相关问题:

  • 求解 R 中的欠定/超定系统

  • 使用 R 求解欠定线性系统

根据您提供的第一个链接,您可以获得通用解决方案(使用MASS(:

library(MASS)
Ag <- ginv(A)
Ag
xb <- Ag %*% b
xb
Aw <- diag(nrow=nrow(Ag)) - Ag %*% A
Aw

因此,您可以按以下形式创建 n 个解决方案:

w <- runif(11)
z <- xb + Aw %*% w

像这样(100 个解决方案的示例矩阵(:

sapply(1:100, function(i) {
w <- runif(11)
z <- xb + Aw %*% w}
)

相关内容

最新更新