## Chapter 32Representing Noncommutative Expressions with Commutative Ones.

#### 32.0.3 NCXRepresent[aListOfExpressions, aListOfVariables, aListOfDims, aListOfFunctions,aListOfExtraRules]

Aliases: none
Description: NCXRepresent[aListOfExpressions,aListOfVariables, aListOfDims, aListOfFunctions,aListOfExraRules] replaces each occurrence of the variables in the list aListOfVariables with a matrix in commuting symbols of size specified in aListOfDims in the set of relations in the first arguement. The argument aListOfDims should be a list of pairs {n1,n2} specifying the number of rows and columns of the corresponding variable. The fourth arguement is best described by an example. If one has the variable x and also the indeterminate F[x], then often one wants the F[x] to be replaced by a symbolic matrix as well as x. If F appears in the fourth list, every occurrence of indeterminates F[x],F[y] etc. will be replaced by matrices of the same size as x,y etc. with entries that look like Fx11,,Fy11,. This clearly is not appropriate for functions such as Aj and Tp denoting the adjoint and transpose of a symbol. But for other functions such as Inv this is quite necessary. The output of NCXRepresent is a matrix for each relation in aListOfExpressions.

The last (fifth) arguement is a sort of catch-all for unusual rules specific to the problem. The following are some favorites.
• z IdentityMatrix[n]. If some variable z is to be replaced by an identity matrix of some size then one puts this rule in aListOfExtraRules An important point: if constants appear in the list of relations, one MUST replace them with auxiliary variables and then use this last arguement to replace them with the appropriate multiple of the identity matrix.
• x PrimeMat[{n1,n2},k]. This is an auxillary function built in to NCXRepresent that will replace a variables by a matrix consisting of distinct prime entries. To use this, one just puts the rule above in the list aListOfExtraRules. This will replace x with an n1 × n2 matrix with prime entries beginning at the kth prime.
• Any other replacement rules may be listed in aListOfExtraRules, such as tp Transpose or other hand-made rules replacing a variable by some specific matrix.
Arguments: aListOfVariables, aListOfDims, aListOfExpressions, aListOfFunctions, aListOfExtraRules
Comments / Limitations: If aListOfExpressions includes constant terms, one must first replace them with a variable and then use the optional list of rules to replace them with identity matrices of appropriate size. Mathematica does bad things to expressions that contain both a matrix and a constant, namely it adds the constant to each entry of the matrix. Any of the lists other than aListOfExpressions may be left as the empty set. A warning: if a variable appears only as the arguement in a function in aListOfFunctions one must still put the variable in the second arguement, and its size in the third. The reason is, its size must be specified somewhere for the function to work. aListOfVariables should include only those variables that are to be replaced by purely symbolic matrices, and should not appear in the left-hand side of a rule in aListOfOptionalRules.

Examples

 In[99]:= NCXRepresent[  {A**B}, { A, B}, { {2,1}, {1,1}  },{},{} ]     Out[99]:= {{{A11 B11},{A21 B11}}}          In[100]:= NCXRepresent[  {A**tp[B]}, { A, B}, { {2,2}, {1,2} }, {tp},{} ] =     Out[100]:= {{{A11 B11+A12 B12},{A21 B11+A22 B12}}}