在C/C++、Python或Fortran编程时输入方程的方法
我正在写一段代码,这段代码里有很多复杂的数学公式,还有很多三角函数和其他的数学性质。请问有没有办法把这些公式用latex格式展示出来,并且把它转换成C语言或Python的表达式,或者反过来做?
我该如何输入和检查这些数学表达式,以确保括号等符号的位置正确,并且在latex文档中使用它们呢?
提前谢谢你!
4 个回答
我知道的最好的工具就是sage项目。它支持符号计算,可以把任何方程以ASCII格式或者LaTeX代码的形式漂亮地显示在终端上,甚至可以直接生成PDF文件。这个工具比其他一些建议更强大,因为它还可以和MATLAB、Mathmatica、Maple等软件进行连接。
编辑:看起来对于某些方程,确实可以自动化处理,具体情况见下文。原来的回答保持不变!
经过很多痛苦的时光,跟LaTeX的方程设置斗争,以及我自己在巨大的equation
块中没注意到缺失的元素:虽然几乎可以肯定地说,把LaTeX转换成Python或者反过来是可能的,但这过程可能会比手动操作更麻烦,而且你可能还得花时间整理结果。
话虽如此,类似的问题已经被问过并且得到了回答,
也许你可以从这里开始。
编辑 我查看了之前的问题,并测试了一些评论的组合(1 2 3)。所有的功劳都归于那些评论的作者!
import sympy
def python_to_latex(expression, simplify=False):
sym_expr = sympy.sympify(expression)
if simplify: sym_expr = sympy.simplify(sym_expr)
return sympy.latex(sym_expr)
if __name__ == '__main__':
print python_to_latex(raw_input("Enter a python math expression: "), simplify=True)
你有没有听说过Sympy?它有一个可以把Python代码转成LaTeX的模块,但其实功能远不止这些。
Sympy,从名字上你就能猜到,它是一个用于符号计算的Python库。
Sympy库还自带一个内置解释器(你可以在site-packages里的sympy目录下,打开命令行输入ipython)。
使用Sympy解释器,你可以做这样的事情:
In [1]: (1/cos(x)).series(x, 0, 10)
Out[1]:
2 4 6 8
x 5⋅x 61⋅x 277⋅x
1 + ── + ──── + ───── + ────── + O(x**10)
2 24 720 8064
In [2]: ((x+y)**2).expand()
Out[2]:
2 2
x + 2⋅x⋅y + y
In [3]: (1/cos(x)).series(x, 0, 10)
Out[3]:
2 4 6 8
x 5⋅x 61⋅x 277⋅x
1 + ── + ──── + ───── + ────── + O(x**10)
2 24 720 8064
# not quite LaTeX--but Sympy can easily generate LaTeX from python code:
>>> from sympy import Integral, latex
>>> from sympy.abc import x
>>> latex(x**2)
'x^{2}'
>>> latex(x**2, mode='inline')
'$x^{2}$'
>>> latex(x**2, mode='equation')
'\\begin{equation}x^{2}\\end{equation}'
我还想推荐一下Sympy库——它已经活跃开发了大约四年,每年都有很大进步;这是一个优秀、成熟的符号计算库,文档也很棒,还有一个活跃且乐于助人的社区。(除了提交过几个补丁,我并不是Sympy的开发者或维护者,只是个用户。)