Monday, April 16, 2012

Useful tools for Matrix/Linear Algebra

Five years ago, around this time, I was busily studying for my Linear Algebra final.

Personally, I found both Linear Algebra and Matrix Algebra to be enjoyable, if sometimes difficult, topics. There also seemed to be overlap with my primary vocation (along with Discrete Math), Computer Science, then some of the other math classes I took.

The applications to both of these fields are wide-spread, for example Matrix multiplication is heavily used in the area of 3D-graphics programming (see here and here). Ever played an FPS like Doom or Half-life 2? Many of these games utilize the multiplications of matrices to transform objects in three-dimension objects along an axis, to stretch it, or translate it along an axis. In fact, many GPU's are basically processors designed explicitly for the purpose of working on matricies, and popular programming API's such as OpenGL are designed to make programming with matricies easier.

In Linear Algebra, I was pretty facinated with Vector Spaces, and more generically, the idea of mathematical spaces, elaborate models describing concepts by combining base axioms. Two years later, I found that many of the fundamentals I'd learned in Linear Algebra had surprising applications in Artificial Intelligence (e.g. Neural networks and Feature Space).

I used several tools to help me along with the study of these topics, including two web pages that I wanted to share.

One of the biggest things that was drilled into my head during Matrix Algebra was Gaussian Elimination, or Guass-Jordan elimination. I don't think I'll ever forget the algorithm (although my professor did eventually convinced me that LU-factorization was the preferred method, Gaussian still holds a special place in my heart =P). While learning it using the various Elementary-Row operations, however, I constantly made small arithmatic errors. Ever since I was a child, even if I fully understood a mathematical concept, these errors often annoyed me as I was too busy focusing on the big picture. Anyway, the following tool below allows you to type in a matrix and each row operation one-at-a-time so that you can check your work for errors. It even allows you to fully reduce a reducable matrix so that you can see if your final result is correct:

Matrix Calcuations with Elementary Row-Operations
http://people.hofstra.edu/stefan_waner/RealWorld/tutorialsf1/scriptpivot2.html

The second tool is also very useful. It allows you to input a matrix and perform several calcuations on it such as finding it's inverse, multiplying it with another, or finding the determinant. Again, I mostly used these tools to help me error check my work when I knew my method was correct but had small arithmetic errors.

Matrix operation tool:
http://interactive-mathvision.com/mck/LinearAlgebra/JPaisMatrixMult04/classes/JPaisMatrixMult04.html


For anyone out there studying these topics, either for Computer Science, Matematics, or just pure fun, I hope you find these links useful.

Have a good day!