Mercurial > matrix-functions
diff toolbox/wilk.m @ 2:c124219d7bfa draft
Re-add the 1995 toolbox after noticing the statement in the ~higham/mctoolbox/ webpage.
author | Antonio Pino Robles <data.script93@gmail.com> |
---|---|
date | Thu, 07 May 2015 18:36:24 +0200 |
parents | 8f23314345f4 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolbox/wilk.m Thu May 07 18:36:24 2015 +0200 @@ -0,0 +1,45 @@ +function [A, b] = wilk(n) +%WILK Various specific matrices devised/discussed by Wilkinson. +% [A, b] = WILK(N) is the matrix or system of order N. +% N = 3: upper triangular system Ux=b illustrating inaccurate solution. +% N = 4: lower triangular system Lx=b, ill-conditioned. +% N = 5: HILB(6)(1:5,2:6)*1.8144. Symmetric positive definite. +% N = 21: W21+, tridiagonal. Eigenvalue problem. + +% References: +% J.H. Wilkinson, Error analysis of direct methods of matrix inversion, +% J. Assoc. Comput. Mach., 8 (1961), pp. 281-330. +% J.H. Wilkinson, Rounding Errors in Algebraic Processes, Notes on Applied +% Science No. 32, Her Majesty's Stationery Office, London, 1963. +% J.H. Wilkinson, The Algebraic Eigenvalue Problem, Oxford University +% Press, 1965. + +if n == 3 + % Wilkinson (1961) p.323. + A = [ 1e-10 .9 -.4 + 0 .9 -.4 + 0 0 1e-10]; + b = [ 0 0 1]'; + +elseif n == 4 + % Wilkinson (1963) p.105. + A = [0.9143e-4 0 0 0 + 0.8762 0.7156e-4 0 0 + 0.7943 0.8143 0.9504e-4 0 + 0.8017 0.6123 0.7165 0.7123e-4]; + b = [0.6524 0.3127 0.4186 0.7853]'; + +elseif n == 5 + % Wilkinson (1965), p.234. + A = hilb(6); + A = A(1:5, 2:6)*1.8144; + +elseif n == 21 + % Taken from gallery.m. Wilkinson (1965), p.308. + E = diag(ones(n-1,1),1); + m = (n-1)/2; + A = diag(abs(-m:m)) + E + E'; + +else + error('Sorry, that value of N is not available.') +end