m=10 m = 10 x=linspace(0,1,m)'; h=1/(m-1) h = 0.1111 x(2:m-1)=x(2:m-1)+(2*rand(8,1)-1)/2/(m-1) x = 0 0.1461 0.2673 0.2919 0.4904 0.5703 0.6219 0.7532 0.8941 1.0000 x(2:m-1)=x(2:m-1)+(2*rand(8,1)-1)/20/(m-1) x = 0 0.1512 0.2725 0.2881 0.4956 0.5753 0.6218 0.7565 0.8901 1.0000 h=diff(x) h = 0.1512 0.1213 0.0156 0.2075 0.0797 0.0464 0.1347 0.1336 0.1099 spdiags([[1:m]',[1:m]',[1:m]'],[-1,0,1],m,m) ans = (1,1) 1 (2,1) 1 (1,2) 2 (2,2) 2 (3,2) 2 (2,3) 3 (3,3) 3 (4,3) 3 (3,4) 4 (4,4) 4 (5,4) 4 (4,5) 5 (5,5) 5 (6,5) 5 (5,6) 6 (6,6) 6 (7,6) 6 (6,7) 7 (7,7) 7 (8,7) 7 (7,8) 8 (8,8) 8 (9,8) 8 (8,9) 9 (9,9) 9 (10,9) 9 (9,10) 10 (10,10) 10 full(ans) ans = Columns 1 through 7 1 2 0 0 0 0 0 1 2 3 0 0 0 0 0 2 3 4 0 0 0 0 0 3 4 5 0 0 0 0 0 4 5 6 0 0 0 0 0 5 6 7 0 0 0 0 0 6 7 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 8 through 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 8 9 0 8 9 10 0 9 10 spdiags([[-1./h;0],[1/h(1);1./h(1:m-2)+1./h(2:m-1);1/h(m-1)],[0;-1./h]],[-1,0,1],m,m) ans = (1,1) 6.6153 (2,1) -6.6153 (1,2) -6.6153 (2,2) 14.8586 (3,2) -8.2432 (2,3) -8.2432 (3,3) 72.3151 (4,3) -64.0718 (3,4) -64.0718 (4,4) 68.8906 (5,4) -4.8188 (4,5) -4.8188 (5,5) 17.3599 (6,5) -12.5411 (5,6) -12.5411 (6,6) 34.0721 (7,6) -21.5310 (6,7) -21.5310 (7,7) 28.9540 (8,7) -7.4230 (7,8) -7.4230 (8,8) 14.9071 (9,8) -7.4841 (8,9) -7.4841 (9,9) 16.5849 (10,9) -9.1007 (9,10) -9.1007 (10,10) 9.1007 g=sin(x) g = 0 0.1506 0.2691 0.2841 0.4756 0.5441 0.5825 0.6864 0.7771 0.8415 gbar=(g(1:m-1)+g(2:m))/2 gbar = 0.0753 0.2099 0.2766 0.3798 0.5098 0.5633 0.6344 0.7318 0.8093 (gbar(1:m-2).*h(1:m-2)+gbar(2:m-1).*h(2:m-1))/2 ans = 0.0184 0.0149 0.0416 0.0597 0.0334 0.0558 0.0916 0.0934 [gbar(1)*h(1)/2;(gbar(1:m-2).*h(1:m-2)+gbar(2:m-1).*h(2:m-1))/2;gbar(m-1)*h(m-1)/2] ans = 0.0057 0.0184 0.0149 0.0416 0.0597 0.0334 0.0558 0.0916 0.0934 0.0445 A=spdiags([[-1./h;0],[1/h(1);1./h(1:m-2)+1./h(2:m-1);1/h(m-1)],[0;-1./h]],[-1,0,1],m,m) A = (1,1) 6.6153 (2,1) -6.6153 (1,2) -6.6153 (2,2) 14.8586 (3,2) -8.2432 (2,3) -8.2432 (3,3) 72.3151 (4,3) -64.0718 (3,4) -64.0718 (4,4) 68.8906 (5,4) -4.8188 (4,5) -4.8188 (5,5) 17.3599 (6,5) -12.5411 (5,6) -12.5411 (6,6) 34.0721 (7,6) -21.5310 (6,7) -21.5310 (7,7) 28.9540 (8,7) -7.4230 (7,8) -7.4230 (8,8) 14.9071 (9,8) -7.4841 (8,9) -7.4841 (9,9) 16.5849 (10,9) -9.1007 (9,10) -9.1007 (10,10) 9.1007 full(A) ans = Columns 1 through 4 6.6153 -6.6153 0 0 -6.6153 14.8586 -8.2432 0 0 -8.2432 72.3151 -64.0718 0 0 -64.0718 68.8906 0 0 0 -4.8188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 5 through 8 0 0 0 0 0 0 0 0 0 0 0 0 -4.8188 0 0 0 17.3599 -12.5411 0 0 -12.5411 34.0721 -21.5310 0 0 -21.5310 28.9540 -7.4230 0 0 -7.4230 14.9071 0 0 0 -7.4841 0 0 0 0 Columns 9 through 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.4841 0 16.5849 -9.1007 -9.1007 9.1007 h h = 0.1512 0.1213 0.0156 0.2075 0.0797 0.0464 0.1347 0.1336 0.1099 diary off