我正在尝试在 Julia 版本中将 LaTeX 转换为 SymPy 可理解的格式。我的 latex 公式可能涉及矩阵和其他符号。一个简单的例子是:
$\left[ \frac{(\theta - 1)(1 - \zeta_{n,s})c\beta}{\theta w a } \right]$
有没有办法自动将这个方程转换成 Julia 的 sympy 版本?
最佳答案
为了清楚起见,我将把 Python 版本的 SymPy 称为 SymPy,并将 Julia 包装器称为 SymPy.jl。
对于 LaTeX 解析,SymPy 需要额外的包 antlr4
,它在 Conda 网站上称为 antlr4-python3-runtime
。
那么,SymPy.jl似乎没有sympy.parsing.latex
模块。我可能太蠢了,无法理解它,但我不得不使用 PyCall 来进行解析本身。
请注意,antlr4 不喜欢 _{...}
形式的下标。这意味着它会因表达式中的 \zeta_{n,s}
而崩溃。我刚刚将其更改为下面的 \zeta(n, s)
。
为了检查我们是否可以将表达式与 SymPy.jl 一起使用,我刚刚向表达式添加了一个随机符号,它似乎有效。
# intall antlr4
using PyCall
run(`$(PyCall.python) -m pip install --upgrade antlr4-python3-runtime`)
# parse the expression
s = raw"\left[ \frac{(\theta - 1)(1 - \zeta(n,s))c\beta}{\theta w a } \right]"
using PyCall
latex = pyimport("sympy.parsing.latex")
expr = latex.parse_latex(s)
# check that we can interact with the expression
using SymPy
expr = expr + sympy.Symbol("y")
关于latex - 将 LaTeX 方程转换为 SymPy [Julia] 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67562220/