我需要用numpy或sympy来解决一个线性不定方程组的系统 .

有没有办法约束numpy的linalg.solve / linalg.lstsq方法只返回整数解? (可能不是,但我想应该问)

我查看了Sympy的丢番图解算器,它似乎不适用于解决整个系统

我正在努力解决的问题是:

P1(X) + P2(Y) = TargetPro
F1(X) + F2(Y) = TargetFat
C1(X) + C2(Y) = TargetCarb

在这种情况下,X,Y,Z代表近似的份量大小,P1 / F1 / C1分别是pro / fat / carb分布 .

基于这篇论文https://www.math.uwaterloo.ca/~wgilbert/Research/GilbertPathria.pdf

似乎我可以进行行减少以找到该系统的参考(行 - 梯形式),然后将其插入到sympy的求解器中 .

有更简单的方法吗?

Here's a trivial example:

pro = [4,5]
fat = [1,2]
carb = [3,6]

A = np.array((pro, fat, carb))
b = np.array([22,12,21])

print(np.linalg.lstsq(A, b))

我期望得到一个整数解[3,2]而得到[2.16666667,2.66666667]

两种解决方案都是正确的,但我想将我的解决方案仅限于整数解决方案