% dmFirst3Pt.m % % 1st order 3 point approximation (differentiated quadratic interpolating polynomial) % to the 1st derivative on a uniform grid % x the grid % dm differentiation matrix % Note: test on a unit spaced grid % x = linspace(0,10,11) % dm = dmFirst3Pt(x) % the weights come from: % % >> C = finiteDifferenceWeights(1,[0 1 2],1) % C = % 0 1.0000 0 % -0.5000 0 0.5000 %>> C = finiteDifferenceWeights(0,[0 1 2],1) % C = % 1.0000 0 0 % -1.5000 2.0000 -0.5000 %>> C = finiteDifferenceWeights(2,[0 1 2],1) % C = % 0 0 1.0000 % 0.5000 -2.0000 1.5000 function dm = dmFirst3Pt(x) N = length(x); h = abs(x(2)-x(1)); up = diag(0.5*ones(1,N),1); low = diag(-0.5*ones(1,N),-1); dm = diag(0*ones(1,N)) + up(2:end,2:end) + low(2:end,2:end); dm(1,1) = -1.5; dm(1,2) = 2; dm(1,3) = -0.5; dm(N,N-2) = 0.5; dm(N,N-1) = -2; dm(N,N) = 1.5; dm = dm./h;