我想在sympy
中按如下方式区分表达式。我正在使用jupyter qtconsole
启用乳胶:
from sympy import *
init_printing()
p0,nu,lamb,k,epsp, dp0 = symbols(r'p_0, nu, lambda, kappa, \delta\epsilon_p^p, \deltap_0')
test = Eq(epsp,((lamb-k)/nu)*dp0/p0)
p0expr = solve(test,p0)[0]
diff(p0expr, epsp)
diff(p0expr,k)
diff(p0expr,lamb)
我想关注最后三行代码,第6,7和8行。第7行和第8行输出乳胶样式输出,而第6行则不输出。为什么第6行不能用乳胶输出?
答案 0 :(得分:0)
查看diff(p0expr, epsp)
的文本输出,
-\deltap_0*(-kappa + lambda)/(\delta\epsilon_p^p**2*nu)
问题在于对名为\delta\epsilon_p^p
的变量进行平方。 (另外两个衍生品没有平方。)如果这个方块在LaTeX标记中转换为
\delta\epsilon_p^p^2
由于多个上标,结果是无效的LaTeX。建议:在这个符号名称周围加上花括号,
symbols(r'p_0, nu, lambda, kappa, {\delta\epsilon_p^p}, \deltap_0')
这将防止名称与包含它的公式之间的这种干扰。
使用http://live.sympy.org/进行测试:
顶部输出来自您的版本,底部是大括号,如上所示。它呈现除了\deltap
,当然这是一个未定义的LaTeX命令。除非它是您在其他地方定义的自定义内容,否则应使用{\delta}p_0
修复此内容。