我需要用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.666666667]
两种解决方案都是正确的,但我想将我的解决方案仅限于整数解决方案