next | previous | forward | backward | up | top | index | toc | Macaulay2 website
NumericalSchubertCalculus :: NumericalSchubertCalculus

NumericalSchubertCalculus -- Numerical Algorithms for Schubert Calculus

Description

Tools for solving Schubert problems on Grassmannians using numerical homotopy continuation.

The package NumericalSchubertCalculus implements the Littlewood-Richardson and Pieri homotopy algorithms.

General functions include:

Functions implementing homotopies specific to Schubert calculus:

Service functions:

Using PHCpack:

An alternative implementation using PHCpack (download from here) includes the following functions: Note that LRcheater is similar to changeFlags
For example, the Schubert problem (2,1)^3 in Gr(3,6) with respect to random flags has 2 solutions
i1 : k = 3; n = 6;
i3 : SchPblm = {
     	 ({2,1}, random(CC^6,CC^6)),
     	 ({2,1}, random(CC^6,CC^6)),
     	 ({2,1}, random(CC^6,CC^6))
     	 };
i4 : solveSchubertProblem(SchPblm, k,n)

o4 = {| -.973546-.443329ii  -.193482-.957391ii -.460977-.267623ii  |, |
      | .153343-.291038ii   .339479-1.30008ii  -.577303-.171329ii  |  |
      | .326239-.770744ii   .120186-1.46205ii  -.0769985-.323186ii |  |
      | -.451322-.514227ii  -.144874-.987789ii -.589493-.209825ii  |  |
      | -.0525679-.692383ii .364061-.704785ii  -.325325-.185011ii  |  |
      | -.942864-.594173ii  -.826353-.203654ii -.236865+.691374ii  |  |
     ------------------------------------------------------------------------
     -5.47422+1.18674ii -.912706-1.64344ii -.590144+.126046ii |}
     -2.80395-.714508ii -.793467-2.20255ii -.016225+.340982ii |
     -2.29873-2.34724ii -.905617-2.59114ii .0951404+.355536ii |
     -3.36313+2.14592ii -.703202-1.58202ii -.375349+.205204ii |
     -3.91243-.845457ii -.528411-.900447ii -.187047+.545512ii |
     -4.19554+1.93172ii -1.11528-.480829ii .19859+1.24706ii   |

o4 : List

References:

Authors

Version

This documentation describes version 1.16 of NumericalSchubertCalculus.

Source code

The source code from which this documentation is derived is in the file NumericalSchubertCalculus.m2. The auxiliary files accompanying it are in the directory NumericalSchubertCalculus/.

Exports

  • Functions and commands
    • bracket2partition -- dictionary between different notations for Schubert conditions.
    • changeFlags -- Parameter homotopies to move solutions of a Schubert problem from one instance to another
    • checkIncidenceSolution -- Check if a solution satisfies the incidence conditions of a Schubert problem
    • findGaloisElement (missing documentation)
    • isFullSymmetric (missing documentation)
    • isGaloisFullSymmetric (missing documentation)
    • LRcheater -- A cheater's homotopy to a real Schubert triple intersection problem
    • LRrule -- uses the geometric Littlewood-Richardson rule to resolve a Schubert intersection problem.
    • LRtriple -- runs the Littlewood-Richardson homotopy to solve a generic Schubert problem.
    • parseTriplet -- Parses a flag, system, and solutions (the output from LRtriple) into Macaulay2 objects.
    • partition2bracket -- dictionary between different notations for Schubert conditions.
    • PieriHomotopies -- runs the Pieri homotopies to solve a general hypersurface problem
    • PieriRootCount -- the number of solutions to a generic Pieri problem
    • printStatistics (missing documentation)
    • randomSchubertProblemInstance -- Returns a random instance of a given Schubert problem by computing random matrices representing flags
    • setVerboseLevel -- Set different levels of information printed on screen
    • solutionsToAffineCoords -- writes solutions in global coords to affine coordinates.
    • solveSchubertProblem -- uses Littlewood-Richardson homotopy to solve Schubert problems on Grassmannians
    • solveSimpleSchubert -- uses Pieri homotopy algorithm to solve simple Schubert problems on Grassmannians
    • wrapTriplet -- Wraps a flag, system, and solutions into one string for phc -e.
  • Methods
    • "bracket2partition(List,ZZ)" -- see bracket2partition -- dictionary between different notations for Schubert conditions.
    • "changeFlags(List,Sequence)" -- see changeFlags -- Parameter homotopies to move solutions of a Schubert problem from one instance to another
    • changeFlags(Matrix,List,Sequence) -- Recursive call of change flags
    • "checkIncidenceSolution(Matrix,List)" -- see checkIncidenceSolution -- Check if a solution satisfies the incidence conditions of a Schubert problem
    • "LRcheater(ZZ,Matrix,String)" -- see LRcheater -- A cheater's homotopy to a real Schubert triple intersection problem
    • "LRrule(ZZ,Matrix)" -- see LRrule -- uses the geometric Littlewood-Richardson rule to resolve a Schubert intersection problem.
    • "LRtriple(ZZ,Matrix)" -- see LRtriple -- runs the Littlewood-Richardson homotopy to solve a generic Schubert problem.
    • "parseTriplet(String,String,String)" -- see parseTriplet -- Parses a flag, system, and solutions (the output from LRtriple) into Macaulay2 objects.
    • "partition2bracket(List,ZZ,ZZ)" -- see partition2bracket -- dictionary between different notations for Schubert conditions.
    • "PieriHomotopies(ZZ,ZZ)" -- see PieriHomotopies -- runs the Pieri homotopies to solve a general hypersurface problem
    • "PieriRootCount(ZZ,ZZ,ZZ)" -- see PieriRootCount -- the number of solutions to a generic Pieri problem
    • "randomSchubertProblemInstance(List,ZZ,ZZ)" -- see randomSchubertProblemInstance -- Returns a random instance of a given Schubert problem by computing random matrices representing flags
    • "solutionsToAffineCoords(List)" -- see solutionsToAffineCoords -- writes solutions in global coords to affine coordinates.
    • "solveSchubertProblem(List,ZZ,ZZ)" -- see solveSchubertProblem -- uses Littlewood-Richardson homotopy to solve Schubert problems on Grassmannians
    • "solveSimpleSchubert(List,ZZ,ZZ)" -- see solveSimpleSchubert -- uses Pieri homotopy algorithm to solve simple Schubert problems on Grassmannians
    • "wrapTriplet(String,String,String)" -- see wrapTriplet -- Wraps a flag, system, and solutions into one string for phc -e.
  • Symbols

For the programmer

The object NumericalSchubertCalculus is a package.