繁体   English   中英

在jupyter笔记本中自定义打印

[英]Custom printing in jupyter notebook

我正在寻找MathCad的替代方案来进行简单的计算,但我希望表达式看起来像我使用的是笔和纸,并且让那些不懂编程的人容易阅读。 我试过Sweave,Knitr,但我对它不满意。 我最近发现了使用SymPy的Jupyter笔记本,它对我来说仍然不像MathCad那么容易,但我会试一试。 使用Jupyter我在打印公式时遇到问题: 我想自动打印等式的两边

我想要的是:

在此输入图像描述

我得到了什么:

在此输入图像描述

我尝试了什么

ccode不会返回乳胶而且总是输入“assign_to”而无聊 在此输入图像描述

如果您需要更方便的方法,可以按如下方式定义包装函数。

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 

在此输入图像描述

如果要打印等式,则需要使用sympy.Eq =运算符只是在Python中赋值变量,在您的示例中,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

你可以使用sympy.printing.latex。

SymPy使用LaTeX打印

有关更多信息,请参阅以下链接。

http://docs.sympy.org/dev/modules/printing.html?highlight=sympy.printing#module-sympy.printing.latex

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM