SageManifolds (следуя стилю SageMath) — это расширение, полностью интегрированное в SageMath , которое можно использовать в качестве пакета для дифференциальной геометрии и тензорного исчисления . Официальная страница проекта — sagemanifolds.obspm.fr. Его можно использовать на CoCalc .
SageManifolds имеет дело с дифференцируемыми многообразиями произвольной размерности. Базовыми объектами являются тензорные поля , а не компоненты тензора в заданной векторной системе координат или координатной карте. Другими словами, на многообразии могут быть введены различные карты и системы координат, и заданное тензорное поле может иметь представления в каждой из них.
Важным классом обрабатываемых многообразий являются псевдоримановы многообразия , среди которых римановы многообразия и лоренцевы многообразия , с приложениями к общей теории относительности . В частности, SageManifolds реализует вычисление тензора кривизны Римана и связанных с ним объектов ( тензор Риччи , тензор Вейля ). SageManifolds также может иметь дело с общими аффинными связями , не обязательно Леви-Чивиты .
Функциональность
Версия | Дата | Описание (из журнала изменений) |
---|
0.1 | 7 июля 2013 г. | Впервые выпущен |
0.2 | 12 сентября 2013 г. | Определено шесть классов, и «многие doctest-ы изменены для соответствия Sage 5.11. Новые методы в каждом классе. |
0.3 | 24 ноября 2013 г. | Репозиторий разработки перемещен из svn в git . Новые примеры рабочих листов. Больше классов и методов (некоторые унаследованы от Sage). |
0.4 | 10 февраля 2014 г. | Новые классы, члены и методы. |
0,5 | 12 июля 2014 г. | Это крупный релиз, включающий введение алгебраических структур для описания тензорных полей, а именно модулей над алгеброй скалярных полей, среди которых свободные модули конечного ранга. Это достигается с помощью Sage Parent / Element схемы и модели приведения. |
0,6 | 28 сентября 2014 г. | - Графический вывод для диаграмм (метод
Chart.plot() ) и точек (метод Point.plot() ); вот несколько примеров. - Введение индексной нотации для обозначения тензорных контракций и тензорных симметризаций (новый класс
TensorWithIndices ); см. эти ссылки: 1, 2. - Аргумент методов
symmetrize() и antisymmetrize() в тензорных классах теперь представляет собой непосредственно последовательность позиций индекса (а не один список/кортеж, инкапсулирующий такую последовательность). - Метод
self_contract() тензорных классов переименован trace() . - Оптимизирован код для тензорных сокращений; более того, теперь разрешены множественные тензорные сокращения.
- Улучшена документация (справочники 4 и 5).
|
0,7 | 12 марта 2015 г. | Для конечного пользователя новые функции- введение кривых в многообразия (с некоторыми возможностями построения графиков)
- улучшения в дифференциальных отображениях между многообразиями, включая композицию отображений и дифференциальное отображение
- введение гомоморфизмов между свободными модулями
|
0.8 | 16 мая 2015 г. | Изменения для конечного пользователя:- График векторных полей: новый метод
VectorField.plot() - Возможность распараллеливания сложных вычислений: распараллеливание реализовано для базового тензорного исчисления (арифметика, сокращения) и для исчисления, касающегося аффинных связей (коэффициенты связности, действие на тензорное поле, тензор кривизны Римана)
- Хорошее отображение частных производных
- Стандартные математические функции exp, cos, sin и т. д. для скалярных полей
- Отображение компонентов тензора в виде списка, по одному в строке: новые методы
TensorField.display_comp() иFreeModuleTensor.display_comp() - Хорошее отображение коэффициентов связи: новый метод
AffConnection.display() - Хорошее отображение символов Кристоффеля: новый метод
Metric.christoffel_symbols_display() - Хорошее отображение карт переходов диаграмм: новый метод
CoordChange.display()
|
0.9 | 10 декабря 2015 г. | Это крупный релиз, являющийся результатом важного рефакторинга кода в связи с полной интеграцией SageManifolds в SageMath (см. метатикет #18528 в SageMath developer trac). Основные изменения:- Топологические свойства были отделены от дифференциальных путем внедрения топологических многообразий (новый класс
TopologicalManifold ) и создания класса для дифференцируемых многообразий ( DifferentiableManifold ), наследуемого от TopologicalManifold . - Базовое поле, над которым определяются многообразия, больше не предполагается действительным полем: это может быть любое топологическое поле (недискретное для определения дифференцируемости для дифф. многообразий). Это позволяет легко определять комплексные многообразия, устанавливая поле в C .
- Класс
ManifoldOpenSubset был удален: открытые подмножества многообразий теперь являются экземплярами TopologicalManifold или DifferentiableManifold (поскольку открытое подмножество верхнего/дифференциального многообразия само по себе является верхним/дифференциальным многообразием) - Функции, определенные на координатном патче, больше не обязательно являются символическими функциями координат: теперь они относятся к общему классу
CoordFunction , символические функции описываются его подклассом ( CoordFunctionSymb ). Это открывает путь для «численных» многообразий, таких как пространства-времена, генерируемые числовыми кодами относительности. - Улучшенная распараллеливание, регулируемая новым классом Singleton
Parallelism и глобальной функцией use_multiproc .
|
0.9.1 | 19 сентября 2016 г. | *Полное изменение теперь указано на странице Википедии (эта)* В этом выпуске распространяются дальнейшие изменения кода, связанные с интеграцией SageManifolds в SageMath (см. metaticket#18528); также добавлено несколько новых функций. Новые функции: - Вычисление тензора Схоутена, конформного тензора Коттона и конформного тензора Коттона-Йорка, связанных с заданной псевдоримановой метрикой
- Добавить структуру алгеброида Ли к модулям векторных полей (классы
VectorFieldModule и VectorFieldFreeModule ): новый методVectorField.bracket - Распараллеливание векторных полей
- Распараллеливание арифметики полностью антисимметричных тензорных компонент
- Улучшено отображение переменных в частных производных с использованием отображения символов LaTeX (класс
ExpressionNice ) - Добавить оператор сравнения для карт переходов (класс
CoordChange ) - Добавить функциональность списка для баз (методы
__len__ и __iter__ в классах FreeModuleBasis и FreeModuleCoBasis )
Синтаксические изменения: - Метод
CoordChange.set_inverse : замените ключевое слово check на verbose , значение по умолчанию — nowverbose=False - Введение
Manifold.options для управления отображением математических выражений вместо глобальных функций nice_derivatives и omit_function_args , которые были подавлены - Функция
set_axes_labels (для установки меток на 3D-графиках) больше не импортируется при запуске; при необходимости нужно ввестиfrom sage.manifolds.utilities import set_axes_labels - Функция
xder (внешняя производная) больше не импортируется во время запуска; при необходимости нужно ввестиfrom sage.manifolds.utilities import xder - Класс
DiffForm : метод exterior_der переименованexterior_derivative - Классы
DiffScalarField , TensorField и TensorFieldParal : метод lie_der переименован lie_derivative , с lie_der сохранением псевдонима последнего
Дополнительные внутренние изменения: - Структура многообразия теперь описывается с помощью определенных классов-синглтонов:
TopologicalStructure , RealTopologicalStructure , DifferentialStructure иRealDifferentialStructure - Класс
TopologicalManifoldSubset переименованManifoldSubset - Класс
TopologicalManifoldPoint переименованManifoldPoint - Подмножества многообразий больше не являются фасадными родителями
- Класс
ManifoldSubset : новые методы lift иretract - Введение коммутативной алгебры всех символических координатных функций на заданной карте: новый класс
CoordFunctionSymbRing и класс CoordFunction теперь наследуется отAlgebraElement - Класс
FiniteRankFreeModule : категория изменена с Modules(ring) наModules(ring).FiniteDimensional() - Некоторые изменения для подготовки к переходу на Python 3 (например,
print заменено на print() )
|
1.0 | 11 января 2017 г. | Помимо полной интеграции в SageMath 7.5, есть лишь незначительные изменения по сравнению с v0.9.1: Синтаксические изменения: - Метод
plot классов RealChart и VectorField : ключевой аргумент nb_values переименованnumber_values - Метод
structure_coef класса VectorFrame переименованstructure_coeff - Класс
OpenInterval : аргумент subinterval_of переименован ambient в конструкторе - Класс
RealLine : Имя LateX изменено с \RR на\Bold{R}
Внутренние изменения: - Систематическое использование синтаксиса, совместимого с Python3 (для подготовки миграции SageMath на Python3), в частности:
- Все вхождения
iteritems() изменены наitems() - Все вхождения
itervalues() изменены наvalues() - Классы
ScalarField и TensorField : метод __nonzero__ переименован__bool__ - Класс
TensorField : метод __div__ переименован__truediv__
- Классы
TensorFieldModule и VectorFieldModule : DiffFormModule добавить кэшированный методzero - Классы
DiffForm и DiffFormParal : метод exterior_derivative кэшируется (через декоратор @cached_method ) - Класс
VectorFrame : метод structure_coeff кэшируется (через декоратор @cached_method )
Другие изменения: - Улучшения в документации; в частности, в справочное руководство добавлена 3D-графика для иллюстрации использования некоторых
plot методов. - Значения, установленные пользователем для некоторых ключевых аргументов
plot методов, становятся новыми значениями по умолчанию до дальнейшего явного изменения (такое поведение обеспечивается декоратором @options ):TangentVector.plot : аргументscale VectorField.plot : аргументы max_range иscale color DifferentiableCurve.plot : аргументы thickness , plot_points , max_range иaspect_ratio
|
1.0.1 | 25 марта 2017 г. | |
1.0.2 | 21 июля 2017 г. | |
1.1 | 7 декабря 2017 г. | |
Более подробную документацию можно найти на doc.sagemath.org/html/en/reference/manifolds/.
Бесплатное и открытое программное обеспечение
Как и SageMath, SageManifolds — это бесплатное программное обеспечение с открытым исходным кодом , основанное на языке программирования Python . Оно выпущено под лицензией GNU General Public License . Чтобы загрузить и установить SageManifolds, см. здесь. Это, в частности, GPL v2+ (что означает, что пользователь может выбрать использование лицензии выше, чем GPL версии 2).
Разработка
Большая часть исходного кода находится в тикетах на сайте trac.sagemath.org.
Репозитории GitHub находятся по адресу github.com/sagemanifolds/SageManifolds.
Другие ссылки доступны по адресу sagemanifolds.obspm.fr/contact.html.