You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何直接对两个多项式约分而不转换为有理函数?

解决方案

要直接对多项式分子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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:52:00