Rozmaitości szałwii

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 .