Подтвердить что ты не робот

Методы ввода уравнений при программировании в C/С++, Python или Fortran

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

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

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

4b9b3361

Ответ 1

Посмотрели ли вы на Sympy? Он имеет модуль для генерации LaTeX из кода python, но на самом деле он немного больше.

Sympy, как вы можете догадаться из имени, является библиотекой python для символического вычисления.

Библиотека Sympy также включает в себя собственный встроенный интерпретатор (cd в каталог 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 dev/committer, просто пользователь.)

Ответ 2

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


Основываясь на многих болезненных часах, связанных с настройками уравнения 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)

Ответ 3

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

enter image description here

Ответ 4

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

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