用Python求线性方程组的整数解

用Python求线性方程组的整数解,python,Python,我正试图编写一个python程序来求解x_1+2x_2+…+形式的多项式的所有正整数解Tx_T=a受x_0+x_1+…+约束x_T=b 例如,通过暴力,我可以证明x_1+2x_2=4的唯一正整数解服从x_0+x_1+x_2=2是(0,0,2)。但是,我希望有一个程序能够自己完成这项工作 有什么建议吗?你可以用它来解方程组,即线性矩阵方程的最小二乘解。在你的例子中,你可以考虑以下向量: import numpy as np # range(T): coefficients of the first

我正试图编写一个python程序来求解
x_1+2x_2+…+形式的多项式的所有正整数解Tx_T=a
x_0+x_1+…+约束x_T=b

例如,通过暴力,我可以证明
x_1+2x_2=4
的唯一正整数解服从
x_0+x_1+x_2=2
(0,0,2)
。但是,我希望有一个程序能够自己完成这项工作

有什么建议吗?

你可以用它来解方程组,即线性矩阵方程的最小二乘解。在你的例子中,你可以考虑以下向量:

import numpy as np
# range(T): coefficients of the first equation
# np.ones(T): only 'ones' as the coefficients of the second equation 
A = np.array([range(T), np.ones(T)) # Coefficient matrix
B = np.array([a, b]) # Ordinate or “dependent variable” values
然后找到如下解决方案:

x = np.linalg.lstsq(A, B)[0]
最后,您可以实现一个
solve
方法来传递变量
T,a b

import numpy as np
def solve(T, a, b):
    A = np.array([range(T), np.ones(T)])
    B = np.array([a, b])
    return np.linalg.lstsq(A, B)[0]
整数解决方案: 如果您只需要整数解,那么您正在寻找一个

每个线性丢番图方程组都可以写成: AX=C,其中A是整数的m×n矩阵,X是未知数的n×1列矩阵,C是整数的m×1列矩阵


每个线性丢番图方程组都可以通过计算其矩阵的长度来求解。

因此,不幸的是,不支持LaTeX,而且@HaveNoDisplayName的编辑是非常无用的。你能用伪代码重新格式化你的方程以使它们可读吗?答案应该是
(0,0,2)
对吗?是的,应该是这样。我把它修好了。答案和被问的问题没有多大关系。当问题明确地涉及整数解时,为什么要谈论Numpy/最小二乘法?关于整数解决方案的部分是到维基百科的两个链接,非常感谢。