GNU Octave, version 2.1.36 (i686-pc-linux-gnu). Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 John W. Eaton. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'. Report bugs to . octave> zeros(3, 2) ans = 0 0 0 0 0 0 octave> ones(3,2) ans = 1 1 1 1 1 1 octave> diag([1,2,3]) ans = 1 0 0 0 2 0 0 0 3 octave> diag([1,2,3], 1) ans = 0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 octave> diag([1,2,3], -1) ans = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 octave> eye(3) ans = 1 0 0 0 1 0 0 0 1 octave> diag(ones(3, 1), 1) ans = 1 0 0 0 1 0 0 0 1 octave> diag(ones(3, 1), 1) ans = 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 octave> diag(ones(3, 1), 1) + diag(ones(3,1),-1) + diag([-2*ones(3, 1),-1]) ans = 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 octave> diag(ones(3, 1), 1) + diag(ones(3,1),-1) + diag([-2*ones(3, 1);-1]) error: number of rows must match (1 != 3) error: evaluating argument list element number 1 error: evaluating index expression near line 13, column 44 error: evaluating binary operator `+' near line 13, column 42 octave> diag(ones(3, 1), 1) + diag(ones(3,1),-1) + diag([-2*ones(3, 1);-1]) ans = -2 1 0 0 1 -2 1 0 0 1 -2 1 0 0 1 -1 octave> springs n = 4 A = -2 1 0 0 1 -2 1 0 0 1 -2 1 0 0 1 -1 octave> B = exp(A) ans = 0.13534 2.71828 1.00000 1.00000 2.71828 0.13534 2.71828 1.00000 1.00000 2.71828 0.13534 2.71828 1.00000 1.00000 2.71828 0.36788 octave> B = exp(A) B = 0.13534 2.71828 1.00000 1.00000 2.71828 0.13534 2.71828 1.00000 1.00000 2.71828 0.13534 2.71828 1.00000 1.00000 2.71828 0.36788 octave> [S, L] = eig(A) S = -4.2853e-01 -6.5654e-01 5.7735e-01 2.2801e-01 6.5654e-01 2.2801e-01 5.7735e-01 4.2853e-01 -5.7735e-01 5.7735e-01 -1.6614e-16 5.7735e-01 2.2801e-01 -4.2853e-01 -5.7735e-01 6.5654e-01 L = -3.53209 0.00000 0.00000 0.00000 0.00000 -2.34730 0.00000 0.00000 0.00000 0.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 -0.12061 octave> exp(L) ans = 0.029244 1.000000 1.000000 1.000000 1.000000 0.095627 1.000000 1.000000 1.000000 1.000000 0.367879 1.000000 1.000000 1.000000 1.000000 0.886375 octave> LL error: `LL' undefined near line 19 column 1 octave> L L = -3.53209 0.00000 0.00000 0.00000 0.00000 -2.34730 0.00000 0.00000 0.00000 0.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 -0.12061 octave> exp(L) ans = 0.029244 1.000000 1.000000 1.000000 1.000000 0.095627 1.000000 1.000000 1.000000 1.000000 0.367879 1.000000 1.000000 1.000000 1.000000 0.886375 octave> l = eig(A) l = -3.53209 -2.34730 -1.00000 -0.12061 octave> diag(exp(l)) ans = -3.53209 0.00000 0.00000 0.00000 0.00000 -2.34730 0.00000 0.00000 0.00000 0.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 -0.12061 octave> S * diag(exp(l)) * inv(S) ans = 0.02924 0.00000 0.00000 0.00000 0.00000 0.09563 0.00000 0.00000 0.00000 0.00000 0.36788 0.00000 0.00000 0.00000 0.00000 0.88638 octave> C = S * diag(exp(l)) * inv(S) ans = 0.215299 0.186691 0.087673 0.034110 0.186691 0.302972 0.220801 0.121783 0.087673 0.220801 0.337082 0.308474 0.034110 0.121783 0.308474 0.523773 octave> C = S * diag(exp(l)) * inv(S) C = 0.215299 0.186691 0.087673 0.034110 0.186691 0.302972 0.220801 0.121783 0.087673 0.220801 0.337082 0.308474 0.034110 0.121783 0.308474 0.523773 octave> C-B ans = 0.079964 -2.531591 -0.912327 -0.965890 -2.531591 0.167637 -2.497481 -0.878217 -0.912327 -2.497481 0.201747 -2.409808 -0.965890 -0.878217 -2.409808 0.155894 octave> exp(L) ans = 0.029244 1.000000 1.000000 1.000000 1.000000 0.095627 1.000000 1.000000 1.000000 1.000000 0.367879 1.000000 1.000000 1.000000 1.000000 0.886375 octave> L L = -3.53209 0.00000 0.00000 0.00000 0.00000 -2.34730 0.00000 0.00000 0.00000 0.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 -0.12061 octave>