python的sympy因式分解怎么获取第二个因式?

import sympy
x=sympy.symbols('x')
r=sympy.factor(x**7-1)
print(sympy.factor(x**7-1))
(x - 1)*(x**6 + x**5 + x**4 + x**3 + x**2 + x + 1)

我怎么才能获取第二个表达式(x**6 + x**5 + x**4 + x**3 + x**2 + x + 1)再进行操作呢?谢谢

阅读 3.2k
1 个回答

使用factor_list, 可以这样:

import sympy
from sympy import factor_list

x = sympy.symbols('x')
r = sympy.factor(x**7 - 1)
print(r)

f_list = factor_list(r)
print(f_list)
# (1, [(x - 1, 1), (x**6 + x**5 + x**4 + x**3 + x**2 + x + 1, 1)])

s = f_list[1][1][0]
print(s)
# x**6 + x**5 + x**4 + x**3 + x**2 + x + 1
print(type(s))
# <class 'sympy.core.add.Add'>
# 假设让 x = 1 执行结果:
print(s.evalf(subs={x:1}))    # 7.00000000000000

参考:
docs.sympy.org/simplification#factor

或者, 你可以这样(表达式除去(x-1)):

x = sympy.symbols('x')
r = sympy.symbols(x**7 - 1)
s = r / (x - 1)
print(s)
# x**6 + x**5 + x**4 + x**3 + x**2 + x + 1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题