我有一个和的乘积,它包含实数指数的幂。在成功地将该乘积扩展为加权幂和后(因此它几乎是一个多项式):0.001953125*z**(7/4) + 0.013671875*z**(5/4) + 0.025390625*z**(3/4) +...
我试着得到它的指数。Poly()由于非整数指数,似乎不起作用。在
我是如何创建表达式的:
^{pr2}$
我找到了两种不太令人满意的方法来获得这些值。第一种方法是列表理解变得难看,因为sympy似乎提供了一个不一致的表达式树,这意味着向下到原子的路径可以是Add->Mul->Pow->Rational或{},或者。。。在[(coeff,e, )
for addand in G_F.args
for coeff, zterm in [addand.args or (float(addand),z**0)]
for _, e in [zterm.args or (None, (zterm))]
]
输出:[(0.421875, 1), (0.0820312500000000, 1/2), ... ,(0.00195312500000000, 7/4), (0.0703125000000000, z)]
几乎和循环一样:result = []
for addend in G_F.args:
if isinstance(addend,(sp.Mul)):
coeff, zterm = addend.args
if isinstance(zterm, sp.Pow):
result.append((coeff.evalf(), zterm.args[1].evalf()))
else:
r