【问题标题】:Sympy: how to print a list of expressions all LaTeX typeset?Sympy:如何打印所有 LaTeX 排版的表​​达式列表?
【发布时间】:2020-12-17 05:49:41
【问题描述】:

我有一个多项式表达式列表,(在我的例子中,作为 Groebner 基计算的输出获得),我想查看。我正在使用 Jupyter,我已经开始使用了

import sympy as sy
sy.init_printing()

这会使单个表达式得到很好的排版。对于非 Groebner 示例:

sy.var('x')
fs = sy.factor_list(x**99-1)
fs2 = [x[0] for x in fs[1]]
fs2

结果是一个很好的 LaTeX 排版表达式列表。但是我如何一次打印这些表达式?更确切地说;每行一个?我试过了:

for f in fs2:
    sy.pprint(f)

但这会产生 ascii 漂亮的打印,而不是 LaTeX。一般来说,我的表达往往很长,我真的很想单独看它们。我当然可以

fs2[0]
fs2[1]
fs2[2]

等等,但这很烦人,而且对于长列表几乎没有用处。有什么想法或建议吗?谢谢!

【问题讨论】:

    标签: list printing jupyter sympy typeset


    【解决方案1】:

    Jupyter(通过 IPython)有一个名为 display 的便利函数,它与 SymPy 配合得很好:

    import sympy as sy
    sy.init_printing()
    sy.var('x')
    fs = sy.factor_list(x**99-1)
    fs2 = [x[0] for x in fs[1]]
    for f in fs2:
        display(f)
    

    输出:

    您还可以使用latex 函数获取每个多项式的乳胶代码:

    import sympy as sy
    from sympy.printing.latex import latex
    sy.init_printing()
    sy.var('x')
    fs = sy.factor_list(x**99-1)
    fs2 = [x[0] for x in fs[1]]
    for f in fs2:
        print(latex(f))
    

    输出:

    x - 1
    x^{2} + x + 1
    x^{6} + x^{3} + 1
    x^{10} + x^{9} + x^{8} + x^{7} + x^{6} + x^{5} + x^{4} + x^{3} + x^{2} + x + 1
    x^{20} - x^{19} + x^{17} - x^{16} + x^{14} - x^{13} + x^{11} - x^{10} + x^{9} - x^{7} + x^{6} - x^{4} + x^{3} - x + 1
    x^{60} - x^{57} + x^{51} - x^{48} + x^{42} - x^{39} + x^{33} - x^{30} + x^{27} - x^{21} + x^{18} - x^{12} + x^{9} - x^{3} + 1
    
    

    【讨论】:

    • 哦,是的!非常感谢。我以为我尝试过“展示”,但显然没有。无论如何,这是一种享受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多