我有以下简单的代码:
import sympy
from sympy.solvers.diophantine.diophantine import diop_linear
x, y = sympy.symbols('x y')
eq = 2*x+3*y-10
sol_eq = diop_linear(eq)变量sol_eq等于(3*t_0 - 10, 10 - 2*t_0)。现在,我希望能够将值1替换为t_0,并对其求值。但是如果我尝试sol_eq[0].subs({t_0:1}),我当然会得到一个错误,因为t_0没有定义。如果我将t_0定义为一个符号,似乎将它们视为不同的符号。
有什么建议吗?症状帮助似乎没有提供任何关于如何操作结果的指示,或者更准确地说,我还没有找到答案。
发布于 2020-07-19 06:10:13
你可以自己定义符号,只要你设置了integer=True假设,它就会起作用:
In [1]: import sympy
...: from sympy.solvers.diophantine.diophantine import diop_linear
...:
...: x, y = sympy.symbols('x y')
...: eq = 2*x+3*y-10
...: sol_eq = diop_linear(eq)
In [2]: sol_eq
Out[2]: (3⋅t₀ - 10, 10 - 2⋅t₀)
In [3]: t0 = Symbol('t_0', integer=True)
In [4]: sol_eq_1 = tuple(s.subs({t0: 1}) for s in sol_eq)
In [5]: sol_eq_1
Out[5]: (-7, 8)https://stackoverflow.com/questions/62973877
复制相似问题