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

7tofc5zh  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(240)

当我试图解决一个庞大的线性稀疏系统时,我面临着无法分配那么多内存的问题。
我认为使用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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题