考虑以下示例:
from sympy import *
x = Symbol('x')
f = sqrt(3*x + 2)
现在我想替换一个数字,比如说5
for x
并得到一个 LaTeX 表示,在这种情况下它应该返回
\\sqrt(3\\cdot 5 + 2)
我怎样才能做到这一点?
I tried latex(f.subs(x,2,evaluate=False))
但这结果只是\\sqrt(17)
.
Use 未计算的Expr(5) http://docs.sympy.org/latest/tutorial/manipulation.html#prevent-expression-evaluation而不是 5:
>>> latex(f.subs(x, UnevaluatedExpr(5)))
'\\sqrt{2 + 3 \\cdot 5}'
该包装器可防止其内部的表达式(“5”)与外部术语交互。参考:防止表达式求值 http://docs.sympy.org/latest/tutorial/manipulation.html#prevent-expression-evaluation
替换后加数的顺序不同,如下所示3*x + 2
and 3*5 + 2
打印机以不同方式排序。为了避免这种情况,可以使用order='none'
它保留了参数的内部顺序,而不试图将它们置于对人类友好的安排中。
>>> latex(f, order='none')
'\\sqrt{2 + 3 x}'
>>> latex(f.subs(x, UnevaluatedExpr(5)), order='none')
'\\sqrt{2 + 3 \\cdot 5}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)