我被分配使用scipy稀疏矩阵求解器scipy.sparse.linalg.spsolve
来解决一个稀疏矩阵向量问题。
问题是我不知道如何正确设置问题。一旦矩阵可以设置,数据分析和代码的GPU加速应该很容易。我被困在第一个障碍,因为符号。
Matrix notation problem
以下是我到目前为止所做的尝试:
def matrix_A(N):
nelements = 1 / N
row_ind = []
col_ind = []
data = []
f = np.zeros(N, dtype=np.float64)
count = 0
for i in range(N):
for j in range(N):
if i==j:
row_ind[count] = col_ind[count] = 1
if i==0 or i==N:
if i==N:
row_ind[count] = col_ind[count] = 1
if i==j:
row_ind[count] = col_ind[count] = 2-(h**2 * k**2)
if j==i+1 or j==i-1:
row_ind[count] = col_ind[count] = -1
else:
row_ind[count] = col_ind[count] = 0
return coo_matrix((data, (row_ind, col_ind)), shape=(N**2, N**2)).tocsr(), f
字符串
1条答案
按热度按时间yftpprvb1#
好的,第一部分说
A[i,j] = 1
,其中i = j
,这意味着你的对角元素(从我们目前所知道的来看)都是1,换句话说,你可以从创建单位矩阵开始。字符串
下一部分与
i = 0, N-1
有关(图像显示N
,但Python是0索引的,它们可能意味着最后一个值,即索引N-1
)。因此,如果i = j
,则显示A[i,j] = 2 - h^2*k^2
。由于我们引用的是特定的i
值,因此可以将其解释为当i = j = 0, N-1
时。型
它还说,如果
j = i + 1
或j = i - 1
,则A[i,j] = -1
。同样,因为我们处理的是i = 0, N-1
,所以我们只考虑A[0,1]
和A[N-1,N-2]
。当i = 0
和i = N - 1
时,我们忽略j = i - 1
和j = i + 1
,因为它们会给予超出范围的j
值。型
然后,您可以将矩阵转换为稀疏矩阵。