Isogeometric Analysis Library

Today, I make my Isogeometric Analysis library available to you.

Written in Matlab, it reflects the time and effort that I spent in graduate school. It also shows unfortunate age, as B-splines and NURBS are fully supported, but not T-splines and other basis that are state-of-the-art. One day, I hope to return.

You can find my Isogeometric Analysis library here:
Download from GitHub

If you like regular, vanilla Finite Element Analysis:
Download from GitHub

Hearing Perturbation Theory

In numerical linear algebra, we create ways for a computer to solve a linear system of equations A\vec{x} = \vec{b}. In doing so, we analyze how efficiently and accurately we can find the solution \vec{x}.

Perturbation theory concerns how much error we incur in the solution \vec{x} when we perturb (spoil) the data A and \vec{b}. A classic statement tells us that the amount of error depends on the condition number of the matrix A.

I will define and prove the statement, and help you understand it by “hearing” it.

Continue reading “Hearing Perturbation Theory”

15 Keywords

As an officer of Central Austin Toastmasters, I use Meetup to advertise my club and welcome new guests. Meetup allows me to set 15 keywords that best describe my club. It also lets you (a Meetup member) set keywords that describe your interests. Meetup uses your keywords to recommend groups that would interest you.

My goal is to attract more Meetup members so that more will visit my Toastmasters club. Hence, I should select keywords that are not only relevant to my club, but will also likely coincide with your interests.

Which 15 keywords should I use to attract more members?

I wrote a simple program to help me decide on these keywords.

Continue reading “15 Keywords”

Monte Carlo Simulations: How Big Is Your Heart?

Our final problem has no known exact solution. We want to find the area of the shape formed by,

(x^{2} + y^{2} - r^{2})^{3} - a\,x^{2}y^{3} \leq 0

The inequality has two parameters r and a. They are quantities of length, so they take on a nonnegative value. Let’s try out some values and see what these parameters do. I have colored the resulting shapes in red. (Note, the scales are different.)

heart_diagram

When r = a (move along the diagonal, starting from bottom-left), we get the shape of a nice heart. When we increase r while holding a fixed, the heart morphs into a circle. On the other hand, when we increase a while holding r fixed, the heart turns into two petals. Well, I see bunny ears.

Clearly, the shape (i.e. area) of our heart depends on the radius r and the ear length a. Can you guess the formula for the area A = A(r, a)?

Continue reading “Monte Carlo Simulations: How Big Is Your Heart?”

Visualize Linear Algebra

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:

  1. Matrix norm
  2. Singular value decomposition
  3. 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

vla_matrix_norm

vla_singular_values

vla_eigenvalues