同时需要
@
和*
的地方。如果读者有兴趣,这里是代码:
# parameters
beta = 0.98
alpha = 0.03
delta = 0.1
T = 1000
kss = ((1 / beta - (1 - delta)) / alpha)**(1 / (alpha - 1))
k = np.linspace(0.5 * kss, 1.8 * kss, T)
k_reshaped = k.reshape(-1, 1)
c = k_reshaped ** alpha + (1 - delta) * k_reshaped - k
c[c<0] = 1e-11
c = np.log(c)
beta_square = beta**2
# multiplication
I = np.identity(T)
J = beta * I
B = inv(I - J)
E = np.ones(T)[:,None]
gB = 2 * B @ (J * c @ E) @ (beta * I * c @ E + B @ (np.linalg.matrix_power(I - J, 2) * c @ E)).T / beta_square
代码目前演示了 1000 x 1000 的矩阵运算,是否可以对其进行优化并运行得更快?