python-3.x - 如何用 sympy 声明自然符号?

标签 python-3.x sympy

我知道如何声明整数符号:

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)}

最佳答案

我已开通 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)])

关于python-3.x - 如何用 sympy 声明自然符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301941/

相关文章:

python - 绘制一个二维数组,轴上标有一维数组的数组值

python-3.x - 为什么 sympy 在求解三次方程时会给出复根

python - 在 numpy 数组的 python 列表中快速查找联合对

python - 在 python 3.x 中有效地搜索多个文件的关键字的最佳方法?

python - 我如何告诉 sympy i^2 = -1?

python - Sympy subs 不输出替换表达式?

python-3.x - 如何在 python3 中使用 AST 递归简化数学表达式?

python - 如何通过 SymPy 中给定的子表达式自动简化表达式

python - 来自字符串的矩阵表达式

sympy - 如何枚举 SymPy 表达式中未定义的函数?