我正在尝试使用矩阵代数求解下面的长方程。我已经能够做到。但是,我的解决方案似乎过于复杂。我必须将方程式分成三部分,分别由如下所示的#####
描绘:
有人可以提出更有效的解决方案吗?抱歉,这个问题是否在其他论坛上。我想它可以被视为编程问题或矩阵代数问题。
这是等式:
a1 <- 0.1
a2 <- 0.2
a3 <- 0.3
a4 <- 0.4
b1 <- 1
b2 <- 2
b3 <- 3
b4 <- 4
b5 <- 5
b6 <- 6
b7 <- 7
b8 <- 8
c1 <- 10
c2 <- 20
c3 <- 30
c4 <- 40
x1 <- (a1 * b1 * c1 +
a2 * b1 * c1 +
a3 * b2 * c1 +
a4 * b2 * c1 +
a1 * b3 * c1 +
a2 * b3 * c1 +
a3 * b4 * c1 +
a4 * b4 * c1 +
a1 * b1 * c2 +
a2 * b1 * c2 +
a3 * b2 * c2 +
a4 * b2 * c2 +
a1 * b3 * c2 +
a2 * b3 * c2 +
a3 * b4 * c2 +
a4 * b4 * c2 +
#####
a1 * b5 * c3 +
a2 * b5 * c3 +
a1 * b6 * c3 +
a2 * b6 * c3 +
a1 * b5 * c4 +
a2 * b5 * c4 +
a1 * b6 * c4 +
a2 * b6 * c4 +
#####
a3 * b7 * c3 +
a4 * b7 * c3 +
a3 * b8 * c3 +
a4 * b8 * c3 +
a3 * b7 * c4 +
a4 * b7 * c4 +
a3 * b8 * c4 +
a4 * b8 * c4 )
这是我的解决方法。
m.a1 <- matrix(c(a1, a2, a3, a4), nrow=1, ncol=4, byrow = TRUE)
m.b1 <- matrix(c(b1, b3,
b1, b3,
b2, b4,
b2, b4), nrow=4, ncol=2, byrow=TRUE)
m.ab1 <- m.a1 %*% m.b1
m.c1 <- matrix(c(c1, c2,
c1, c2), nrow=2, ncol=2, byrow=TRUE)
m.abc1 <- m.ab1 %*% m.c1
#####
m.a2 <- matrix(c(a1, a2, a1, a2), nrow=1, ncol=4, byrow = TRUE)
m.b2 <- matrix(c(b5,
b5,
b6,
b6), nrow=4, ncol=1, byrow=TRUE)
m.ab2 <- m.a2 %*% m.b2
m.c2 <- matrix(c(c3, c4), nrow=1, ncol=2, byrow=TRUE)
m.abc2 <- m.ab2 %*% m.c2
#####
m.a3 <- matrix(c(a3, a4, a3, a4), nrow=1, ncol=4, byrow = TRUE)
m.b3 <- matrix(c(b7,
b7,
b8,
b8), nrow=4, ncol=1, byrow=TRUE)
m.ab3 <- m.a3 %*% m.b3
m.c3 <- matrix(c(c3, c4), nrow=1, ncol=2, byrow=TRUE)
m.abc3 <- m.ab3 %*% m.c3
#####
x2 <- sum(m.abc1) + sum(m.abc2) + sum(m.abc3)
x1 == x2
#[1] TRUE
答案 0 :(得分:0)
我想出了一个效率更高的解决方案。
a1 <- 0.1
a2 <- 0.2
a3 <- 0.3
a4 <- 0.4
b1 <- 1
b2 <- 2
b3 <- 3
b4 <- 4
b5 <- 5
b6 <- 6
b7 <- 7
b8 <- 8
c1 <- 10
c2 <- 20
c3 <- 30
c4 <- 40
x1 <- (a1 * b1 * c1 +
a2 * b1 * c1 +
a3 * b2 * c1 +
a4 * b2 * c1 +
a1 * b3 * c1 +
a2 * b3 * c1 +
a3 * b4 * c1 +
a4 * b4 * c1 +
a1 * b1 * c2 +
a2 * b1 * c2 +
a3 * b2 * c2 +
a4 * b2 * c2 +
a1 * b3 * c2 +
a2 * b3 * c2 +
a3 * b4 * c2 +
a4 * b4 * c2 +
a1 * b5 * c3 +
a2 * b5 * c3 +
a3 * b7 * c3 +
a4 * b7 * c3 +
a1 * b6 * c3 +
a2 * b6 * c3 +
a3 * b8 * c3 +
a4 * b8 * c3 +
a1 * b5 * c4 +
a2 * b5 * c4 +
a3 * b7 * c4 +
a4 * b7 * c4 +
a1 * b6 * c4 +
a2 * b6 * c4 +
a3 * b8 * c4 +
a4 * b8 * c4 )
m.a <- matrix(c(a1, a2, a3, a4), nrow=1, ncol=4, byrow = TRUE)
m.b <- matrix(c(b1, b3, b5, b6,
b1, b3, b5, b6,
b2, b4, b7, b8,
b2, b4, b7, b8), nrow=4, ncol=4, byrow=TRUE)
m.ab <- m.a1 %*% m.b1
m.c <- matrix(c(c1, c2,
c1, c2,
c3, c4,
c3, c4), nrow=4, ncol=2, byrow=TRUE)
m.abc <- m.ab %*% m.c
x3 <- sum(m.abc)
x3 == x1
#[1] TRUE
x3 == x2
#[1] TRUE