Maxima основана на версии Macsyma 1982 года , которая была разработана в Массачусетском технологическом институте при финансировании Министерства энергетики США и других правительственных агентств. Версия Macsyma поддерживалась Биллом Шелтером с 1982 года до его смерти в 2001 году. В 1998 году Шелтер получил разрешение от Министерства энергетики на выпуск своей версии под лицензией GPL. Эта версия, теперь называемая Maxima, поддерживается независимой группой пользователей и разработчиков. Maxima не включает ни одной из многочисленных модификаций и улучшений, внесенных в коммерческую версию Macsyma в 1982–1999 годах. Хотя основная функциональность остается схожей, код, зависящий от этих улучшений, может не работать в Maxima, а ошибки, которые были исправлены в Macsyma, могут по-прежнему присутствовать в Maxima, и наоборот. Maxima приняла участие в Google Summer of Code в 2019 году в рамках Международного координационного центра по нейроинформатике . [2]
Символические расчеты
Как и большинство систем компьютерной алгебры, Maxima поддерживает множество способов реорганизации символических алгебраических выражений, таких как факторизация полиномов , вычисление наибольшего общего делителя полиномов , расширение, разделение на действительную и мнимую части и преобразование тригонометрических функций в показательные и наоборот. Она имеет множество методов упрощения алгебраических выражений, включающих тригонометрические функции, корни и показательные функции. Она может вычислять символические первообразные («неопределенные интегралы»), определенные интегралы и пределы . Она может выводить замкнутые ряды , а также члены рядов Тейлора-Маклорена - Лорана . Она может выполнять матричные манипуляции с символическими записями.
Maxima — это система общего назначения, и специальные вычисления, такие как факторизация больших чисел , манипулирование чрезвычайно большими многочленами и т. д., иногда лучше выполнять в специализированных системах.
Maxima включает в себя полный язык программирования с синтаксисом, подобным ALGOL, но семантикой, подобной Lisp . Он написан на Common Lisp и может быть доступен программно и расширен, поскольку базовый Lisp может быть вызван из Maxima. Он использует gnuplot для рисования.
Для вычислений, интенсивно использующих числа с плавающей точкой и массивы, в Maxima имеются трансляторы с языка Maxima на другие языки программирования (в частности, Fortran ), которые могут выполняться более эффективно.
wxMaxima [4] — это высококачественный графический интерфейс, использующий фреймворк wxWidgets . wxMaxima предоставляет ячеистую структуру, похожую на блокнот Mathematica, как показано на рисунке справа.
Существует ядро для проекта Jupyter , гибкого графического интерфейса в стиле блокнота , написанного на Python . [5]
GMaxima — это интерфейс Maxima, использующий GTK+ . [6]
Cantor , используя Qt , может взаимодействовать с Maxima (вместе с SageMath , R и KAlgebra ) [7]
Программы математических редакторов GNU TeXmacs и LyX могут использоваться для предоставления интерактивного графического интерфейса для Maxima, как и SageMath. Другие варианты включают фронтенд Imaxima, а также режим взаимодействия Emacs и XEmacs , который активируется Imaxima.
Каяли [8]
Climaxima, [9] интерфейс на основе CLIM . [10]
Примеры кода Maxima
Основные операции
Арифметика произвольной точности
bfloat ( sqrt ( 2 )), fpprec = 40 ;
Функция
f ( х ) := х ^ 3 $ж ( 4 );
Расширять
развернуть (( а - б ) ^ 3 );
Фактор
фактор ( x ^ 2 - 1 );
Решение уравнений
решить ( x ^ 2 + a * x + 1 , x );
Решение уравнений численным методом
найти_корень ( cos ( x ) = x , x , 0 , 1 );
bf_find_root ( cos ( x ) = x , x , 0 , 1 ), fpprec = 50 ;
Неопределенный интеграл
интегрировать ( x ^ 2 + cos ( x ), x );
Определенный интеграл
интегрировать ( 1 / ( x ^ 3 + 1 ), x , 0 , 1 ), ratsimp ;