Разработчик(и) | Группа Macsyma в проекте MAC и добровольцы-участники |
---|---|
Первоначальный выпуск | 1982 (1982) |
Стабильный релиз | 5.47.0 [1] / 1 июня 2023 г. (1 June 2023) |
Репозиторий |
|
Написано в | Общий Лисп |
Операционная система | Кроссплатформенный |
Тип | Математическое программное обеспечение |
Лицензия | GPL |
Веб-сайт | maxima.sourceforge.io |
Maxima ( / ˈ m æ k s ɪ m ə / ) — мощный программный пакет для выполнения вычислений компьютерной алгебры в математике и физических науках. Он написан на Common Lisp и работает на всех платформах POSIX , таких как macOS , Unix , BSD и Linux , а также под Microsoft Windows и Android . Это бесплатное программное обеспечение, выпущенное на условиях GNU General Public License (GPL).
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 специализируется на символьных операциях , но также предлагает числовые возможности [3], такие как целые числа произвольной точности , рациональные числа и числа с плавающей точкой , ограниченные только ограничениями по пространству и времени.
Maxima включает в себя полный язык программирования с синтаксисом, подобным ALGOL, но семантикой, подобной Lisp . Он написан на Common Lisp и может быть доступен программно и расширен, поскольку базовый Lisp может быть вызван из Maxima. Он использует gnuplot для рисования.
Для вычислений, интенсивно использующих числа с плавающей точкой и массивы, в Maxima имеются трансляторы с языка Maxima на другие языки программирования (в частности, Fortran ), которые могут выполняться более эффективно.
Для Maxima доступны различные графические пользовательские интерфейсы (GUI):
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 ;
quad_qags ( sin ( sin ( x )), x , 0 , 2 )[ 1 ];
дифф ( cos ( x ) ^ 2 , x , 3 );
предел (( 1 + sinh ( x )) / exp ( x ), x , inf );
простые числа ( 10 , 20 );
фиба ( 10 );
сумма ( 1 / х ^ 2 , х , 1 , инф ), симпсум ;
Тейлор ( sin ( x ), x , 0 , 9 );
niceindices ( powerseries ( cos ( x ), x , 0 ));
bessel_j ( 0 , 4.5 );
airy_ai ( 1.5 );