diff的输出无法在启用的LaTeX中呈现

时间:2017-10-07 12:31:21

标签: python sympy

我想在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行不能用乳胶输出?

1 个答案:

答案 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/进行测试:

live sympy

顶部输出来自您的版本,底部是大括号,如上所示。它呈现除了\deltap,当然这是一个未定义的LaTeX命令。除非它是您在其他地方定义的自定义内容,否则应使用{\delta}p_0修复此内容。