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

如何用SymPy提取多元多项式指定幂次项并获取纯表达式

提取Poly对象中的纯表达式

问题描述

给定如下多项式:

3*D*c1*cos_psi**2*p**2*u/(d*k**4*kappa**2) + 3*D*c1*cos_psi*p*q*u/(2*k**4*kappa**2) - 3*D*c1*cos_psi*p*q*u/(d*k**4*kappa**2) - 3*D*c1*u/(2*k**2*kappa**2) - 3*D*c1*p**2*u/(2*k**4*kappa**2) - 3*D*c1*q**2*u/(4*k**4*kappa**2) + 3*D*c1*p**2*u*(1 - cos_psi**2)/(d*k**4*kappa**2) + 3*D*c1*q**2*u/(2*d*k**4*kappa**2) - 6*D*c3*cos_psi**2*p**2*u/(d*k**4*kappa**2) - 6*D*c3*cos_psi*p*q*u/(k**4*kappa**2) + 6*D*c3*cos_psi*p*q*u/(d*k**4*kappa**2) + 6*D*c3*p**2*u/(k**4*kappa**2) + 3*D*c3*q**2*u/(k**4*kappa**2) - 6*D*c3*p**2*u*(1 - cos_psi**2)/(d*k**4*kappa**2) - 3*D*c3*q**2*u/(d*k**4*kappa**2)

需要将其整理为以q和p为变量的多元多项式形式,使用Poly(expr,q,p)可以完成整理,但返回结果带有Poly包装结构,仅需要其中的纯表达式部分。

解决方法

在SymPy中,Poly对象提供了as_expr()方法,可直接提取出其中的纯表达式,操作步骤如下:

  • 首先将多项式定义为SymPy表达式;
  • 使用Poly(expr, q, p)将其转换为以q、p为变量的多项式对象;
  • 调用as_expr()方法提取纯表达式。

示例代码

from sympy import symbols, Poly

# 定义所有符号变量
D, c1, cos_psi, p, u, d, k, kappa, q, c3 = symbols('D c1 cos_psi p u d k kappa q c3')

# 输入原始多项式
expr = 3*D*c1*cos_psi**2*p**2*u/(d*k**4*kappa**2) + 3*D*c1*cos_psi*p*q*u/(2*k**4*kappa**2) - 3*D*c1*cos_psi*p*q*u/(d*k**4*kappa**2) - 3*D*c1*u/(2*k**2*kappa**2) - 3*D*c1*p**2*u/(2*k**4*kappa**2) - 3*D*c1*q**2*u/(4*k**4*kappa**2) + 3*D*c1*p**2*u*(1 - cos_psi**2)/(d*k**4*kappa**2) + 3*D*c1*q**2*u/(2*d*k**4*kappa**2) - 6*D*c3*cos_psi**2*p**2*u/(d*k**4*kappa**2) - 6*D*c3*cos_psi*p*q*u/(k**4*kappa**2) + 6*D*c3*cos_psi*p*q*u/(d*k**4*kappa**2) + 6*D*c3*p**2*u/(k**4*kappa**2) + 3*D*c3*q**2*u/(k**4*kappa**2) - 6*D*c3*p**2*u*(1 - cos_psi**2)/(d*k**4*kappa**2) - 3*D*c3*q**2*u/(d*k**4*kappa**2)

# 转换为Poly对象并提取纯表达式
poly_obj = Poly(expr, q, p)
pure_expr = poly_obj.as_expr()

# 打印结果
print(pure_expr)

补充说明

如果需要进一步简化表达式,可以在提取后调用simplify()方法:

from sympy import simplify
simplified_expr = simplify(pure_expr)
print(simplified_expr)

内容的提问来源于stack exchange,提问作者Nikos Pap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:21:11