Sympy中如何配置factor()函数使其自动提取公因子-1?
问题原因
Sympy的factor()函数默认的因式提取策略不会单独提取公因子-1,仅当表达式的各项存在绝对值大于1的数值公因子时,才会主动提取数值类公因子。你观测到的factor_list能识别到-1公因子是因为该函数会返回完整的因子拆分结构,不受factor()的默认输出策略限制。
解决方案
目前factor()本身没有提供直接的配置开关来强制提取-1公因子,你可以通过以下两种方式实现需求:
- 临时快速写法:对表达式取反后因式分解,再整体加负号
expr = -n -1 result = -sympy.factor(-expr) # 此时result输出为 -(n + 1)
- 封装通用工具函数,基于
factor_list的返回结果生成符合预期的格式:
import sympy def force_factor(expr): const_coeff, factor_pairs = sympy.factor_list(expr) factor_part = sympy.prod([base ** exp for base, exp in factor_pairs]) if const_coeff == -1: return -factor_part return const_coeff * factor_part # 测试用例 n = sympy.symbols("n", real=True) print(force_factor(-2*n -2)) # 输出 -2*(n + 1),符合原有预期 print(force_factor(-n -1)) # 输出 -(n + 1),符合需求
内容的提问来源于stack exchange,提问作者Stef1611
相关产品推荐
相关产品推荐

