- Membership
- Publications
- Meetings
- Competitions
- Community
- Programs
- Students
- High School Teachers
- Faculty and Departments
- Underrepresented Groups
- MAA Awards
- MAA Grants

- News
- About MAA

The **WebSVD** tool, which is similar to those previously discussed, was originally written in MATLAB as part of the ATLAST project (Leon, Herman, & Faulkenberry, 1996), but the MATLAB platform has been frustrating from cross-platform and availability points of view. The web-based tool development presented here has breathed new life into that effort.

Specifically, **WebSVD** contains components similar to those of **Transformer2D**, but, given its purpose, it has different elements. The yellow box still controls the column vectors defining the matrix of transformation. In particular, the **green** vector is the first column, and the **blue** vector is the second column. By grabbing the ends of these two vectors, you can construct any 2x2 matrix. Below the yellow box is a box that controls the vector **x**, restricted to the unit circle. As you move **x** (the **red** vector) about the unit circle in the domain of the transformation, you can observe the image *T*(**x**) (the **magenta** vector) change in the large area depicting the codomain of the transformation. In addition, the vector **x** can be moved automatically about the unit circle. In order to further explore, a variety of buttons are provided in the codomain portion containing *T*(**x**). For instance, you can turn on or turn off a tracing feature that marks out the path of the transformed vector *T*(**x**) or show/hide the orbit of *T*(**x**). Also, you can superimpose **x** onto the codomain, as well as create a separate vector **p** in the domain and its transformation *T*(**p**). Each of these elements helps support exploration into the singular value decomposition of a matrix of transformation.

Open WebSVD in new window

Note: The "?" at the bottom right-hand corner of the workspace is a link to Key Curriculum Press and its About *JavaSketchpad* web page.

Consider the transformation *T*(**x**) = *A***x** with matrix

Using **WebSVD**, grab the red vector **x** (hold down mouse button) in the yellow box and move it completely around the unit circle. What shape do you seem to be getting?

To get a better look, click the "Turn Trace ON" button at the bottom of the right box, and move the red arrow around the unit circle. What shape so you seem to be getting? If you want, you can click on one of the "Animate x" buttons to have the vector **x** move automatically. If you want the animation to stop, click the button again.

To clean things up a little, click on the "Turn Trace OFF" button, and click the red X in the lower right hand corner of the screen. You can still view the image shape by clicking on "Show Orbit of *T*(**x**)" at the top of the right box. You can keep one of the "Animate x" buttons on if you wish (but not both).

- With "Show Orbit of
*T*(**x**)" selected, change the matrix of transformation and observe the image of the unit circle. Do we still get the same shape?

- Can you change the matrix to get a circle?

- Can you make the matrix symmetric? Orthogonal?

- Can you make the
*T*(**x**) vector move in the opposite direction as**x**?

Play for a while.

Experimentation should have led you to a feeling that the image of the unit circle appears elliptical. So, is it really an ellipse or not? If it is an ellipse, what are its axes?

A reasonable guess would be a set of eigenvectors from the matrix of transformation, *A*. Let's investigate that . . .

- Reload
**WebSVD**to reset the matrix to the one we started with.

- Select the "Superimpose x" button at the top of the right-hand box, and select the "Show Orbit of
*T*(**x**)" as well.

- Now, try to line up the
**x**and*T*(**x**) vectors to find the eigenvectors.

Now consider the following questions:

- So, are these the axes?

- Do the axes of the supposed ellipse appear orthogonal?

- Do the eigenvectors appear orthogonal?

- Are the axes in the same directions as the eigenvectors?

Note: Since this is a triangular matrix, its eigenvalues are the diagonal elements: l_{1} = 1 and l_{2} = 1.5. Corresponding unit eigenvectors are **x**_{1} = (1,0) and **x**_{2} = 1/sqrt(10) (3,1) = (.9487, .3162). These are shown in the following figure with *A***x**_{1} = **x**_{1} and A**x**_{2} = 1.5 **x**_{2} in the image.

We've eliminated eigenvectors as the axes of the ellipse, perhaps there is another way to find the axes.

Once again, consider the transformation *T*(**x**) = *A***x** with matrix

- Grab the red vector
**x**(hold down mouse button) and move it around until the*T*(**x**) vector matches the major axis of the image ellipse. Record the vectors**x**and*T*(**x**), which are shown in the red bordered box. Also, record also the length of the vector*T*(**x**) -- it is at the bottom.

- Now select the "Show vectors p and T(p)" button. Move the
**x**vector until the*T*(**x**) vector matches the minor axis. For comparison, move the vector**p**until*T*(**p**) matches the major axis of the ellipse. [We do this because the*T*(**p**) vector is not printed, only*T*(**x**).] You can use the angle measure that prints in the lower left corner to ensure that the axes are orthogonal. Record the same information about these vectors. Notice that the**x**and**p**vectors that correspond to the*T*(**x**) and*T*(**p**) vectors are also orthogonal.

- Use this information to write down the SVD of the matrix A.

If you need a hint, recall that **x** and **p** are eigenvectors of *A*^{T}*A*, and *T*(**x**) and *T*(**p**) are the corresponding eigenvectors of *AA*^{T}. The lengths of the vectors *T*(**x**) and *T* (**p**) are the square roots of the eigenvalues of *A*^{T}*A*. Note: You can check your answer by asking Matlab: Enter A, then type "[Q1,Sigma,Q2]=svd(A)".

- Enter a new matrix that has rank one, and repeat Problem 1.

Next or or page:

David E. Meel and Thomas A. Hern, "Tool Building: Web-based Linear Algebra Modules - The WebSVD Tool and Sample Activity," *Loci* (May 2005)

Journal of Online Mathematics and its Applications