SageManifolds (zgodnie ze stylem SageMath) to rozszerzenie w pełni zintegrowane z SageMath , które może być używane jako pakiet do geometrii różniczkowej i rachunku tensorowego . Oficjalna strona projektu to sagemanifolds.obspm.fr . Można go używać w CoCalc .
SageManifolds zajmuje się rozmaitościami różniczkowalnymi o dowolnym wymiarze. Podstawowymi obiektami są pola tensorowe , a nie składowe tensorowe w danym układzie wektorowym lub wykresie współrzędnych. Innymi słowy, na rozmaitości można wprowadzić różne wykresy i ramki, a dane pole tensorowe może mieć reprezentacje w każdym z nich.
Ważną klasą omawianych rozmaitości są rozmaitości pseudoriemannowskie , wśród których rozmaitości riemannowskie i rozmaitości lorentzowskie , mające zastosowanie w ogólnej teorii względności . W szczególności SageManifolds implementuje obliczenia tensora krzywizny Riemanna i powiązanych obiektów ( tensor Ricciego , tensor Weyla ). SageManifolds radzi sobie również z ogólnymi połączeniami afinicznymi , niekoniecznie Levi-Civita .
Funkcjonalności
Wersja |
Data |
Opis (z dziennika zmian ) |
0,1 |
7 lipca 2013 r |
Pierwszy wydany |
0,2 |
12 września 2013 r |
Zdefiniowano sześć klas i „wiele doctestów zmieniono, aby były zgodne z Sage 5.11. Nowe metody w każdej klasie. |
0,3 |
24 listopada 2013 r |
Repozytorium programistyczne zostało przeniesione z svn do git . Nowe przykładowe karty pracy. Więcej klas i metod (niektóre odziedziczone po Sage). |
0,4 |
10 lutego 2014 r |
Nowe klasy, składowe i metody. |
0,5 |
12 lipca 2014 r |
Jest to główne wydanie, obejmujące wprowadzenie struktur algebraicznych do opisu pól tensorowych, a mianowicie modułów nad algebrą pól skalarnych, wśród których znajdują się wolne moduły skończonego rzędu. Osiąga się to poprzez schemat Sage Parent / Element i model przymusu. |
0,6 |
28 września 2014 r |
- Wyjście graficzne wykresów (metoda
Chart.plot() ) i punktów (metoda Point.plot() ); Oto kilka przykładów.
- Wprowadzenie notacji indeksowej do oznaczania skróceń tensorowych i symetryzacji tensorowych (nowa klasa
TensorWithIndices ); zobacz te linki: 1 , 2 .
- Argument metod
symmetrize() i antisymmetrize() w klasach tensorowych jest teraz bezpośrednio sekwencją pozycji indeksu (a nie pojedynczą listą/krotką zawierającą taką sekwencję).
- Nazwa metody
self_contract() klas tensorowych została zmieniona na trace() .
- Zoptymalizowano kod skurczów tensorowych; ponadto dozwolone są teraz wielokrotne skurcze tensorowe.
- Dokumentacja (podręczniki referencyjne 4 i 5 ) została udoskonalona.
|
0,7 |
12 marca 2015 r |
Dla użytkownika końcowego są nowe funkcje
- wprowadzenie krzywych w rozmaitościach (z pewnymi możliwościami kreślenia)
- ulepszenia mapowań różnicowych między rozmaitościami, w tym skład mapowania i różnica mapowania
- wprowadzenie homomorfizmów między wolnymi modułami
|
0,8 |
16 maja 2015 r |
Zmiany dla użytkownika końcowego:
- Wykres pól wektorowych: nowa metoda
VectorField.plot()
- Możliwość zrównoleglenia ciężkich obliczeń: zrównoleglenie jest zaimplementowane dla podstawowego rachunku tensorowego (arytmetyka, kontrakcja) oraz rachunku różniczkowego dotyczącego związków afinicznych (współczynniki koneksji, działanie na polu tensorowym, tensor krzywizny Riemanna)
- Ładne wyświetlanie pochodnych cząstkowych
- Standardowe funkcje matematyczne exp, cos, sin itd. na polach skalarnych
- Wyświetlanie składowych tensora jako listy, po jednej w wierszu: nowe metody
TensorField.display_comp() i FreeModuleTensor.display_comp()
- Ładne wyświetlanie współczynników połączenia: nowa metoda
AffConnection.display()
- Ładne wyświetlanie symboli Christoffela: nowa metoda
Metric.christoffel_symbols_display()
- Ładne wyświetlanie map przejść między wykresami: nowa metoda
CoordChange.display()
|
0,9 |
10 grudnia 2015 r |
Jest to główne wydanie, wynikające z ważnej refaktoryzacji kodu, w celu pełnej integracji SageManifolds z SageMath (por. metaticket #18528 na ścieżce programisty SageMath). Główne zmiany to
- Własności topologiczne zostały oddzielone od różniczkowych, poprzez zaimplementowanie rozmaitości topologicznych (nowa klasa
TopologicalManifold ) i uczynienie klasy dla rozmaitości różniczkowych ( DifferentiableManifold ) dziedziczeniem po TopologicalManifold .
- Nie przyjmuje się już, że pole podstawowe, na którym definiowane są rozmaitości, jest polem rzeczywistym: może to być dowolne pole topologiczne (niedyskretne, aby zdefiniować różniczkowalność rozmaitości różniczkowych). Pozwala to na łatwe definiowanie złożonych rozmaitości, poprzez ustawienie pola na C .
- Klasa
ManifoldOpenSubset została usunięta: otwarte podzbiory rozmaitości są teraz instancjami TopologicalManifold lub DifferentiableManifold (ponieważ otwarty podzbiór rozmaitości top/diff jest sam w sobie rozmaitością top/diff)
- Funkcje zdefiniowane na łacie współrzędnych nie są już koniecznie symbolicznymi funkcjami współrzędnych: teraz odnoszą się do ogólnej klasy
CoordFunction , funkcje symboliczne są opisywane przez jej podklasę ( CoordFunctionSymb ). To otwiera drogę do „liczbowych” rozmaitości, takich jak czasoprzestrzeń generowana przez numeryczne kody względności.
- Lepsza równoległość, zarządzana przez nową klasę singleton
Parallelism i funkcję globalną use_multiproc .
|
0.9.1 |
19 września 2016 r |
*Pełna zmiana jest teraz wyświetlana na (tej) stronie Wikipedii* To wydanie propaguje dalsze zmiany kodu związane z integracją SageManifolds z SageMath (por. metaticket#18528); dodaje też kilka nowych funkcjonalności.
Nowe funkcjonalności:
- Obliczenie tensora Schoutena, tensora konforemnego Cottona i tensora konforemnego Cottona-Yorka związanego z daną metryką pseudo-riemanna
- Dodanie struktury algebroidu Liego do modułów pól wektorowych (klasy
VectorFieldModule i VectorFieldFreeModule ): nowa metoda VectorField.bracket
- Równoległość wykresów pól wektorowych
- Zrównoleglanie arytmetyki w pełni antysymetrycznych składowych tensorowych
- Poprawione renderowanie zmiennych w pochodnych cząstkowych, przy użyciu LaTeX-owego wyświetlania symboli (klasa
ExpressionNice )
- Dodaj operator porównania dla map przejścia (klasa
CoordChange )
- Dodaj funkcjonalności listy dla baz (metody
__len__ i __iter__ w klasach FreeModuleBasis i FreeModuleCoBasis )
Zmiany składniowe:
- Metoda
CoordChange.set_inverse : zastąp słowo kluczowe check przez verbose , ustawieniem domyślnym jest teraz verbose=False
- Wprowadzenie opcji
Manifold.options do sterowania wyświetlaniem wyrażeń matematycznych zamiast globalnych funkcji nice_derivatives i omit_function_args , które zostały pominięte
- Funkcja
set_axes_labels (do ustawiania etykiet na wykresach 3D) nie jest już importowana podczas uruchamiania; w razie potrzeby należy wpisać z sage.manifolds.utilities import set_axes_labels
- Funkcja
xder (zewnętrzna pochodna) nie jest już importowana w czasie uruchamiania; w razie potrzeby należy wpisać z sage.manifolds.utilities import xder
- Klasa
DiffForm : nazwa metody external_der została zmieniona na external_derivative
- Klasy
DiffScalarField , TensorField i TensorFieldParal : nazwa metody lie_der została zmieniona na lie_derivative , z lie_der zachowanym jako alias tej ostatniej
Więcej zmian wewnętrznych:
- Struktura rozmaitości jest teraz opisana za pomocą określonych klas pojedynczych:
TopologicalStructure , RealTopologicalStructure , DifferentialStructure i RealDifferentialStructure
- klasy
TopologicalManifoldSubset została zmieniona na ManifoldSubset
- klasy
TopologicalManifoldPoint została zmieniona na ManifoldPoint
- Podzbiory rozmaitości nie są już elementami nadrzędnymi elewacji
- Class
ManifoldSubset : nowe metody podnoszą i wycofują
- Wprowadzenie algebry przemiennej wszystkich symbolicznych funkcji współrzędnych na danym wykresie: nowa klasa
CoordFunctionSymbRing i klasa CoordFunction dziedziczy teraz po AlgebraElement
- Klasa
FiniteRankFreeModule : zmieniono kategorię z Modules(ring) na Modules(ring).FiniteDimensional()
- Kilka zmian przygotowujących migrację do Pythona 3 (np.
print zastąpiony przez print() )
|
1.0 |
11 stycznia 2017 r |
Oprócz pełnej integracji w SageMath 7.5, w stosunku do wersji 0.9.1 wprowadzono tylko niewielkie zmiany: Zmiany składniowe:
- Metoda
wykresu klas RealChart i VectorField : słowo kluczowe argument nb_values przemianowano na number_values
- metody
structure_coef klasy VectorFrame została zmieniona na structure_coeff
- Klasa
OpenInterval : argument subinterval_of o zmienionej nazwie ambient w konstruktorze
- Klasa
RealLine : nazwa LateX zmieniona z \RR na \Bold{R}
Zmiany wewnętrzne:
- Systematyczne stosowanie składni kompatybilnej z Python3 (w celu przygotowania migracji SageMath do Python3); w szczególności:
- Wszystkie wystąpienia
iteritems() zmienione na items()
- Wszystkie wystąpienia
itervalues() zostały zmienione na values()
- Klasy
ScalarField i TensorField : metoda __nonzero__ przemianowana na __bool__
- Klasa
TensorField : metoda __div__ przemianowana na __truediv__
- Klasy
TensorFieldModule , VectorFieldModule i DiffFormModule : dodaj buforowaną metodę zero
- Klasy
DiffForm i DiffFormParal : metoda pochodna zewnętrzna jest buforowana (poprzez dekorator @cached_method )
- Klasa
VectorFrame : metoda structure_coeff jest buforowana (poprzez dekorator @cached_method )
Inne zmiany:
- Ulepszenia w dokumentacji; w szczególności do podręcznika dodano grafikę 3D w celu zilustrowania zastosowania niektórych metod
kreślenia
- Wartości ustawione przez użytkownika dla niektórych argumentów słów kluczowych metod
plot stają się nowymi wartościami domyślnymi, aż do dalszych wyraźnych zmian (takie zachowanie zapewnia dekorator @options ):
-
TangentVector.plot : skala argumentu
-
VectorField.plot : argumenty max_range , skala i kolor
-
DifferentiableCurve.plot : argumenty grubość , punkty_kreślenia , maksymalny_zakres i współczynnik_aspektu
|
1.0.1 |
25 marca 2017 r |
|
1.0.2 |
21 lipca 2017 r |
|
1.1 |
7 grudnia 2017 r |
|
Więcej dokumentacji znajduje się na stronie doc.sagemath.org/html/en/reference/manifolds/ .
Darmowe i otwarte oprogramowanie
Tak jak SageMath, SageManifolds jest darmowym i otwartym oprogramowaniem opartym na języku programowania Python . Jest udostępniany na licencji GNU General Public License . Aby pobrać i zainstalować SageManifolds, zobacz tutaj . Jest to dokładniej GPL v2+ (co oznacza, że użytkownik może zdecydować się na użycie licencji wyższej niż GPL w wersji 2).
Rozwój
Wiele źródeł znajduje się na biletach na stronie trac.sagemath.org .
Istnieją repozytoria GitHub pod adresem github.com/sagemanifolds/SageManifolds .
Inne łącza znajdują się na stronie sagemanifolds.obspm.fr/contact.html .