Sage Manifolds

SageManifolds (efter styling av SageMath) är en förlängning helt integrerad i SageMath , för att användas som ett paket för differentialgeometri och tensorkalkyl . Den officiella sidan för projektet är sagemanifolds.obspm.fr . Den kan användas på CoCalc .

SageManifolds behandlar differentierbara grenrör av godtycklig dimension. Grundobjekten är tensorfält och inte tensorkomponenter i en given vektorram eller koordinatdiagram. Med andra ord kan olika diagram och ramar introduceras på grenröret och ett givet tensorfält kan ha representationer i var och en av dem.

En viktig klass av behandlade grenrör är den av pseudo-riemannska grenrör , bland vilka riemannska grenrör och Lorentziska grenrör , med tillämpningar till allmän relativitet . I synnerhet implementerar SageManifolds beräkningen av Riemanns krökningstensor och associerade objekt ( Ricci tensor , Weyl tensor) . SageManifolds kan också hantera generiska affina anslutningar , inte nödvändigtvis Levi-Civita sådana.

Funktioner

Version Datum Beskrivning (från ändringslogg )
0,1 7 juli 2013 Först släppt
0,2 12 september 2013 Definierade sex klasser, och "många doktester ändrades för att följa Sage 5.11. Nya metoder i varje klass.
0,3 24 november 2013 Utvecklingsförrådet flyttade från svn till git . Nya exempel arbetsblad. Fler klasser och metoder (några ärvt från Sage).
0,4 10 februari 2014 Nya klasser, medlemmar och metoder.
0,5 12 juli 2014 Detta är en stor utgåva, som involverar införandet av algebraiska strukturer för att beskriva tensorfält, nämligen moduler över algebra av skalära fält, bland vilka fria moduler av ändlig rangordning. Detta uppnås via Sage Parent / Element -schema och tvångsmodell.
0,6 28 september 2014
  • Grafisk utdata för diagram (metod Chart.plot() ) och punkter (metod Point.plot() ); Här är några exempel.
  • Införande av indexnotation för att beteckna tensorkontraktioner och tensorsymmetriseringar (ny klass TensorWithIndices ); se dessa länkar: 1 , 2 .
  • Argumentet för metoder symmetrize() och antisymmetrize() i tensorklasser är nu direkt en sekvens av indexpositioner (och inte längre en enda lista/tupel som kapslar in en sådan sekvens).
  • Metod self_contract() för tensorklasser omdöpt till trace() .
  • Koden för tensorkontraktioner har optimerats; dessutom är flera tensorkontraktioner nu tillåtna.
  • Dokumentationen (referensmanualerna 4 och 5 ) har förbättrats.
0,7 12 mars 2015 För slutanvändaren är nya funktioner
  • införandet av kurvor i grenrör (med vissa plottningsmöjligheter)
  • förbättringar i differentiella mappningar mellan grenrör, inklusive mappningssammansättning och mappningsdifferential
  • införandet av homomorfismer mellan fria moduler
0,8 16 maj 2015 Ändringar för slutanvändaren:
  • Plott av vektorfält: ny metod VectorField.plot()
  • Möjlighet att parallellisera tunga beräkningar: parallellisering är implementerad för grundläggande tensorkalkyl (aritmetik, kontraktioner) och för kalkyl avseende affina kopplingar (kopplingskoefficienter, verkan på ett tensorfält, Riemann krökningstensor)
  • Trevlig visning av partiella derivator
  • Standard matematiska funktioner exp, cos, sin, etc. på skalära fält
  • Visning av tensorkomponenter som en lista, en per rad: nya metoder TensorField.display_comp() och FreeModuleTensor.display_comp()
  • Bra visning av anslutningskoefficienter: ny metod AffConnection.display()
  • Trevlig visning av Christoffel-symboler: ny metod Metric.christoffel_symbols_display()
  • Trevlig visning av kartövergångskartor: ny metod CoordChange.display()
0,9 10 december 2015 Detta är en stor utgåva, som är ett resultat av en viktig omstrukturering av koden, med tanke på en fullständig integration av SageManifolds i SageMath (jfr metabiljetten #18528 på SageMaths utvecklarspår). De stora förändringarna är
  • Topologiska egenskaper har separerats från differentiella, genom att implementera topologiska grenrör (ny klass TopologicalManifold ) och få klassen för differentiable grenrör ( DifferentiableManifold ) att ärva från TopologicalManifold .
  • Basfältet över vilket grenrör definieras antas inte längre vara det verkliga fältet: det kan vara vilket topologiskt fält som helst (icke-diskret för att definiera differentiabilitet för diff. grenrör). Detta gör det möjligt att definiera lätt komplexa grenrör genom att ställa in fältet till C .
  • Klassen ManifoldOpenSubset har undertryckts: öppna delmängder av grenrör är nu instanser av TopologicalManifold eller DifferentiableManifold (eftersom en öppen delmängd av en topp/diff grenrör är en topp/diff grenrör i sig själv)
  • Funktioner som definieras på en koordinatlapp är inte längre nödvändigtvis symboliska funktioner för koordinaterna: de hänför sig nu till den generiska klassen CoordFunction , symboliska funktioner beskrivs av en underklass av den ( CoordFunctionSymb ). Detta öppnar vägen för "numeriska" grenrör, som rymdtider som genereras av numeriska relativitetskoder.
  • Bättre parallellisering, styrd av den nya singletonklassen Parallelism och den globala funktionen use_multiproc .
0.9.1 19 september 2016 *Den fullständiga ändringen är nu listad för Wikipedia (denna) sida*

Denna utgåva sprider ytterligare kodändringar relaterade till integreringen av SageManifolds i SageMath (jfr metaticket#18528); det lägger också till några nya funktioner.

Nya funktioner:

  • Beräkning av Schouten-tensor, Cotton-konform-tensor och Cotton-York-konform-tensor associerade med en given pseudo-Riemannisk metrisk
  • Lägg till struktur av Lie algebroid till moduler av vektorfält (klasserna VectorFieldModule och VectorFieldFreeModule ): ny metod VectorField.bracket
  • Parallellisering av vektorfältdiagram
  • Parallellisering av aritmetik av helt antisymmetriska tensorkomponenter
  • Förbättrad rendering av variabler i partiella derivator, med hjälp av LaTeX-visning av symboler (klass ExpressionNice )
  • Lägg till jämförelseoperator för övergångskartor (klass CoordChange )
  • Lägg till listfunktioner för baser (metoderna __len__ och __iter__ i klasserna FreeModuleBasis och FreeModuleCoBasis )

Syntaktiska förändringar:

  • Metod CoordChange.set_inverse : ersätt nyckelordskontrollen med verbose , standard är nu verbose=False
  • Introduktion av Manifold.options för att styra visningen av matematiska uttryck istället för de globala funktionerna nice_derivatives och utelämna_funktion_args , som har undertryckts
  • Funktionen set_axes_labels (för att sätta etiketter på 3D-plots) importeras inte längre vid starttiden; vid behov måste man skriva från sage.manifolds.utilities import set_axes_labels
  • Funktionen xder (exteriörderivata) importeras inte längre vid starttiden; vid behov måste man skriva från sage.manifolds.utilities import xder
  • Klass DiffForm : metod exterior_der döpt om exterior_derivative
  • Klasserna DiffScalarField , TensorField och TensorFieldParal : metoden lie_der omdöpt till lie_derivative , med lie_der bevarad som ett alias för den senare

Fler interna ändringar:

  • Manifoldstruktur beskrivs nu via specifika singleton-klasser: TopologicalStructure , RealTopologicalStructure , DifferentialStructure och RealDifferentialStructure
  • Klass TopologicalManifoldSubset bytt namn till ManifoldSubset
  • Klass TopologicalManifoldPoint bytt namn till ManifoldPoint
  • Flera undergrupper är inte längre fasadföräldrar
  • Klass ManifoldSubset : nya metoder lyft och dra in
  • Introduktion av den kommutativa algebra för alla symboliska koordinatfunktioner på ett givet diagram: ny klass CoordFunctionSymbRing och class CoordFunction ärver nu från AlgebraElement
  • Klass FiniteRankFreeModule : kategori ändrad från Modules(ring) till Modules(ring).FiniteDimensional()
  • Vissa ändringar för att förbereda migreringen till Python 3 (t.ex. print ersatt av print() )
1.0 11 januari 2017 Förutom den fullständiga integrationen i SageMath 7.5, finns det endast mindre ändringar med avseende på v0.9.1:

Syntaktiska förändringar:

  • Metodplot för klasser RealChart och VectorField : nyckelordsargument nb_values ​​bytt namn till number_values
  • Metod structure_coef för klass VectorFrame omdöpt till structure_coeff
  • Klass OpenInterval : argument subinterval_of omdöpt omgivning i konstruktorn
  • Klass RealLine : LateX-namnet har ändrats från \RR till \Fet{R}

Interna ändringar:

  • Systematisk användning av Python3-kompatibel syntax (för att förbereda migreringen av SageMath till Python3); särskilt:
    • Alla förekomster av iteritems() ändrade till items()
    • Alla förekomster av itervalues() ändrade till värden()
    • Klasserna ScalarField och TensorField : metod __nonzero__ bytt namn till __bool__
    • Klass TensorField : metod __div__ bytt namn till __truediv__
  • Klasserna TensorFieldModule , VectorFieldModule och DiffFormModule : lägg till cachad metod noll
  • Klasserna DiffForm och DiffFormParal : metoden exterior_derivative cachelagras (via dekoratören @cached_method )
  • Klass VectorFrame : metoden structure_coeff cachelagras (via dekoratören @cached_method )

Andra ändringar:

  • Förbättringar i dokumentationen; i synnerhet har 3D-grafik lagts till i referensmanualen för att illustrera användningen av vissa plotmetoder
  • Värden som användaren ställer in på vissa nyckelordsargument för plotmetoder blir de nya standardvärdena tills ytterligare explicit förändring (detta beteende tillhandahålls av dekoratören @options ):
    • TangentVector.plot : argumentskala
    • VectorField.plot : argument max_range , skala och färg
    • DifferentiableCurve.plot : argumentens tjocklek , plot_points , max_range och aspect_ratio
1.0.1 25 mars 2017
1.0.2 21 juli 2017
1.1 7 december 2017

Mer dokumentation finns på doc.sagemath.org/html/en/reference/manifolds/ .

Gratis och öppen programvara

Som SageMath är, är SageManifolds en gratis programvara med öppen källkod baserad på programmeringsspråket Python . Den släpps under GNU General Public License . För att ladda ner och installera SageManifolds, se här . Det är mer specifikt GPL v2+ (vilket betyder att en användare kan välja att använda en högre licens än GPL version 2.)

Utveckling

Mycket av källan finns på biljetter på trac.sagemath.org .

Det finns GitHub-förråd på github.com/sagemanifolds/SageManifolds .

Andra länkar finns på sagemanifolds.obspm.fr/contact.html .