Axiom | это... Что такое Axiom? (original) (raw)

Axiom

Тип система компьютерной алгебры
Разработчик независимая группа людей
Операционная система кроссплатформенное программное обеспечение
Лицензия модифицированная лицензия BSD
Сайт домашняя страница Axiom

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

Содержание

История

Разработка системы была начата в 1971 году группой исследователей IBM под руководством Ричарда Дженкса (англ. Richard Dimick Jenks)[1]. Изначально система называлась Scratchpad. Проект развивался медленно и в основном рассматривался как исследовательская платформа для разработки новых идей в вычислительной математике.

В 90-х система была продана компании Numerical Algorithms Group (NAG), получила название Axiom и стала коммерческим продуктом. Но по ряду причин система не получила коммерческого успеха и была отозвана с рынка в октябре 2001.

NAG решила сделать Axiom свободным программным обеспечением и открыла исходные коды под модифицированной лицензией BSD.

В 2007 у Axiom появились два форка с открытым исходным кодом: OpenAxiom и FriCAS.

Разработка системы продолжается, новые версии выходят каждые два месяца[2].

Философия проекта

Технология литературного программирования Кнута используется по всему исходному коду. Проект Axiom планирует использовать проверенные технологии (такие как Coq и ACL2) для доказательства корректности алгоритмов.

Особенности

В Axiom все объекты имеют тип. Примерами типов являются математические структуры (такие как кольца, поля, многочлены), а также структуры данных из вычислительной техники (например, списки, деревья, хеш-таблицы).

Функция может получить тип в качестве аргумента, и её возвращаемое значение также может быть типом. Например, Fraction — функция, получающая IntegralDomain в качестве аргумента, и возвращающая поле отношений своего аргумента. В качестве другого примера кольцо 4\times 4 матриц действительных чисел может быть построено как SquareMatrix(4, Fraction Integer). Конечно, если работать в этом домене, 1 интерпретируется как единичная матрица и A^-1 позволяет получить обратную матрицу A, если она существует.

Некоторые операции могут иметь одинаковые имена, и тогда типы аргументов и результата используются для определения того, какая операция применяется, подобно тому, как в ООП.

Язык расширений Axiom называется SPAD. Вся математическая база Axiom написана на этом языке. Интерпретатор принимает почти такой же язык.

SPAD в дальнейшем разрабатывался под именем A# и позже Aldor. Последний, кроме того, может быть использован как альтернативный язык расширений. Однако, следует учесть, что он распространяется под другой лицензией.

Примеры

3j-символы

Вычисление 3j-символов и коэффициентов Клебша-Гордана.

j3Sum (j1, j2, j3, m1, m2, m3) == maxz := reduce (min, [j1+j2-j3, j1-m1, j2+m2]) minz := max(0, max ( -(j3-j2+m1), -(j3-j1-m2) )) minz > maxz => 0 maxz < 0 => 0 sum ( (-1)^(z+j1-j2-m3) / _ ( factorial(z) * factorial(j1+j2-j3-z) * factorial(j1-m1-z) * _ factorial(j2+m2-z) * factorial(j3-j2+m1+z) * factorial(j3-j1-m2+z) ), _ z=minz..maxz)

j3 (j1, j2, j3, m1, m2, m3) == m1 + m2 + m3 ~= 0 => 0 abs(j1 - j2) > j3 => 0 j1 + j2 < j3 => 0 abs(m1) > j1 => 0 abs(m2) > j2 => 0 abs(m3) > j3 => 0 not integer? (j1+j2+j3) => 0 sqrt ( _ factorial(j1+j2-j3) * factorial(j1-j2+j3) * factorial(-j1+j2+j3) / _ factorial(j1+j2+j3+1) * _ factorial(j1+m1) * factorial(j1-m1) * _ factorial(j2+m2) * factorial(j2-m2) * _ factorial(j3+m3) * factorial(j3-m3) ) * j3Sum (j1, j2, j3, m1, m2, m3)

clebschGordan (j1, j2, j, m1, m2, m) == (-1)^(j1-j2+m) * sqrt(2*j+1) * j3(j1, j2, j, m1, m2, -m)

Общая теория относительности

«Аксиома» выводит символы Кристоффеля и тензоры Римана и Риччи в решении Шварцшильда.

x := vector ['t, 'r, '%theta, '%phi]; dim := #x;

%nu := operator '%nu; %lambda := operator '%lambda; lg := matrix [ [exp(%nu r), 0, 0, 0], _ [ 0, - exp(%lambda r), 0, 0], _ [ 0, 0, -r^2, 0], _ [ 0, 0, 0, -r^2*sin(%theta)^2] _ ];

ug := inverse lg;

grSetup(metric, names) == free x free dim free lg free ug x := names dim := #x

Галерея

Документация

Axiom — литературная программа. Исходный код доступен в наборе томов на сайте: axiom-developer.org. Эти тома содержат актуальный исходный код системы.

На данный момент доступны следующие документы:

Видео

Важной целью проекта Axiom является предоставление документации. В ноябре 2008 года проект анонсировал первое из серии обучающих видео, которые также доступны на сайте: axiom-developer.org. Первое видео рассказывает о источниках информации о Axiom.[3]

Примечания

  1. Домашняя страница Axiom
  2. Патчи
  3. «Axiom Computer Algebra System Information Sources», jgg899, YouTube, 30 ноября 2008.

Ссылки

Просмотр этого шаблона Математическое программное обеспечение
Open source Символьные вычисления: AxiomGAPMaxima • ; Численные вычисления: FitykFreeMatGNU OctavegretlLabPlotQtiPlotRSageSciDAVisScilab
Proprietary Символьные вычисления: MathcadMapleMathematicaSMath Studio ; Численные вычисления: GAUSSLabVIEWMagicPlotMATLABOriginSigmaPlot • Speakeasy • VisSim
Просмотр этого шаблона Системы компьютерной алгебры
Retail ClassPad Manager • LiveMath • Magma • MapleMathcadMathematica • MuPAD • TI InterActive!
Свободные Axiom • CoCoA • GAP • GiNaC • Macaulay2 • Mathomatic • Maxima • OpenAxiom • PARI/GP • Reduce • Sage • SINGULAR • SymPy • Xcas • Yacas
Бесплатные/shareware Fermat • KANT
Discontinued CAMAL • Derive • Macsyma • muMATH
КатегорияСравнение