我知道如何声明整数符号:
from sympy import symbols
a, b, c, m, n = symbols('a b c m n', Integer=True)
但是我希望符号是没有零的自然数(严格为正整数)。我该怎么做? 感谢
编辑:
如果我计算丢番图方程式,它也给出了负解,我只想得到正解:
from sympy.solvers.diophantine import diophantine
from sympy import symbols
a, b, c, m, n = symbols('a b c m n', integer=True, positive=True)
a = n ** 2 - m ** 2
b = 2 * n * m
c = n ** 2 + m ** 2
diof = diophantine(n ** 2 + m * n - 500)
print(diof)
查找: {(121,4),(499,-500),(95,-100),(499,1),( - 40,-10),(40,-50),( - 499,500),( -95,-5),( - 40,50),( - 95,100),(5,20),( - 5,25),( - 248,250),( - 499,-1),( 121,-125),(5,-25),( - 121,125),( - 5, - 20),( - 121,-4),(248,-250),(95,5),( -248,-2),(40,10),(248,2)}
答案 0 :(得分:4)
我已经打开了https://github.com/sympy/sympy/issues/7444。与此同时,您可以按照老式的方式过滤解决方案。
>>> {(i, j) for i, j in diof if i > 0 and j > 0}
set([(5, 20), (40, 10), (95, 5), (121, 4), (248, 2), (499, 1)])