在 Python 中构建矩阵时遇到了一些问题。每个元素都有一个循环,每个元素A_{ij}的形式如图所示,这里x是q个元素的数组(在下面的代码中用xi表示)。
我已经尝试了如下代码,但它需要太多时间。我认为这是因为循环的数量,所以我正在考虑将其视为两个矩阵的乘积,但由于 lambda 有两个维度,因此它不起作用。
既然这些代码会以函数的形式出现,而且会被多次使用,有没有什么办法让它跑得更快呢?非常感谢你!!
def lambdak(i,j,alpha,rho):
return math.pi * alpha**2 * rho * math.exp(-math.pi**2 * alpha**2 *(i**2 + j**2))
def phik(i,j,x,alpha,rho):
return cmath.exp(2 * math.pi * 1j * (i*x[0] + j*x[1]))
alpha = 0.5
rho = 50
num = 30
x = np.random.uniform(-0.5,0.5,num)
y = np.random.uniform(-0.5,0.5,num)
xi = np.zeros((num,3))
for i in range(num):
xi[i] = np.array([x[i], y[i], 0])
q = len(xi)
A = [[np.sum(list(map(lambda j:
np.sum(list(map(lambda i:
lambdak(i,j,alpha,rho)/(1-lambdak(i,j,alpha,rho))* phik(i,j,xi[x]-xi[y],alpha,rho),
range(-N,N+1)))),
range(-N,N+1)))) for x in range(q)] for y in range(q)]
a = np.linalg.inv(A)