2
我需要解决不同大小的线性方程。有时候,大小可能是0或1,在这种情况下会发生一些错误。例如,spsolve和解决意外的差异
import numpy as np
from numpy.linalg import solve
from scipy.sparse.linalg import spsolve
A1 = np.array([[1,2],[2,1]])
b1 = np.array([[1],[1]])
A2 = np.array([[1]])
b2 = np.array([[1]])
一些意想不到的结果时会发生呼叫SPSOLVE或解决:
sage: solve(A1,b1)
array([[ 0.33333333],
[ 0.33333333]])
sage: solve(A2,b2)
array([[ 1.]])
sage: spsolve(A1,b1)
array([ 0.33333333, 0.33333333])
sage: spsolve(A2,b2)
ValueError: object of too small depth for desired array
注意的“SPSOLVE(A1,B1)”,实际上产生一个行向量,呼叫反正是有强制它成为列向量?另外,调用“spsolve(A2,b2)”的错误也很奇怪,因为A1和b1的大小不为零。
有趣。我在python-2.6上试过你的方法,它没有任何错误。但在Sage-5.3中,它总是弹出错误消息:“97选项=字典(ColPerm = permc_spec) 98 return _superlu.gssv(N,A.nnz,A.data,A.indices,A.indptr,b,标记, ---> 99 options = options)[0] 101 def splu(A,permc_spec = None,diag_pivot_thresh = None, ValueError:对于所需数组的深度太小的对象“ – zhh210