系数应为整数:sympy不定方程

2 投票
1 回答
907 浏览
提问于 2025-04-17 22:20

我有一个多项式(是从一个矩阵的特征多项式生成的),我想找出它的整数解。

import sympy
from sympy.solvers.diophantine import diop_linear

M = sympy.Matrix([[0,1,1],[1,0,1],[1,1,0]])
p = M.charpoly()

这个多项式明显可以分解成整数根:

print p.factor()
# (_lambda - 2)*(_lambda + 1)**2

不过,输入的多项式在使用 diop_linear(p) 时,应该是整数系数类型。我不太确定在使用 sympy 0.75 的时候该怎么做,尽管我查阅了文档。错误信息是:

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    diop_linear(p)
  File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/diophantine.py", line 365, in diop_linear
    var, coeff, diop_type = classify_diop(eq)
  File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/diophantine.py", line 232, in classify_diop
    raise TypeError("Coefficients should be Integers")
TypeError: Coefficients should be Integers

1 个回答

1

这个错误信息明显是错的。问题在于 diop_linear 只适用于线性丢番图方程(而且对于单变量方程来说,这种情况并不太有趣)。如果你只是想解一个单变量方程,直接用 solve 就可以了。

撰写回答