如何在Pytho中使用sympy更改域(即多项式环)?

2024-04-28 04:24:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正处于一个大的(坦率的、相当困难的)项目中,所以这是我的第一次审讯,可能不会是最后一次。另外:英语不是我的第一语言,所以“对不起,英语不好”,我在手机上写这封信,所以“对不起,格式不好”。 好吧,那么:我正在尝试用Python实现通用数字字段筛选,至少现在,我非常依赖Symphy

这是我正在努力的一段代码。在下面的代码中,gpc(N,m)是一个浮点列表

From sympy import Poly
From sympy.abc import x

g = Poly(gpc(N,m), x) [*]

然而,当我这样做的时候,我得到了域RR上的一个多项式,我非常希望将它切换到另一个域D(其中D最终将是ZZ['x'],但我希望这个函数是通用的)

我知道我可以在中稍微修改[*]

g = Poly(gpc(N,m), x, domain = D)

为了得到我想要的。然而,这还不够。在我的代码中的其他地方,我需要能够更改已经构造的多项式的域,而这个解决方案没有帮助

当我查找它时,我找到了change_ring方法,因此我尝试了以下方法:

f = g.change_ring(D)

但是,在执行时,我收到错误消息:

'Poly' object has no attribute 'change_ring'

所以我猜这个函数不存在。 有人知道如何改变多项式的域吗

非常感谢


Tags: 项目方法函数代码fromimport语言格式
1条回答
网友
1楼 · 发布于 2024-04-28 04:24:57

看起来创建一个新的Poly实例是最好的方法;有几个类方法可以提供帮助(看看Poly.from_*类方法)

例如:

from sympy import Poly
from sympy.abc import x, a

g = Poly(x**3 + a*x*2 - 5*x + 6, x)
print(g)  # Poly(x**3 + (2*a - 5)*x + 6, x, domain='ZZ[a]')

f = Poly.from_poly(g, *g.gens, domain='ZZ[a, b]')
print(f)  # Poly(x**3 + (2*a - 5)*x + 6, x, domain='ZZ[a,b]')

我还想知道在某个时候合理化你的浮动是否会有所帮助-例如,参见nsimplify

相关问题 更多 >