A代表每个国家的行业与其他国家的其他行业有多大关系。它可能需要大约1.00的值。因此,矩阵A的对角线元素接近1,但矩阵A的非对角元素远小于1,因为每个行业主要与自身相关。
我,J代表每个1:44的国家,
警告! (求解中的“I”(I-A_omit(J,j))是诊断(2464)
i,j代表每个1:56的行业。
X是输出,它是一个长度为44个国家的矢量X 56个工业= 2464
它通过(diag(2464)-A)的倒数乘以F(矩阵是2464 * 1矩阵表示特定国家的行业最终需求)来计算。
X_omit(J,j)是将国家J的工业j中的所有值变为零的函数。
在这里,矩阵X的第j + 56 *(J-1)列被转动为零。
顺便说一句,解决(I-A_omit(J,j))中的“我”是诊断(2464)。
X_omit
(使用solve
)的一次计算大约需要20秒。
A
是2464 * 2464矩阵,X
是2464 * 1矩阵。
我假设计算b_link
需要大约20秒* 2464计算,这对于一个单独的值是14小时
但在这种情况下,我设法使用sum
将其更改为简单的等式,因为在这种情况下,将I
和i
分开并不重要。
但在接下来的计算中我要做的是,I
,i
,J
,j
这是维度1:44,1:56,1:44,1:56
,每个字母都应该分开,而不仅仅是使用总和。
我认为让它更快的唯一方法是使solve()
更快20秒。 solve(I-A_omit(J,j))
中的[A]矩阵不是对称的,只是填充了数字的普通矩阵。
这是我的代码
X_omit <- function (J,j) {solve((I-A_omit(J,j)),F)}
B_linkages_inter <- function (I,J) {
for (j in 1:56) {
for (i in 1:56) {
sum((X[i+56*(I-1)]-X_omit(J,j)[i+56*(I-1)])/X[j+56*(J-1)])
}
}
}
答案 0 :(得分:1)
您可以在循环外计算X_omit(J,j)
。此外,您还可以在循环外计算X[j+56*(J-1)])
。