NCAlgebra

NCALGEBRA

Version 4.0

(Compatible with Mathematica version 5 to 7)

J. William Helton, Maurício C. de Oliveira and Mark Stankus

Math Dept., UCSD

Robert L. Miller

General Atomic Corp.

La Jolla, California 92093

Copyright by Helton and Miller on June 1991, Feb 1994

Copyright by Helton, Miller and Stankus on March 1996

Copyright by Helton, Miller and Stankus on September 2001

Copyright by Helton, Miller, Stankus and de Oliveira on January 2010

All Rights Reserved.

If you would like to try the NCAlgebra package or want updates go to the NCAlgebra web site

http://math.ucsd.edu/~ncalg

or contact ncalg@ucsd.edu or MathSource@wri.com.

The basic NCAlgebra program was written by the authors and David Hurst, Daniel Lamm, Orlando Merino, Robert Obarr, Henry Pfister, Stan Yoshinobu, Phillipe Bergman, Dell Kronewitter, and Eric Rowell. Various additions include contributions by Dave Glickstein, Juan Camino, Jeff Ovall, Tony Mendes, and Tony Shaheen. The Mathematica C++ hybrid was developed with Kurt Schneider, Victor Shih and Mike Moore. Control demos are coauthored with Mike Walker. Simplification commands are based on theory developed by Bill Helton, John Wavrik and Mark Stankus. The beginnings of the program come from eran@slac. This program was written with support from the AFOSR, the NSF, the Lab for Mathematics and Statistics at UCSD, the UCSD Faculty Mentor Program and the US Department of Education.

0.1 ReleaseNotes NCAlgebra

1 A Short Tutorial on NCAlgebra

1.1 Installing NCAlgebra

1.2 Running NCAlgebra

1.3 A Short Tutorial

1.4 Where to Find More Examples

1.5 Pretty Output

2 A More Sophisticated Demo

3 Helpful Tricks

3.1 Expanding

3.2 Simplifying Expressions

3.3 Edit - For those without Notebooks

3.4 Conventions

4 NC Commands

4.1 Manipulating an expression

4.2 Simplification

4.3 Vector Differentiation

4.4 Block Matrix Manipulation

4.5 Complex Analysis

4.6 Setting symbols to commute or not commute

4.7 Operations on elements in an algebra

4.8 Convexity of a NC function

4.9 NCGuts

4.10 Setting Properties of an element in an algebra

4.11 Setting Properties of functions on an algebra

4.12 Manipulating an Expression — less useful commands

4.13 Utilities

4.14 Deprecated Commands

5 Pretty Output and Tex Commands

5.1 Pretty Output

5.2 TEX Typesetting with NCTEXForm

5.3 Simple TEX Commands with NCTEX

5.4 Deprecated Commands

6 Aliases

ReleaseNotes NCAlgebra 4.0 January 2010

Code has been cleaned up and improved. Basic functionality is supported without changes.

ReleaseNotes NCAlgebra 3.7 Sept. 2002

Convexity We changed some defaults and fixed some bugs in NCConvexityRegion and NCMatrixOfQuadratic. Now it runs quickly on fairly big problems.

Path Setting Paths were set to make NCAlgebra more path independent.

CSP Our support for Control System Professional was updated to accomodate the second (2002) version of CSP.

ReleaseNotes NCAlgebra 3.5 Sept. 2001

Basic Changes You no longer have to set every variable to be noncommutative. We have a command NCGuts which has an option called NCSetNC. When set to True, all letters are automatically noncommutative unless SetCommutative makes them commutative.

A further option of NCGuts allows one to use “**” to multiply matrices with noncommutative entries – the more cumbersome MatMult command is no longer needed. While this option seems dangerous to Bill, it makes many computations prettier and easier to type. If you don’t trust the answer, then don’t use the option.

Commands For Matricies With Noncommuting Entries We now have an LDU decomposition for matricies with noncommuting entries. Also, there is a command for computing the inverse of such matrices (however this only works under strong assumptions).

NCMatrixOfQuadratic gives a vector matrix factorization of a symmetric quadratic noncommutative function.

A Second Derivative Command NCHessian computes the Hessian of a function with noncommuting variables and coefficents.

Computing The Region Where A Noncommutative Function is Convex NCConvexityRegion is a command used to determine the region of formal noncommutative inequalities where a given noncommutative function is convex.

Basic Changes

- NCGuts: NCGuts holds set of options geared for simplifying transposing, finding the inverse,
and multiplying matrices conaining noncommuting variables.
NCStrongProduct1 - > False is the first option of NCGuts. When True, ** serves to multiply matrices with noncommutative entries as well as maintaining its original function. In addition, tp[ ] and tpMat are the same. The default setting is True.

NCStrongProduct2 - > False is the second option of NCGuts. When set to True, if M is a matrix with noncommutative entries, inv[M] returns a formula expression for the inverse of M. NCStrongProduct2 forces NCStrongProduct1.

NCSetNC - > False is the last option of NCGuts. When set to True, all letters are automatically noncommutative unless SetCommutative makes them commutative. This replaces the need for repeated calls to SetNonCommutative.

Commands For Matricies With Noncommuting Entries

- NCLDUDecomposition: Given a square matrix M with noncommutative entries, this
command finds the LDU decomposition of M. It returns a list of four elements, namely
L,D,U, and P such that PXP
^{T }= LDU. The first element is the lower triangular matrix L, the second element is the diagonal matrix D, the third element is the upper triangular matrix U, and the fourth is the permutation matrix P (the identity is returned if no permutation is needed). As an option, it may also return a list of the permutations used at each step of the LDU factorization as a fifth element. - NCAllPermutationLDU: NCAllPermutationLDU returns the LDU decomposition of a matrix after all possible column permutations are applied. The code cycles through all possible permutations and calls NCLDUDecomposition for each one. As an option, the permutations used for each LDU decomposition can also be returned.
- NCMatrixOfQuadratic: NCMatrixOfQuadratic gives a vector matrix factorization of a symmetric quadratic noncommutative function. A three element list is the output. The first element is the left border vector, the second element is a symmetric coefficent matrix, and the third is the right border vector. The border vectors contain the variables in the given quadratic function and their transposes.
- NCIndependenceCheck: NCIndependenceCheck verifies whether or not a given set of polynomials are independent or not. It analyzes each list of polynomials separately. There are three possible types of outputs for each list. Two of them correspond to NCIndependenceCheck successfully determining whether or not the list of polynomials is independent. The third type of output corresponds to an unsuccessful attempt at determining dependence or independence.
- NCBorderVectorGather: NCBorderVectorGather can be used to gather the polynomial coefficents preceeding the elements given in a list of variables whenever they occur.
- NCPermutationMatrix: NCPermutationMatrix returns the permutation matrix associated with the list of the first n integers. It gives the identity matrix with its columns re-ordered.
- NCMatrixToPermutation: NCMatrixToPermutation returns the permutation associated with the permutation matrix, aMatrix. It is the inverse of NCPermutationMatrix.
- NCInverse: NCInverse gives a symbolic inverse of a matrix with noncommutative entries.

A Second Derivative Command

- NCHessian: NCHessian computes the Hessian of a function with noncommuting variables and coefficents. This is a second directional derivative which can be thought of as the second order term in the noncommutative Taylor expansion. Output will be a symmetric quadratic function with respect to the directions of differentiation.

Computing The Region Where A Noncommutative Function is Convex

- NCConvexityRegion: This command is used to determine the region of formal noncommutative inequalities where a given noncommutative function is convex. NCConvexityRegion preforms three main operations. Given a noncommutative function F, the Hessian of F is computed with NCHessian. Then, using NCMatrixOfQuadratic, the Hessian is factored into vector matrix vector form. Finally, NCAllPermutationLDU finds the LDU decomposition of the symmetric coefficent matrix. The diagonal elements in the diagonal matrix in the LDU decomposition is returned.

ReleaseNotes NCAlgebra 3.0

NCAlgebra 3.0 has several added functions.

- LDU decomposition for block matices, to include a block Cholesky decompsition.
- Formulas for inverses of block matrices.
- A command which differentiates functions of the form
- Support for the Mathematica toolbox Control System Professional. It gives CSP the ability to handle non-commuting objects.
- A function which represents elements of an algebra as n×n matrices with commuting symbolic entries, or with inegers.
- Online Help - While we have not set up help browsers at this time in the Mma style, one can get searchable online help by viewing NCBIGDOCUMENT.html with Netscape, etc. When you are in an NCAlgebra session just keep a web browser open with NCBIGDOCUMENT.html loaded in. The powerfulsearch features of these browsers allow you to look up things in the document.

An X in commands, e.g. NCXetc., always means that this command is experimental and we reserve the right to change it.