Represent a Schubert variety in the Grassmannian $Gr(k,n)$ by a partition $l$ (a weakly decreasing list of nonegative integers less than $n-k$) and a flag $F$ (given as an $n{\times} n$ matrix). A Schubert problem is a list of Schubert varieties $(l^1, F^1), \ldots, (l^m, F^m)$ such that $|l^1|+|l^2| + \cdots + |l^m| = k(n-k)$, where $|l^i|$ is the sum of the entries of $l_i$.
The function solves the Schubert problem by the Pieri homotopy algorithm. This algorithm uses homotopy continuation to track solutions of a simpler problem to a general problem according to the specializations of the geometric Pieri rule.
This algorithm is described in the paper: Huber, Sottile, and Sturmfels, "Numerical Schubert Calculus".
i1 : k = 3; |
i2 : n = 6; |
i3 : SchPblm = { ({2,1}, random(CC^6,CC^6)), ({2,1}, random(CC^6,CC^6)), ({1}, random(CC^6,CC^6)), ({1}, random(CC^6,CC^6)), ({1}, random(CC^6,CC^6)) }; |
i4 : stdio << "Schubert problem {2,1}^2 {1}^3 in Gr(3,6) with respect to random flags"<<endl; Schubert problem {2,1}^2 {1}^3 in Gr(3,6) with respect to random flags |
i5 : solveSimpleSchubert(SchPblm, k,n) o5 = {| .426402+.387024ii -.767149+.88679ii -.299645+.514617ii |, | | .350714+.0538475ii -1.21057+.628777ii .141417+.670654ii | | | -.00144609+.0615438ii -1.36249+.957226ii -.135443+.402697ii | | | .236976-.167254ii -.849462+.793055ii -.0797972+.62109ii | | | .251567+.0963873ii -.584053+.120158ii -.0811626+.616193ii | | | .16406+.140612ii .147134+1.02782ii .700057+.537171ii | | ------------------------------------------------------------------------ .0495704+.786748ii 1.06866+.233544ii -.050555-.348219ii |, | -.206829-.120362ii 1.77239+.496154ii -.495726-.478418ii | | -.649096-.0452157ii 1.69103+.597783ii -.0259685-.564318ii | | -.288447+.394938ii .928957+.172057ii -.307244-.389747ii | | -.458603+.164307ii 1.24868+.022694ii -.109204-.543584ii | | -.159612+.837151ii .145965-.131173ii -.311686-.109522ii | | ------------------------------------------------------------------------ .786345+.0390369ii 2.04868+.698543ii -.111359-.0502477ii |, | .850935+.235992ii 2.99936+1.61752ii -.249658-.107736ii | | .583656+.186089ii 3.03503+1.65758ii -.036834-.234947ii | | .739055-.656875ii 1.87368+.627178ii -.203199-.0546734ii | | .900963+.0645478ii 2.00882+.70537ii -.0684508-.152856ii | | .488143-.479836ii .601493-.588086ii .0472758+.081476ii | | ------------------------------------------------------------------------ .29604+.607542ii -.426858-.110817ii -.120347+.0333611ii |, | .0792163+.0318581ii -.264013-.679973ii -.172278-.0120918ii | | -.307005+.0794883ii -.488333-.457673ii -.0312588-.143993ii | | .0557081+.142424ii -.514797-.16939ii -.165842+.0348618ii | | -.0644923+.200208ii -.00925758-.689311ii -.0470698-.0463538ii | | .0883581+.490683ii -.344437+.638705ii .151061+.124719ii | | ------------------------------------------------------------------------ .416853+.43068ii -2.06356+1.47596ii -.555553+.0429811ii |, | .304534+.0650379ii -3.3745+.909754ii -.611663+.448933ii | | -.0510879+.0812111ii -3.56377+1.40773ii -.494457-.0547096ii | | .223864-.106046ii -2.10608+1.35519ii -.600561+.286352ii | | .204877+.130855ii -1.91259+.304428ii -.579545+.13444ii | | .170645+.202745ii .219633+1.87171ii -.00171043+.686346ii | | ------------------------------------------------------------------------ .948004+.00971475ii .374969+.499562ii -.059199+.251334ii |} .954212+.376895ii .636613+.574365ii .116788+.149588ii | .720595+.326751ii .530465+.763105ii .073638+.0777737ii | .96532-.698926ii .256842+.425251ii .0170751+.221298ii | 1.08396+.174263ii .551008+.0768382ii .112884+.198469ii | .689695-.590038ii .157157+.310587ii .453721+.129014ii | o5 : List |
Need to input partitions together with flags. In the future, there will be an option for generating random flags and just input the first two partitions. Also, it will be able to take brackets.
The object solveSimpleSchubert is a method function.