NCAlgebra is a package which runs under Mathematica. It is an algebra program designed to facilitate manipulation and reduction of noncommutative algebraic expressions. Specifically, it allows computer calculation in an ALGEBRA WITH TRANSPOSES OR ADJOINTS. Such computations are common in many areas but our background is operator theory and engineering systems so we are aiming at applications in these areas rather than at the theory of symbolic computation.

A noncommutative Gröbner basis package is also available which is C++ linked to NCAlgebra. At the moment we trust it under the Solaris, Linux, Mac OSX. Someday we hope to support Microsoft Windows.

We have added files which allow one to use some of the functionality of the Mathematica package Control System Professional with noncommuting indeterminates.

Also included is a package for doing differentiation with complex variables. This package manipulates expressions in terms of the variable z and ˉz rather than by using real and imaginary parts.

We are including a collection of files for doing system engineering. These are focused specifically on computations which occur in doing H control research. Our intent is not to produce a symbolic introduction to system theory but to focus on special areas of our own research with the hope that others will write more general systems packages. The interested user should read SYSDOC.dvi which is included and see the appendix on running SYSTEMS.

We see this package as a competitor to the yellow pad. Once you get used to it this might be considerably more effective for some types of hand calculations. Like Mathematica the emphasis is on interaction with the program and flexibility (see the section on Editing in the Helpful Tricks chapter (Chapter 3)).

NCAlgebra uses a slight modification of the Mathematica operation NonCommutativeMultiply (denoted by **). Many of the NCAlgebra functions are noncommutative versions of Mathematica functions used for simplification of commutative algebraic expressions. For example, the functions NCExpand and NCCollect extend the utility of the usual Mathematica functions Expand and Collect to algebraic expressions including noncommutative multiplications. NCExpand expands complicated (multi-parentheses) expressions and thus facilitates additive cancellation of terms. NCCollect does the opposite– it collects like terms. In addition, a number of more specialized functions are designed to assist in solving particular types of algebraic problems. These currently include capabilities for block matrix manipulation, multi-dimensional differentiation, and specialized applications in systems theory.

In Chapter 1 we present a few simple examples. These actually contain more than you need to know to have a good time with NCAlgebra. Once you have read about two pages you are already WELL INTO NCAlgebra.