我有一个“大”线性方程组 -
2016x2015
,确切地说,在下面的示例中,我想使用 SymPy 求解它,以获得精确的解。
我尝试使用以下代码:
import sympy as sym
import numpy as np
M = sym.Matrix(np.eye(2016))
symbols = sym.symbols('a0:2015')
print(M.shape[1], len(symbols))
print(sym.solve_linear_system(M, symbols))
第一个
print
工作正常,并返回 2016 2015
,正如预期的那样。然而,当系统应该在下面解决时,却抛出了以下异常:
File /opt/anaconda3/lib/python3.11/site-packages/sympy/solvers/solvers.py:2311 in solve_linear_system
assert system.shape[1] == len(symbols) + 1
AssertionError
我不明白为什么会这样 - 毕竟,第一个打印表明断言应该是正确的......
为什么会出现这种情况?
提前致谢!
您应该将
sym.symbols
设置为 'a0:2016'
symbols = sym.symbols('a0:2015')
print(symbols[-1])
# >>> a2014
print(len(symbols))
# >>> 2015
print(M.shape[0])
# >>> 2016