我试图在SymPy中做一些符号计算,但我无法使用乳胶打印,并得到我想要的图形输出。这一直困扰着我,并花了几个小时(也许几天)试图找到一种定制对象打印方式的方法(在乳胶中,在pprint表示中,它有很好的文档记录)。在
然而,在这个例子中,我试图对一个未定义的函数,psi进行符号计算,这个函数依赖于x,y,z。然而,这些计算意味着这些项的旋度是psi*\vec r的三倍
我有以下代码
init_printing(use_latex=True)
R = ReferenceFrame(r"E", variables=["x", "y", "z"])
psi = Function(r"\psi")(R[0], R[1], R[2])
rpsi = (R[0]*R.x + R[1]*R.y + R[2]*R.z)*psi
其中,R[i]
是第i个变量(x,y或z),而R.x
,R.y
和{
例如,当我试图查看curl(curl(rpsi, R), R)
时,输出中充满了“\psi(x,y,z)”(在latex中编译并显示为图像),因此跟随表达式变得很乏味。在
有没有一种方法可以定制编译后的latex字符串(这将应用于我正在进行的其他计算)。如果这不可能,如何解决这个特殊问题(即每次打印函数时都显示自变量)。在
我正在使用jupyter和qtconsole。在
干杯
最简单的方法是创建一个自定义函数,可以根据需要打印。您可以通过子类化
Function
并定义_latex
(请参见http://docs.sympy.org/latest/modules/printing.html#sympy.printing.latex.LatexPrinter.printmethod)来实现这一点。在如果要打印参数,请使用
self.args
访问它们并使用printer._print
(例如,通常的打印机是r'\phi{\left (' + ', '.join(printer._print(i) for i in self.args) + '\right )}'
)。在相关问题 更多 >
编程相关推荐