gpt4 book ai didi

ipython - ipython 笔记本中几何代数的良好输出

转载 作者:行者123 更新时间:2023-12-03 12:14:59 27 4
gpt4 key购买 nike

精简版

我能否在 ipython 笔记本中获得 sympy 几何代数对象的漂亮 latex 风格打印?

更长的版本

ipython笔记本,我可以从 sympy 得到各种数学对象的 pretty-print .例如,如果我的 sympy变量是希腊字符,输出像 latex 一样漂亮。 (大概使用 MathJax...)一个明确的例子:

from sympy import symbols, init_printing
init_printing(use_latex=True)
alpha = symbols('alpha')
alpha**2/3

输出是一个很好地显示的分数 à la latex,具有正确放置的上标和真正的 alpha。完美。

但我也用几何代数模块做了很多工作 sympy.galgebra.GA ,我想要类似的结果。显然,有一个不同的打印系统叫做 latex_ex对于这个模块,当我从命令行运行脚本(如模块页面上的脚本)并让它们输出 dvi 文件时,它似乎确实有效。但我所做的任何事情都无法使 GA 在笔记本中看起来不错。有什么我可以做的吗?

为了具体一点,这里有一个具体的例子:

from sympy.galgebra.GA import *
metric = '1 0 0,0 1 0,0 0 1'
gamma_x,gamma_y,gamma_z = MV.setup('gamma_x gamma_y gamma_z',metric,True)
gamma_x

输出只是reprgamma_x ,这是无用的,例如 <sympy.galgebra.GA.MV at 0x1060b8510> .同样,调用 print就给我_1*gamma_x ,这是我要避免的。

在脚本中,我可以在上面添加以下内容:

from sympy.galgebra.latex_ex import LatexPrinter, xdvi
LatexPrinter.format(1,1,1,1)
print gamma_x
xdvi(filename='testGA.tex')

这为我提供了具有漂亮 latex 表达式的预期 DVI。当然,如果我在笔记本中做同样的事情,我绝对不会得到任何打印语句的输出,即使是那些不涉及 GA 对象的语句——实际上什么也没有,不仅仅是不漂亮的东西。

我正在运行 python 2.7.5,sympy 0.7.3,并在 ipython 1.0 下使用笔记本。

[编辑编辑:下面的 hackiness 更新版本]

由于在工作中进行了各种更改,我不得不进行各种更改。我在 my answer 中收集了一个很好的当前示例.

编辑:Hacky 部分解决方案

我实际上得到了一个非常丑陋的 hack 来处理代码的当前发布版本。下面的工作,但我很不满意,所以我希望 Alan 的新版本模块会带来更好的东西。这主要是供引用。但基本思想似乎是 sympy.galgebra.GA.MV._repr_latex_需要以某种方式定义。任何对 sympy 或 ipython 的工作原理有更深入了解的人都非常欢迎发表评论。

from sympy.galgebra.GA import *
metric = '1 0 0,0 1 0,0 0 1'
gamma_x,gamma_y,gamma_z = MV.setup('{\gamma}_x {\gamma}_y {\gamma}_z',metric,True)

def MVlatex(mv, *args) :
from re import sub
s = str(mv)
s = s.replace('*',r' ')
s = sub(r'(?<![}_a-zA-Z0-9])_1(?![a-zA-Z0-9])', r' ', s)
s = sub(r'__([a-zA-Z0-9]*)', r'^{\1}', s)
s = sub(r'_([a-zA-Z0-9]*)', r'_{\1}', s)
return '$$'+s+'$$'
sympy.galgebra.GA.MV._repr_latex_ = MVlatex

gamma_x

请注意正则表达式的不幸使用,负向后视等。此外,_repr_latex_有时会得到多个参数。我不知道除了第一个参数之外的任何参数是什么意思,所以我把它们扔掉了。最后,我敢肯定还有很多事情仍然很丑陋;这只是我最初粗略尝试的结果。

最佳答案

我是 GA 模块的作者,我将研究 Ipython latex 问题。我强烈建议您使用具有新版本 GA 的最新版本的 sympy。查看有关如何使用新 GA 的新文档。有几件事发生了变化。尝试以下操作(我不知道它是否有效,因为我自己不使用 Ipython)。对于“格式”语句使用

格式(ipy=True)

看看它是否有效(再次查看新发行版的文档和示例,因为其他内容随着打印和模块的其他方面而发生变化)。我的开发方法是使用“geany”编辑器编写脚本。然后我只需按下编辑器上的运行按钮,观察终端或 latex 的输出。

我对您使用 GA 的目的很感兴趣,并了解您希望在未来的版本中包含哪些内容。如果您想直接与我联系,我的电子邮件是

abrombo@verizon.net

关于ipython - ipython 笔记本中几何代数的良好输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18667274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com