I have a need to solve multinomial equations efficiently. It is part of an algorithm for factoring a sum of equal grade exterior products in n-space into a single product. The algorithm runs into efficiency problems when I get to 6 or 7 dimensional spaces and higher grades of exterior products. The Mathematica Solve routine is the time limiting part.
To illustrate a typical lower dimensional case, which is not an efficiency problem, I use the typical code:
canonicalEquations = {-a[1, 2] a[2, 1] + a[1, 1] a[2, 2] ==
4, -a[1, 3] a[2, 1] + a[1, 1] a[2, 3] ==
1, -a[1, 4] a[2, 1] + a[1, 1] a[2, 4] ==
3, -a[1, 3] a[2, 2] + a[1, 2] a[2, 3] ==
6, -a[1, 4] a[2, 2] + a[1, 2] a[2, 4] ==
38, -a[1, 4] a[2, 3] + a[1, 3] a[2, 4] == 5}
solutions = Solve[canonicalEquations, MaxExtraConditions -> All]
I use the conditions to generate values for the free variables using a FindInstance statement.
This has 8 variables, 6 equations and 2 solutions. But a case in 6 dimensions might have 20 variables, 5 equations and 15 solutions.
I only need one solution so I'm wondering if there is a method to save time by generating only a single solution. Perhaps I could do that by specifying a specific set of variables to solve for but I don't know how to do that in advance.
I understand that the GroebnerBasis routine is used in Solve under the hood with multinomial equations but I'm only partly familiar with its use.