Homework 6.

Assigned: Mon Oct 18. Due: Mon Oct 25, at midnight

This refers to the roots of polynomial example on p.92 of the text. The notation on this page is very confusing because, unlike on the previous page, x is the SOLUTION of the problem to be solved, instead of the DATA. We shall therefore write LAMBDA instead of x. On the other hand, the DATA is given by the coefficients a_i.

• Verify equation (12.7), writing lambda instead of x, by differentiating the equation P(lambda,a) = 0, where a is the vector of given polynomial coefficients.
• Which is the most sensitive root of the Wilkinson polynomial p(lambda), and to which coefficient? To answer this you need to evaluate (12.7) for all a_i and all lambda_j. Use Matlab to do the computations. The answer given in the middle of the page is wrong. You will first need to differentiate p(lambda) to get the formula for p'(lambda); this is not hard because of the simple formula for p(lambda).
• Check out how well the formula predicts the changes in the roots by using the Matlab "roots" function (which actually works by computing the eigenvalues of the "companion" matrix!), applying it to small (e.g., 1.0e-14, 1.0e-10) perturbations of the coefficients a_i one at a time. If the perturbed roots are in a vector pertroots, plot them in the complex plane by "plot(real(pertroots), imag(pertroots), 'r*'), for example. You don't need to print more than a couple of plots. You can get the unperturbed coefficients a_i from "poly(1:20)" (type "help poly"), but note that a_15, for example, is in the 6th position and a_20 = 20! is in the first position. You can use "fliplr" to flip these around if you want.
• The picture on p.93 is obtained by perturbing all the coefficients by around 1.0e-10. What happens if you don't make any perturbation at all, but just evaluate "roots(poly(1:20))"? Now the only perturbations are the inevitable floating point operation rounding errors. What if you increase the degree to a number K > 20? Are your experimental results consistent with the formula for the condition number, taking into account the machine precision ("machine epsilon")?