如何对大型稀疏线性系统执行线性求解

时间:2021-07-08 18:34:39

标签: python numpy sparse-matrix

当我尝试解决一个巨大的线性稀疏系统时,我面临着无法分配那么多内存的问题。

我认为使用 COO 存储可能会有所帮助,但如果我真的需要它,我不会这样做。

from scipy.sparse import diags
import numpy as np

nx=50
ny=50
nz=50

lx=1
ly=1
lz=1

dx=lx/nx
dy=ly/ny
dz=lz/nz

n1 = 2*(dy*dz+dx*dz+dx*dy)
n2 = -(dy*dz)
n3 = -(dx*dz)
n4 = -(dx*dy)

d1=np.ones((nx*ny*nz))*n1
d2temp=np.zeros((nx))
d2temp[1:nx]=n2


d2=np.tile(d2temp,ny*nz)
d2=np.delete(d2,0)

d3temp1=np.zeros((nx))
d3temp2=np.ones(((ny-1)*nx))*n3
d3temp=np.append(d3temp1,d3temp2)
d3=np.tile(d3temp,nz)
d3=d3[nx:]

d4=np.ones((nx*ny*nz-nx*ny))*n4


diagonals = [d1, d2, d2, d3, d3, d4, d4]



a=diags(diagonals, [0, -1, 1, -nx, nx, -nx*ny, nx*ny]).toarray()
b=np.ones((nx*ny*nz))
x=np.linalg.solve(a,b)

0 个答案:

没有答案
相关问题