如何直接对两个多项式约分而不转换为有理函数?
解决方案
要直接对多项式分子p1和分母q1约分,核心思路是计算两者的最大公因式(GCD),再将分子分母分别除以这个公因式,就能得到约分后的p2和q2。SymPy提供了专门处理多项式GCD的sp.gcd()函数,完全不需要先构造有理函数再转换。
实现代码
import sympy as sp def cancel_common(p, q): # 计算两个多项式的最大公因式 g = sp.gcd(p, q) # 分子分母分别除以公因式,得到约分后的结果 p2 = sp.expand(p / g) q2 = sp.expand(q / g) return p2, q2 # 测试示例 z = sp.symbols('z') p1 = z**2 - 1 q1 = z**2 - z p2, q2 = cancel_common(p1, q1) print(p2) # 输出: z + 1 print(q2) # 输出: z
关键说明
sp.gcd()专门用于计算符号多项式的最大公因式,完美适配带变量z的多项式,这是sympy.Rational做不到的——后者仅用于处理数值型有理数,不支持符号表达式。- 使用
sp.expand()是为了确保结果展开为最简多项式形式,避免出现未展开的分式结构。
内容的提问来源于stack exchange,提问作者flonk
相关产品推荐
相关产品推荐

