Методы ввода уравнений при программировании на C / C ++, Python или Fortran - PullRequest
12 голосов
/ 05 сентября 2011

Я пишу код, который имел длинные математические уравнения со многими тригонометрическими и другими тождествами.Есть ли способ визуализировать одно и то же выражение в латексе и сделать из него выражение C или python или наоборот?

Как вы вводите и проверяете математические выражения, чтобы увидеть, правильны ли скобки и т. Д.позиционировать и использовать их в латексных документах?

Заранее спасибо

Ответы [ 4 ]

16 голосов
/ 05 сентября 2011

Вы смотрели на Симпи ?У него есть модуль для генерации LaTeX из кода Python, но на самом деле он немного больше.

Sympy , как вы, вероятно, можете догадаться из названия, - это библиотека Python для символьные вычисления .

Библиотека Sympy также включает в себя собственный встроенный интерпретатор (перейдите в каталог sympy в пакетах сайта и введите ipython вприглашение оболочки).

С помощью Simpy Interpeter вы можете делать такие вещи:

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, а просто пользователь.)

3 голосов
/ 05 сентября 2011

Редактировать: Кажется, что для некоторых уравнений определенно возможно автоматизировать процесс, см. Ниже.Оригинальный ответ остался нетронутым!


На основании многих мучительных часов борьбы с настройками уравнения LaTeX и моих собственных неудач, чтобы заметить недостающие элементы в огромных equation блоках: хотя почти наверняка возможно доконвертировать LaTeX в python или наоборот, это, вероятно, будет более болезненным, чем просто делать это вручную, и вам, скорее всего, придется потратить время на приведение в порядок результатов.

Тем не менее, аналогичные вопросы задавались иответил,

Возможно, вы сможете начать там.


edit Я просмотрел предыдущие вопросы и протестировал комбинацию комментариев ( 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)
2 голосов
/ 10 сентября 2011

Лучший инструмент, который я знаю для этого, - проект sage .Он поддерживает символьные вычисления и может выводить любое уравнение на терминал в виде ASCII или на терминал в виде кода LaTeX или прямо в PDF с использованием LaTeX.Он заменяет некоторые другие предложения, поскольку он также предлагает интерфейсы для MATLAB, Mathmatica, Maple и т. Д.

enter image description here

0 голосов
/ 05 сентября 2011

Если у вас есть Mathematica, он может импортировать код LaTeX в выражение Mathematica, которое затем можно экспортировать в код C или MATLAB, возможно, также на FORTRAN.

Преобразовать MATLAB в синтаксис Python довольно просто, я делал это в прошлом с помощью функции поиска и замены, но простой сценарий мог бы сделать это еще быстрее.

...