我有線性系統來解決這個問題,它由大型稀疏矩陣組成。使用scipy.sparse.linalg線性系統求解器的問題
我一直在使用scipy.sparse
庫和它的linalg
子庫來做到這一點,但我不能讓一些線性求解器工作。
這裏是一個工作例子再現問題對我來說:
from numpy.random import random
from scipy.sparse import csc_matrix
from scipy.sparse.linalg import spsolve, minres
N = 10
A = csc_matrix(random(size = (N,N)))
A = (A.T).dot(A) # force the matrix to be symmetric, as required by minres
x = csc_matrix(random(size = (N,1))) # create a solution vector
b = A.dot(x) # create the RHS vector
# verify shapes and types are correct
print('A', A.shape, type(A))
print('x', x.shape, type(x))
print('b', b.shape, type(b))
# spsolve function works fine
sol1 = spsolve(A, b)
# other solvers throw a incompatible dimensions ValueError
sol2 = minres(A, b)
運行此產生以下錯誤
raise ValueError('A and b have incompatible dimensions')
ValueError: A and b have incompatible dimensions
呼叫到minres
,即使尺寸顯然是兼容。 scipy.sparse.linalg
中的其他解算器,如cg
,lsqr
和gmres
都會引發相同的錯誤。
這是python 3.6.1與SciPy 0.19上運行。
任何人都知道這裏發生了什麼?
謝謝!