我正在尝试编写一个Python代码来简化给定的表达式(为了求解非齐次线性丢番图方程。)例如,给定输入:
7x+13y = 1
代码将返回
1=7-(1*(13-(1*7))
我希望能够简化输出的右侧,使其仅以输入的系数表示。在这种情况下:
1=7-((1*13)+(1*-(1*7))
1=7-(1*13)-(-1*7)
1=(2*7)+(-1*13)
所以
1=(2*7)+(-1*13)
是最终结果(我可以提取 2 和 -1,乘以原始输入的常数以获得 x 和 y 的整数解集。)
我尝试寻找并实现 Sympy Simply,但是他们都没有为上述任务提供任何帮助。他们要么返回原始输出,要么返回错误消息。
看起来您正在寻找 SymPy 提供的扩展欧几里得算法
gcdex
:
In [1]: from sympy import gcdex
In [2]: gcdex(7,13)
Out[2]: (2, -1, 1)