仅限SymPy打印功能nam

2024-09-26 22:12:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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.xR.y和{}是酉笛卡尔向量,在ReferenceFrame调用中实例化(来自物理学). 在

例如,当我试图查看curl(curl(rpsi, R), R)时,输出中充满了“\psi(x,y,z)”(在latex中编译并显示为图像),因此跟随表达式变得很乏味。在

有没有一种方法可以定制编译后的latex字符串(这将应用于我正在进行的其他计算)。如果这不可能,如何解决这个特殊问题(即每次打印函数时都显示自变量)。在

我正在使用jupyter和qtconsole。在

干杯


Tags: 对象方法函数图形方式curllatex乳胶
1条回答
网友
1楼 · 发布于 2024-09-26 22:12:12

最简单的方法是创建一个自定义函数,可以根据需要打印。您可以通过子类化Function并定义_latex(请参见http://docs.sympy.org/latest/modules/printing.html#sympy.printing.latex.LatexPrinter.printmethod)来实现这一点。在

In [33]: class psi(Function):
   ....:     def _latex(self, printer):
   ....:         return r'\psi'
   ....:

In [34]: latex(psi(x, y, z))
Out[34]: '\\psi'

如果要打印参数,请使用self.args访问它们并使用printer._print(例如,通常的打印机是r'\phi{\left (' + ', '.join(printer._print(i) for i in self.args) + '\right )}')。在

相关问题 更多 >

    热门问题