In a recent conversation, I realized that I had forgotten to post some of numerical linear algebra (NLA) projects that I had created in graduate school. These projects, along with a few others that I have already published in this blog, can help us appreciate the theories and applications of NLA.
In numerical linear algebra, we create ways for a computer to solve a linear system of equations . In doing so, we analyze how efficiently and accurately we can find the solution .
Perturbation theory concerns how much error we incur in the solution when we perturb (spoil) the data and . A classic statement tells us that the amount of error depends on the condition number of the matrix .
I will define and prove the statement, and help you understand it by “hearing” it.
Since last week, I’ve worked on a side project for Robert, my former advisor and good friend. He told me that Matlab has a function called eigshow, which creates a GUI to help us “see” singular value decomposition and eigenvalue decomposition. He wanted a GUI that would similarly help us see and understand induced matrix norm.
The GUI that eigshow creates is cool but rudimentary. What really bothers me is how poorly the code was maintained, with no documentation. I could follow it after some time, but I decided it would be better if I write my GUI from scratch.
So far, my GUI helps you visualize three things:
- Matrix norm
- Singular value decomposition
- Eigenvalue decomposition
The GUI feels great if you have touchscreen and move the vectors with your finger instead of a mouse. I’m hoping to add more features (my code are very modular!) before I get to present linear algebra here. We’ll definitely go over some of the GUI aspects then. Until then, please enjoy these screenshots that I made.
You can find the code in its entirety here:
Download from GitHub