Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 辛复形上多项式的全因式分解_Python_Math_Sympy_Polynomial Math - Fatal编程技术网

Python 辛复形上多项式的全因式分解

Python 辛复形上多项式的全因式分解,python,math,sympy,polynomial-math,Python,Math,Sympy,Polynomial Math,我想完全分解一个多项式 SymPy提供了因子来执行此操作,但我非常惊讶的是,因子分解仅在整数根上执行,例如: 来自sympy导入的>>* >>>z=符号('z') >>>系数(z**2-1,z) (z-1)*(z+1) >>>系数(z**2+1,z) z**2+1 或 >因子(2*z-1,z) 2*z-1 >>>因子(2*z-1,z,扩展=[整数(1)/2]) 2*(z-1/2) 已经存在一个已回答的问题:,阿斯穆勒给出的解决方案有效: 因子(z**2+1,z,扩展=[I]) (z-I)*(

我想完全分解一个多项式

SymPy提供了
因子
来执行此操作,但我非常惊讶的是,因子分解仅在整数根上执行,例如:

来自sympy导入的
>>*
>>>z=符号('z')
>>>系数(z**2-1,z)
(z-1)*(z+1)
>>>系数(z**2+1,z)
z**2+1

>因子(2*z-1,z)
2*z-1
>>>因子(2*z-1,z,扩展=[整数(1)/2])
2*(z-1/2)
已经存在一个已回答的问题:,阿斯穆勒给出的解决方案有效:

因子(z**2+1,z,扩展=[I]) (z-I)*(z+I) 但您需要指定非整数根的每个除数,例如:

>>因子(z**2+2,z,扩展=[I])
z**2+2
>>>因子(z**2+2,z,扩展=[I,sqrt(2)])
(z-sqrt(2)*I)*(z+sqrt(2)*I)
我的问题是:如何完全分解多项式(因此在复数上),而不需要给
扩展

asmeurer提供了一个解决方案:

poly=z**2+2 >>>r=根(多边形,z) >>>LC(poly,z)*Mul(*[(z-a)**r[a]代表r中的a]) / ___ \ / ___ \ \z-\/2*I/*\z+\/2*I/
但是它应该有一种本地的方式来做,不是吗?
类似于
因子(poly,z,complex=True)

我在房间里找,但什么也没找到。 此外,
factor
可以将
domain
作为可选参数,我认为该参数允许指定进行因式分解的集合,但不允许

>>因子(z**2+2,z,domain='z')
2.
z+2
>>>因子(z**2+2,z,domain='R')
/     2      \
2.0*\0.5*z+1.0/
>>>系数(z**2+2,z,域='C')
2.
1.0*z+2.0

域参数应该有效,在高斯有理数的情况下,您也可以使用
Gaussian=True
,这相当于
extension=I

In [24]: factor(z**2 + 1, gaussian=True)
Out[24]: (z - ⅈ)⋅(z + ⅈ)
但这在您的情况下不起作用,因为分解需要在
QQ(I,sqrt(2))
之上,而不是
QQ(I)
。域
'R'
'C'
不能按预期工作的原因是,它们是不精确的浮点域,而不是在纯数学意义上表示实数或复数的域,并且分解是不精确的

但是,上述方法可以与

In [28]: e = z**2 + 2

In [29]: factor(e, extension=roots(e))
Out[29]: (z - √2⋅ⅈ)⋅(z + √2⋅ⅈ)

域参数应该有效,在高斯有理数的情况下,您也可以使用
Gaussian=True
,这相当于
extension=I

In [24]: factor(z**2 + 1, gaussian=True)
Out[24]: (z - ⅈ)⋅(z + ⅈ)
但这在您的情况下不起作用,因为分解需要在
QQ(I,sqrt(2))
之上,而不是
QQ(I)
。域
'R'
'C'
不能按预期工作的原因是,它们是不精确的浮点域,而不是在纯数学意义上表示实数或复数的域,并且分解是不精确的

但是,上述方法可以与

In [28]: e = z**2 + 2

In [29]: factor(e, extension=roots(e))
Out[29]: (z - √2⋅ⅈ)⋅(z + √2⋅ⅈ)

这正是我想要的解决方案!但事实上,我从另一个问题中得到了这个问题,这个问题是关于平方根符号根的因式分解,所以我创建了另一个问题:。也许你也能帮我一个这个:-)。这正是我想要的解决方案!但事实上,我从另一个问题中得到了这个问题,这个问题是关于平方根符号根的因式分解,所以我创建了另一个问题:。也许你也能帮我一个这个:-)。