提问人:Simd 提问时间:10/25/2021 最后编辑:Simd 更新时间:10/31/2021 访问量:270
如何获得对称以给出具有较小系数的解决方案
How to get sympy to give solutions with smaller coefficients
问:
考虑以下示例 丢番图方程
-118w + 989x + 918y -512z == 0
您可以通过以下方式解决此问题:
import sympy
from sympy.solvers.diophantine import diophantine
w, x, y, z = sympy.symbols('w x y z')
a, b, c, d = -118, 989, 918, -512
diof = list(diophantine(a*w + b*x +c*y +d*z ))[0]
print(diof)
这给了:
(t_0, 118*t_0 + 2*t_1, 1690468*t_0 + 28937*t_1 + 256*t_2, 3031184*t_0 + 51887*t_1 + 459*t_2)
说明:此解决方案允许您自由选择三个整数 t_0、t_1、t_2,然后您可以从那里计算 w、x、y、z 的值。
这很好,只是系数总是比它们需要的要大得多。如果你在 Mathematica 中求解相同的系统,你会得到:
x = 2 c_2, y = 9 c_2 + 256 c_3 + 81 w, z = 20 c_2 + 459 c_3 + 145 w, c_2 element Z and c_3 element Z
艺术
以与sympy解决方案相同的样式重写,这将是:
(t_0, 2*t_1, 9*t_1 + 256*t_2 + 81*t_0, 20*t_1 + 459*t_2 + 145*t_0)
是否有可能得到对称性来给出具有类似小系数的线性丢番图方程的解?
修复了 sympy 代码中的错别字。
答: 暂无答案
评论