Mercurial > matrix-functions
diff toolbox/cauchy.m @ 0:8f23314345f4 draft
Create local repository for matrix toolboxes. Step #0 done.
author | Antonio Pino Robles <data.script93@gmail.com> |
---|---|
date | Wed, 06 May 2015 14:56:53 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolbox/cauchy.m Wed May 06 14:56:53 2015 +0200 @@ -0,0 +1,39 @@ +function C = cauchy(x, y) +%CAUCHY Cauchy matrix. +% C = CAUCHY(X, Y), where X, Y are N-vectors, is the N-by-N matrix +% with C(i,j) = 1/(X(i)+Y(j)). By default, Y = X. +% Special case: if X is a scalar CAUCHY(X) is the same as CAUCHY(1:X). +% Explicit formulas are known for DET(C) (which is nonzero if X and Y +% both have distinct elements) and the elements of INV(C). +% C is totally positive if 0 < X(1) < ... < X(N) and +% 0 < Y(1) < ... < Y(N). + +% References: +% N.J. Higham, Accuracy and Stability of Numerical Algorithms, +% Society for Industrial and Applied Mathematics, Philadelphia, PA, +% USA, 1996; sec. 26.1. +% D.E. Knuth, The Art of Computer Programming, Volume 1, +% Fundamental Algorithms, second edition, Addison-Wesley, Reading, +% Massachusetts, 1973, p. 36. +% E.E. Tyrtyshnikov, Cauchy-Toeplitz matrices and some applications, +% Linear Algebra and Appl., 149 (1991), pp. 1-18. +% O. Taussky and M. Marcus, Eigenvalues of finite matrices, in +% Survey of Numerical Analysis, J. Todd, ed., McGraw-Hill, New York, +% pp. 279-313, 1962. (States the totally positive property on p. 295.) + +n = max(size(x)); +% Handle scalar x. +if n == 1 + n = x; + x = 1:n; +end + +if nargin == 1, y = x; end + +x = x(:); y = y(:); % Ensure x and y are column vectors. +if any(size(x) ~= size(y)) + error('Parameter vectors must be of same dimension.') +end + +C = x*ones(1,n) + ones(n,1)*y.'; +C = ones(n) ./ C;