Jupyter笔记本中的自定义打印

4
我正在寻找一个替代MathCad的工具,用于进行简单计算,但希望表达式看起来像使用纸和笔一样,并且易于阅读给不懂编程的人。我尝试过Sweave、Knitr,但并不满意。最近我发现了带有SymPy的Jupyter笔记本,但对我来说仍然不如MathCad容易使用,但我会尝试一下。在Jupyter中,我遇到了打印公式的问题:我想要自动打印等式的两边

我想要的:

enter image description here

我得到了什么:

enter image description here

我尝试过的

ccode无法返回LaTeX,每次都输入“assign_to”很无聊 在此输入图像描述

3个回答

4
如果你需要更方便的方式,可以定义一个包装函数如下所示。
class Equation(object):    
    def __init__(self, left, right, mode='latex'):        
        self.mode = mode
        self.left = left
        self.right = right

        self._eq = sym.Eq(left, right)
        self._latex = sym.latex(self._eq)

    def __repr__(self):
        if self.mode == 'latex':
            return self._latex.__repr__()
        elif self.mode == 'sympy':
            return self._eq.__repr__()

    def __str__(self):
        if self.mode == 'latex':
            return self._latex
        elif self.mode == 'sympy':
            return self.eq.__str__()

    def eq(self):
        return self._eq

    def latex(self):
        return self._latex

    @property
    def mode(self):
        return self._mode

    @mode.setter
    def mode(self, val):
        self._mode = val

    @property
    def left(self):
        return self._left
    @left.setter
    def left(self, val):
        self._left = sym

    @property
    def right(self):
        return self._right

    @right.setter
    def right(self, val):
        self._right = val
# end of class 

enter image description here


2
如果要打印等式,您需要使用sympy.Eq。在Python中,=运算符只是将变量赋值给SymPy表达式。在您的示例中,Python变量R_r被赋值为SymPy表达式(c_1 + (c_2*x/G) + c_3*V)*G
一般来说,在Python中,对象和它分配的变量没有反向关联。表达式无法“知道”它被分配到名为R_r的变量上。
因此,您需要创建名为R_r的符号,并使用Eq(R_r, (c_1 + (c_2*x/G) + c_3*V)*G)
另请参见http://docs.sympy.org/latest/tutorial/gotchas.htmlhttp://nedbatchelder.com/text/names.html

0

谢谢你的回答,但我通常会使用30个类似于这个公式的公式,所以我正在寻找更简单和更快速的解决方案。 - Yuri F Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接