Как преобразовать математическую формулу в код Python?

Существуют ли простые способы преобразования математических формул в код Python? Возможно, переводчики, веб-ссылки, конкретные главы книг, что-нибудь ~

Для регулярных выражений существуют такие программы, как Kodos, и такие сайты, как pythonregex.com, поэтому я надеялся, что будет что-то похожее для записи формул и Python.


person T Carrasco    schedule 06.02.2011    source источник
comment
Как именно будет выглядеть преобразование математической формулы в код Python? Что такое код Python для математической формулы?   -  person Falmarri    schedule 06.02.2011
comment
Я подозреваю, что это будет зависеть от того, что вы подразумеваете под математической формулой. Преобразование чистых вычислений (возможно, с некоторыми переменными), вообще говоря, довольно прямолинейно. Сумма может быть выражена в виде цикла for.   -  person Vatine    schedule 06.02.2011
comment
Есть определенные формулы, которые не так легко перевести. Примеры: \sum_{n=0}^\infty 1/n^2, \int_0^1 \sin x dx, \lim_{x\to 0} (e^x - 1)/x.   -  person Vlad    schedule 06.02.2011
comment
Вы можете проверить sagemath.org и связанные с ним sagenb.com   -  person eat    schedule 06.02.2011
comment
@Falmarri, вы должны были проверить мои примеры программ, которые делают то же самое для регулярных выражений ~ @Vlad, да, поэтому это было далеко, некоторые формулы (хотя и не обязательно строго математические, как я просил) невозможно перевести, как указывает Павел   -  person T Carrasco    schedule 08.02.2011
comment
@Mleep: Да, но регулярные выражения являются неотъемлемой частью языка. Итак, pythonregex уже есть в python. Нечего конвертировать. Каков именно ваш ожидаемый ввод/вывод?   -  person Falmarri    schedule 08.02.2011
comment
Взгляните на эту статью. Это может помочь: matt.might.net/articles/discrete-math-and -код   -  person    schedule 15.11.2011


Ответы (2)


Нет, это невозможно в общем случае. Существуют математические функции, которые невозможно вычислить (например, см. wikipedia/Halting_problem). Есть и другие математические функции, где просто не очевидно, как их закодировать (рассмотрите сложные интегральные или дифференциальные уравнения). Существует множество книг, посвященных поиску численных решений подобных задач (некоторые ссылки можно найти здесь: wikipedia/Numerical_analysis). ).

В простых случаях вы можете расшифровывать математические формулы напрямую, но любые автоматизированные средства перевода потребуют формального языка для написания математических формул, который сам по себе будет языком программирования. Это может вызвать вопрос, поскольку вы будете обмениваться написанием математических формул на одном языке с написанием их на другом.

person Community    schedule 06.02.2011
comment
имеет смысл, хотя регулярные выражения не являются специальными символами, можно утверждать, что, поскольку они используют обычные грамматики, они являются формальным языком. следующим шагом должен был стать численный анализ; это простая, прямолинейная, но занятая работа. надеялся, что есть более быстрое решение. Спасибо за ответ! - person T Carrasco; 08.02.2011
comment
@Mleep: Численный анализ - это не просто, прямолинейно, и это не просто тяжелая работа. Вы в какой математике? Это что-то, что вы пытаетесь сделать для проекта или что-то в этом роде? - person Falmarri; 08.02.2011
comment
@Falmarri Ну, для некоторых это довольно линейный процесс. Я работаю над наборами уровней, создавая 2D- и 3D-моделирование жидкости, формулы раздражают, когда их переписывают на python, и я надеялся на переводчика. Здесь нет необходимости идти выше, чем ты. Когда я знаю формулу или это уже было сделано раньше, ее преобразование занимает много времени. Это не мнение. - person T Carrasco; 23.02.2011
comment
@Morvern: я не пытался подняться выше, чем ты. Мне было просто любопытно, как это имеет значение, учитесь ли вы в первом семестре по вычислениям или пишете докторскую диссертацию по дифференциальным уравнениям в многомерной гиперболической геометрии или что-то в этом роде. - person Falmarri; 23.02.2011

Вы можете попробовать создать свой собственный с помощью sympy и pyparsing.

person user3064246    schedule 04.12.2013