3

我需要用 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 的求解器。

有没有更简单的方法来解决它?

这是一个简单的例子:

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]

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

4

0 回答 0