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

NumericalSchubertCalculus -- Numerical Algorithms for Schubert Calculus


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

o4 : List




This documentation describes version 1.11 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/.


  • 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.
  • Symbols