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

Sympy自动改写方程问题:如何保留期望的表达式形式?

解决SymPy表达式自动改写问题

方法1:用UnevaluatedExpr锁定原始结构

如果要强制SymPy不自动化简特定部分,可使用UnevaluatedExpr包裹目标项,让表达式保持你定义的原始结构,直到主动触发化简操作。

示例代码:

import sympy as smp
Pp, T = smp.symbols('Pp T')
# 用UnevaluatedExpr包裹不想被自动改写的部分
A = smp.UnevaluatedExpr(300 + 25*T + 0.05*T**3)
ET = Pp / smp.sqrt(0.9 + Pp**2 / (A**2))
# 打印保留原始结构的表达式
print(ET)
# 后续需要化简时,调用.doit()
# print(ET.doit())

方法2:自定义输出格式

如果仅需输出时显示为预期格式,不改变内部表达式结构,可手动构造输出内容,或借助latex()函数调整显示样式:

import sympy as smp
from sympy import latex
Pp, T = smp.symbols('Pp T')
A = 300 + 25*T + 0.05*T**3
ET = Pp / smp.sqrt(0.9 + Pp**2 / (A**2))
# 手动构造符合需求的LaTeX格式输出
custom_latex = f"\\frac{{{latex(Pp)}}}{{\\sqrt{{0.9 + \\frac{{{latex(Pp)}^2}}}{{{latex(A)}^2}}}}}"
print(custom_latex)
# 若在Jupyter环境,可直接渲染成公式:
# from IPython.display import display, Math
# display(Math(custom_latex))

方法3:用together引导化简方向

SymPy的自动化简可能偏离预期,使用smp.together()可以将分母内的分式合并为有理式,维持你想要的整体结构:

import sympy as smp
Pp, T = smp.symbols('Pp T')
A = 300 + 25*T + 0.05*T**3
ET = Pp / smp.sqrt(smp.together(0.9 + Pp**2 / (A**2)))
print(ET)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:22:13