您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

用Python解决线性整数方程组

用Python解决线性整数方程组

要找到所需的确切解决方案,numpy和scipy可能不是最佳工具。他们的算法通常在浮点中工作,并且不能保证给出 确切的 答案。

您可以sympy用来获取此问题的确切答案。中的Matrixsympy提供了nullspace()返回空空间基向量列表的方法。这是一个例子:

In [20]: from sympy import Matrix, lcm

In [21]: A = Matrix([[1, -1, 0], [0, 2, -1], [2, 0, -1]])

获取空空间中的向量。 nullspace()返回列表;此代码假定A的等级为2,因此列表的长度为1:

In [22]: v = A.nullspace()[0]

In [23]: v
Out[23]: 
Matrix([
[1/2],
[1/2],
[  1]])

在中找到值的分母的最小公倍数,v以便我们可以将结果缩放为最小整数:

In [24]: m = lcm([val.q for val in v])

In [25]: m
Out[25]: 2

x 持有整数答案:

In [26]: x = m*v

In [27]: x
Out[27]: 
Matrix([
[1],
[1],
[2]])

要将结果转换为整数的numpy数组,可以执行以下操作:

In [52]: np.array([int(val) for val in x])
Out[52]: array([1, 1, 2])
python 2022/1/1 18:48:31 有385人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶