如何在SymPy输出中将分式置于括号之前?
解决SymPy表达式LaTeX输出格式问题
要让你的表达式从- \frac{\tau \left( ... \right)}{2 \mu}变成-\frac{\tau}{2\mu}\left(...\right)的紧凑形式,核心是让SymPy把常数因子从分子中提取出来,调整表达式结构后,LaTeX输出自然会符合你的预期。
具体实现步骤
在你的代码里,对最终化简后的表达式调用factor_constants()方法——它会自动把所有符号常数(比如这里的tau和mu相关系数)作为公因子提取到括号外面。
修改后的代码末尾部分如下:
expr = c1k(f(x,t)).doit().simplify().factor_constants() print(latex(expr))
效果说明
- 调用
factor_constants()后,表达式结构会变为(-tau/(2*mu)) * (2*K'(x)*ψ_x(x,t) + K''(x)*ψ(x,t)) - 对应的LaTeX输出会直接变成你想要的格式:
-\frac{\tau}{2 \mu} \left(2 \frac{d}{d x} K{\left(x \right)} \frac{\partial}{\partial x} \psi{\left(x,t \right)} + \frac{d^{2}}{d x^{2}} K{\left(x \right)} \psi{\left(x,t \right)}\right) - 在Jupyter Notebook中,由于
init_printing()会自动渲染LaTeX,显示效果也会是系数乘括号的紧凑样式,不会再出现过高的分式。
补充提示
如果遇到更复杂的表达式,factor_constants()不够用的话,还可以尝试用collect(expr, tau/mu)手动指定要提取的因子,但对你当前的场景来说,factor_constants()已经足够简洁高效。
内容的提问来源于stack exchange,提问作者homocomputeris
相关产品推荐
相关产品推荐

