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
- 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
- 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")?