我要丢番图转换(t_0 --> n)
from sympy import *
var('x y t_0 n')
def myDiophantine(myf):
myf_diox = list(diophantine(myf))[0][0]
myf_dioy = list(diophantine(myf))[0][1]
print("#1#",type(myf_diox),myf_diox)
myf_diox = myf_diox.subs({t_0:n})
print("#2#",type(myf_diox),myf_diox)
return myf_diox,myf_dioy
myf=5**4*x-2**4*y-1
print("#3#",myDiophantine(myf))
var('z')
print("#4#",type(myf),myf)
print("#5#",type(myf.subs({x:z})),myf.subs({x:z}))
#1# <class 'sympy.core.add.Add'> 16*t_0 + 1
#2# <class 'sympy.core.add.Add'> 16*t_0 + 1
#3# (16*t_0 + 1, 625*t_0 + 39)
#4# <class 'sympy.core.add.Add'> 625*x - 16*y - 1
#5# <class 'sympy.core.add.Add'> -16*y + 625*z - 1我用潜艇?它是无法取代的。有更好的办法吗?
我想要
#2# <class 'sympy.core.add.Add'> 16*n + 1参考
20220401
from sympy import *
var('x y t_0 n')
def myDiophantine(myf):
d=diophantine(myf)
params = Tuple(*d).free_symbols - myf.free_symbols;
d=Tuple(*d).xreplace(dict(zip(params, [n])))
myf_diox = list(d)[0][0]
myf_dioy = list(d)[0][1]
return myf_diox,myf_dioy
myf=5**4*x-2**4*y-1
myg=myDiophantine(myf)
print("#",myg[0],myg[1])
# 16*n + 1 625*n + 395^4_x-2^4_y=1
整数解
X=16n+ 1,y= 625 n+ 39,n元素Z
发布于 2022-03-31 12:26:18
>>> myf = 5**4*x-2**4*y-1
>>> d = diophantine(myf)获取用于解决方案的参数列表(将元组解决方案转换为元组组):
>>> params = Tuple(*d).free_symbols - myf.free_symbols; params
{t_0}用所需的替换创建一个替换字典
>>> Tuple(*d).xreplace(dict(zip(params, [n])))
((16*n + 1, 625*n + 39),)为什么你的方法不起作用?
>>> Symbol('t_0') in params
False
>>> Symbol('t_0',integer=True) in params
True符号是根据名称和假设进行匹配的,而不仅仅是名称。
关于丢番图方程的系数较小的问题:这是一个已知问题。
https://stackoverflow.com/questions/71686766
复制相似问题