annotate main/special-matrix/wilkinson.m @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children 2ac2777b30bc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 ## Copyright (C) 1999 Peter Ekberg
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify it
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 ## under the terms of the GNU General Public License as published by
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 ## the Free Software Foundation; either version 2, or (at your option)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 ## any later version.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful, but
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 ## WITHOUT ANY WARRANTY; without even the implied warranty of
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 ## General Public License for more details.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 ## along with this program; see the file COPYING. If not, write to the Free
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 ## 02111-1307, USA.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 ## usage: wilkinson (n)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 ## Return the Wilkinson matrix of order n.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21 ##
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 ## See also: hankel, vander, sylvester_matrix, hilb, invhilb, toeplitz
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 ## hadamard, rosser, compan, pascal
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 ## Author: peda
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 function retval = wilkinson (n)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29 if (nargin != 1)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 usage ("wilkinson (n)");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 nmax = length (n);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 if ~(nmax == 1)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35 error ("wilkinson: expecting scalar argument, found something else");
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 side = ones(n-1,1);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 center = abs(-(n-1)/2:(n-1)/2);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 retval = diag(side, -1) + diag(center) + diag(side, 1);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 endfunction