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

В чем разница между симпатией и шалфеем?

Что вы, ребята, рекомендуете для обширных систем математики/физики/химии.

Sympy или sage на основе последних версий?

Я также слышал о математике, использующей оба из них, w шляпа будет лучшим вариантом, если есть другой вариант?

4b9b3361

Ответ 1

(Полное раскрытие: я являюсь ведущим разработчиком SymPy)

Первое, что вы должны понять, это то, что SymPy и Sage не совсем то же самое. SymPy - это чистая библиотека Python, которая выполняет компьютерную алгебру. Sage - это коллекция программного обеспечения с открытым исходным кодом. Мудрец пытается собрать все основные математические программы с открытым исходным кодом и объединить их в полезную систему. Фактически, Sage включает SymPy в качестве одной из своих систем.

Вот краткий список (необъективных) фактов для каждого (я не буду называть их "за" или "против", просто факты):

SymPy

  • SymPy полностью автономна. У него нет зависимостей, кроме Python.
  • Несмотря на то, что он автономный, он полнофункциональный как система компьютерной алгебры. Если вы хотите делать численные данные, вам предлагается использовать другие библиотеки в научном экосистеме Python.
  • SymPy лицензируется BSD. Для многих это не имеет значения, но если вы хотите включить Sympy во что-то еще, приятно знать, что вы можете в значительной степени делать все, что хотите, с помощью кода.
  • SymPy не пытается изменить Python. SymPy берет философию, что Python делает все хорошо, поэтому он должен делать вещи на Python. Например, оператор экспоненции **, как и в Python, а не ^, как и во многих других системах.
  • SymPy может использоваться как библиотека. Поскольку SymPy - это просто модуль Python, вы можете просто импортировать его и использовать его в любом месте, где используется Python. Есть много действительно классных приложений и библиотек, которые используют Sympy в фоновом режиме для создания символики (во многих случаях, в тех местах, где вы даже не понимаете, что используются символы).

Sage

  • Sage включает в себя все (включая SymPy) из мира с открытым исходным кодом, которое вы, возможно, захотите сделать математикой. Это включает в себя множество библиотек, которые полезны для чисел, например, октавы.
  • Sage - это GPL. Если вам нравится вся свобода программного обеспечения FSF, то вам больше силы. Вы не можете повторно использовать исходный код в своем собственном приложении, не лицензируя свое приложение в GPL.
  • Sage трудно использовать в качестве библиотеки. С другой стороны, у него очень красивый интерфейс для ноутбука. Если вы хотите сделать то же самое с SymPy, рекомендуется использовать ноутбук IPython и запустить from sympy import init_session; init_session() вверху (заменить init_session на init_printing, если вы просто хотите распечатать и не импортировать все).
  • Sage содержит немного DSL поверх Python. Например, вы можете ввести 1/2 без обертывания целочисленных литералов, и он вернет рациональное. x^2 дает квадрат x, а не Xor(x, 2). Я не уверен, что он автоматически определяет переменные для вас по умолчанию. Это означает, что все, что вы делаете в интерактивном сеансе Sage, может не перевести непосредственно на Python script. С другой стороны, это может быть полезно для интерактивного использования (кстати, SymPy также имеет isympy -I, что делает некоторые подобные вещи).

Возможно, это не то, что вы искали. Вероятно, вам нужны некоторые математические функции. Но, как я уже сказал, Sage включает SymPy, поэтому по определению каждая особенность SymPy будет особенностью Sage. На практике это не обязательно так, потому что Sage не всегда использует SymPy по умолчанию (я не уверен, каков текущий статус этого на самом деле), поэтому вам может потребоваться вызвать SymPy вручную, если вы хотите его использовать изнутри мудреца.