我需要解决不同大小的线性方程。有时大小可能是 0 或 1,在这种情况下会发生一些错误。例如,
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 或 solve 时会出现一些意想不到的结果:
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 的大小不为零。