具有稀疏三对角矩阵的线性代数
Linear algebra with a sparse triagonol marix
我有一个三对角矩阵 A,我想创建一个稀疏矩阵,然后使用 scipy 求解线性方程组 Ax =b,这是怎么做到的。
我试过下面的代码,效果不错。
from scipy.sparse import dia_matrix
from scipy.sparse.linalg import spsolve_triangular
N = 10
diag = np.zeros(N) + 2
udiag = np.zeros(N) + 1
A = dia_matrix(([diag, udiag, udiag], [0, 1, -1]), shape=(N, N))
b = np.ones(N)
print(A.todense())
print(b)
x = spsolve_triangular(A, b)
print(x)
问题出在你的矩阵不是三角形而是三对角矩阵。因此,您必须使用 spsolve 函数而不是 spsolve_triangular 函数。
我有一个三对角矩阵 A,我想创建一个稀疏矩阵,然后使用 scipy 求解线性方程组 Ax =b,这是怎么做到的。
我试过下面的代码,效果不错。
from scipy.sparse import dia_matrix
from scipy.sparse.linalg import spsolve_triangular
N = 10
diag = np.zeros(N) + 2
udiag = np.zeros(N) + 1
A = dia_matrix(([diag, udiag, udiag], [0, 1, -1]), shape=(N, N))
b = np.ones(N)
print(A.todense())
print(b)
x = spsolve_triangular(A, b)
print(x)
问题出在你的矩阵不是三角形而是三对角矩阵。因此,您必须使用 spsolve 函数而不是 spsolve_triangular 函数。