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

Символическая математика Python?

Я очень заинтересован в математике и программировании и планировании запуска символической математики проекта с нуля.

  • Является ли эта хорошая идея проектом?

  • С чего начать?

  • Как подойти к этому   проект?

  • Любые хорошие ресурсы?

Спасибо заранее.

4b9b3361

Ответ 1

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

  • С чего начать: посмотрите на уже существующие решения и подумайте о том, что вы хотите делать по-другому. Как ваш проект будет отличаться от других?

  • Ресурс: SymPy - это библиотека Python для символической математики

Ответ 2

1. Это хорошая идея проекта?

Да; Я бы ожидал, что он предоставит бесконечный источник интересной работы, которая, довольно быстро, проверит и расширит ваши возможности программирования.

2. С чего начать?

Во-вторых, другие предложения, которые вы должны посмотреть на существующую работу. SAGE очень впечатляет, и если бы вы попросили мой совет, я бы посоветовал вам сначала написать базовую систему для выполнения арифметики с числами и символами; затем взгляните на SAGE и напишите модуль, чтобы расширить систему, другими словами, стать вкладчиком в нечто большее, чем пытаться сделать все это самостоятельно. Посмотрите также на Mathematica и Maple, Macsyma и Axiom. Последние 2 являются бесплатными (я думаю), но все они хорошо документированы в режиме онлайн и являются отличным источником идей и проблем.

3.Как следует подходить к этому проекту?

Как можно было бы съесть слона. Один укус за раз. Более серьезно, я думаю, что есть некоторые основные проблемы, такие как представление выражений и некоторые базовые функции (арифметика на полиномах), которые вы могли бы нарезать своими зубами.

4. Какие хорошие ресурсы?

Много и много. google для "компьютерной алгебры", "переписывание терминов". Посмотрите, что доступно на Amazon. И, если у вас есть доступ, ознакомьтесь с цифровой библиотекой ACM

Удачи.

Ответ 3

Символическая математика - забавный проект. Независимо от того, использует ли он его, в вашем вопросе, похоже, не имеет значения, поэтому погружайтесь.

Я написал два из них на протяжении многих лет. Самый классный был для SQL, где клаузулы - он делал некоторые тривиальные символические манипуляции на SQL, чтобы сложить некоторые дополнительные условия. Не полный "решатель" или "оптимизатор" или что-то еще, лишь несколько символических манипуляций с любым предложением SQL where. Менее прохладный был для отладчика; он сделал сложную математику для разработки (символически) смещений стека для переменных.

Вы начинаете с определения классов для элементов математического выражения - операндов, операторов, функций и т.д.

Вы должны решить, какие манипуляции должны иметь эти объекты. Получение конкретного значения для выражения является простым и очевидным. Начните с случая, когда все переменные имеют привязку.

Затем обрабатывайте случай, когда некоторые переменные остаются несвязанными, и вы можете оценивать только части выражения.

Затем обработайте преобразование выражения в каноническую форму. Я., вы сделали частичную оценку и Add( Variable(x), Add( Variable(x), Lit(3) ) ). Вам нужно написать правила, чтобы преобразовать это в Add( Multiply( Lit(2), Variable(x) ), Lit(3) ).

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

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

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

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

Основы - это весело. В зависимости от того, как далеко вы хотите идти, это становится все труднее.

Ответ 4

@Resources: вы можете взглянуть на pythonica - это была попытка реализовать программу типа Mathematica в Python ( исходный код доступен для скачивания).

Ответ 5

Этот pySym Блог может также заинтересовать вас идеей и стартовыми устройствами, а также узнать, что делают другие с помощью python и символической математики.

Ответ 6

Больше на пути ресурсов: SympyCore:

Целью проекта SympyCore является поиск новых высокопроизводительных решений для представления и обработки символических выражений на языке программирования Python и опробования новых символических моделей для достижения принципиально последовательной и достаточно общей символической модели, которая была бы легко перейти к компьютерной алгебраической системе (CAS).

Ответ 7

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

Есть много больших ресурсов. Я рекомендую книгу "Современная компьютерная алгебра" Цур Гатена и Герхарда, хотя она больше интересует арифметику в специальных формах (полиномы, целые числа, матрицы), чем общие символические манипуляции. Когда вы начинаете, вам может быть лучше помочь, посмотрев на какой-то учебник Lisp или Scheme, потому что символическая математика концептуально очень проста в использовании в Lisp, а для создания символического движка в Python вы будете больше или менее должны внедрить мини-Lisp в качестве основы.

Как указывали другие, вы можете посмотреть SymPy и sympycore для вдохновения или конкретных алгоритмов. Исходный код для любого проекта немного сложный (но, конечно, не слишком сложно учиться).

(Если я могу немного подключиться, я написал крошечный символический движок некоторое время назад (как проект на выходные - он очень крошечный и я не работал с ним с тех пор). Он реализует общий символический движок около 200 строк кода, а затем существует 300 строк кода, реализующих символическую арифметику и символическую булеву алгебру с некоторым очень рудиментарным упрощением. чем SymPy, но все, что есть, может быть легко обнаружено для вас, и, возможно, это будет веселее.)