**If you have not already done so, please join the class mailing list! **

Please submit function and script source code listings
(not hand written!!!) and graphics output,
** as well as ** written (by hand or typed) answers to the questions.
It is not necessary to print the MATLAB command sessions.

- Ex 7.2 and Ex 7.5, p.55 of the text.
Note that for 7.2, you can assume A has full rank, although it does not say
so in the
**first**printing of the text.

- Write a Matlab function legendpoly
to compute the first n
Legendre polynomials evaluated on p equally spaced
points on the interval [-1,1], following the model on p.64 of the text,
normalized as at the bottom of p.64 (see also p.53).
Include a third input argument to the function which determines whether to
call the classical Gram Schmidt function clgs(A)
(see clgs.m )
or the built-in Matlab QR (economy-size) function
qr(A,0) . In either case, A
is the matrix whose
columns are the monomials evaluated at the points in the interval.

- In the Matlab workspace, call legendpoly
with various choices of
input parameters, plotting the resulting Legendre polynomials.
For larger n you may not want to plot all of them.
How large does n have to get before classical
Gram-Schmidt is so inaccurate that the plot is visibly different from the
one you get with the built-in QR? Show both sets of polynomials on the
same graph, using different plot marks (use hold on )
so the difference is clear. (Type help plot
to find out what plot marks are available; if you have access to a color printer,
use colors instead, but this is not necessary.)

- Write two Matlab functions
- mgs1 which implements the modified Gram-Schmidt algorithm (Algorithm 8.1, p.58 of the text).
- mgs2 which implements essentially the
same algorithm, but with the operations done in the order shown in equation
(8.7) on the same page instead. This means that the outer loop is now
in
*j*(from 1 to n) and the inner loop is now in*i*(from 1 to j-1).

**changing the comments as well as the code**. Include enough comments to convince the reader that you understand why these programs are mathematically equivalent to classical Gram-Schmidt and to each other, instead of just blindly copying the algorithms. Save the programs in files called mgs1.m and mgs2.m . Ignore breakdown, which means division by zero may occur if the matrix is not full rank (rounding errors may prevent this breakdown). Carefully debug your programs by testing them on small (even very small!) examples first. When they are working, add a third option to legendpoly to call them as alternatives to clgs and qr, and check their accuracy: how do the accuracy of the plots compare with the plots obtained with clgs and qr ?

- Write a Matlab script to reproduce Figure 9.1
(p. 66), but showing the results for all 4 QR routines
clgs, mgs1, mgs2 and qr
(economy-sized), plotting the results with 4 different marks. Use the
example on p.65. You may want to type help semilogy
(semi-log plots) and help script (to learn the
difference between functions and scripts).