31.3 Main Change Of Variables Command
The main command is NCXFindChangeOfVariables. The general purpose of these commands is to
produce 1-strategies from a given list of relations. That is, we would like to find a motivated unknown
that eliminates all other unknowns from some equation in a nontrivial way. By nontrivial, we mean that
the motivated unknown is not the entire given expression E or aE + b where a and b are
numbers.
31.3.1 NCXFindChangeOfVariables[ aListofPolynomials, anInteger, aString, Options]
-
- Aliases: None
-
- Description: This command needs the monomial order to already be set. It then uses the ambient
order in NCGB. NCXFindChangeOfVariables[ aListOfPolynomials,
anInteger, aString, Options] takes a list of relations aListOfPolynomials, finds the
candidates for motivated unknowns and then tries each one in NCProcess until it finds that
all unknowns except the candidate have been eliminated (and hence would make a good
motivated unknown). If it finds a motivated unknown (which absorbs all other unknowns)
then it returns a list {E, M} where M is the motivated unknown and E is the expression which
motivated it. Otherwise it returns False. It can also be made to return a list of outputs from
the calls to NCProcess.
-
- Arguments: aListofPolynomials is a list of polynomials, aString is a string for the beginning of the tex
files produced by NCProcess, and anInteger is the number of iterations for NCProcess. The options
are:
- IncludeTranspose → False: This option adds the transpose of the candidate to the set
of relations. The default (False) is not to add the transpose relation, while setting it to
True will not add the transpose relation.
- AllRelations → False: This option determines whether the Grobner Basis is computed
using only the relation that motivated the candidate together with the candidate or if
it uses all of the given relations plus the candidate. The default (False) only uses the
polynomial that motivated the unknown plus all relations of length 2 (these we will
consider “important” relations and include relations defining inverses and symmetry)
while setting it to True uses all of the relations.
- CountV ariables → True: This option determines whether or not
NCXPossibleChangeOfVariables[ ] eliminates the candidates which do not contail all
of the unknowns present in the polynomial that motivated it (and thus the candidate
cannot reduce that polynomial to a polynomial in one variable). The default (True)
does eliminate these possibilities while setting it to False does not do this elimination.
- MultiplyByMonomials → False: This option determines whether or not
NCXMultiplyByMonomials is called, so that if no candidate works, it tries to multiply
though by monomials on the left and/or right. The default (False) does no multiplying,
while setting it to True tries multiplying through by monomials.
- SortByTermLength → True: This option decides whether or not to sort the results
of NCXPossibleChangeOfVariables by the length (number of terms) in the candidate
(shortest to longest). The default (True) does sort it so that it tries the shortest
candidates first (since in practice the longer ones don’t tend to work). Setting it to False
does not do the sorting step.
- NCProcessOptions → {SBByCat → False,RR → False}: This allows one to set
additional options when NCProcess is run. The default is {SBByCat → False,RR →
False}. A typical setting might be NCProcessOptions- > {SBByCat →
False,NCCV → True}. list of the outputs from NCProcess.
- StopIfFound → True: This option determines whether the program stops if a
motivated unknown is found. The default (True) stops if a motivated unknown is found
and returns only this pair. Setting this option to False runs all possibilities in NCProcess
and returns all of the results (whether a motivated unknown is found or not).
-
- Comments / Limitations: This procedure uses the ambient monomial order in NCGB.
Furthermore, the monomial order is changed by this program. The variables motUnknown and
Tp[motUnknown] are inserted in a graded piece between the current knowns and unknowns
if these variables are not already present. This function runs NCProcess many times and
therefore produces a number of tex files (actually, it produces exactly Length[NCXMultiplyBy
Monomials[NCXPossibleChangeOfVariables[aListOfPolynomials, Options]]] tex
files). These files are named nameno# where name is the string given as an argument, no is
added and # is a number. This function uses NCProcess,
NCXPossibleChangeOfVariables, NCXMultiplyByMonomials.
The following command may also be useful since it gives a list of expressions, each of which is a possible
new variable. It runs all steps above except the last two, that is, multiplying through by monomials and
running the Grobner basis.
31.3.2 NCXPossibleChangeOfVariables[ aListofPolynomials, Options]
-
- Aliases: None
-
- Description: NCXPossibleChangeOfVariables[ aListOfPolynomials, Options] takes a list of
relations and looks for a good motivated unknown. It returns a list of pairs {E, M} where
E is the expression which motivated the candidate M and M is the candidate for a motivated
unknown.
-
- Arguments: aListofPolynomials is a list of relations and options can be any of the following:
- CountV ariables → True: The CountVariables option counts to see if the candidate for
motivated unknown has all of the variables in the expression which motivated it, and
removes the entry from the list if it does not (and thus could not reduce the expression
to one unknown). The default (True) is to eliminate these entries, while False will skip
this step entirely.
- RemoveNumbers → False: The RemoveNumbers option decides whether or not to
remove purely numerical terms from the candidates. If True, then these terms are
removed. For instance, the candidate xy + 1 becomes xy. If set to False, the candidate
is not be changed.
- SortByTermLength → True: The SortByTermLength option decides whether or not
to sort the results by the length (number of terms) of the candidate (with the shortest
first). The default (True) does the sorting, while setting the option to False does not
sort at all.
-
- Comments / Limitations: The candidate for motivated unknown is found by first doing an
NCCollectOnVariables[ ], which collects around knowns, on each relation and then looking
at what is found on either side of the knowns. These are the candidates for motivated
unknowns. The next step is to eliminate candidates which do not contain all of the
unknowns present in the expression which motivated them. This option can be turned off by
CountV ariables → False. The next step is to eliminate purely numerical terms from the
candidates (so that you won’t get an expression like xy + 1 for a candidate, but xy instead).
The final step is to sort the pairs by length (number of terms) of the motivated unknown,
the shortest being first. This is done because long candidates usually do not eliminate all of
the variables. This option can be turned off by SortByTermLength → False.