% 2nd order accurate first derivative of a function u(x) = sech(x) % over a domain x = [-2,2] dx=.4; x = (-2:dx:2); u = sech(x); n=length(x); % number of points % Use second order forward difference ux(1)=(-3*u(1)+4*u(2)-u(3))/(2*dx); % Use second order center difference for j=2:n-1 ux(j)=(u(j+1)-u(j-1))/(2*dx); end % Use second order backward difference ux(n)=(3*u(n)-4*u(n-1)+u(n-2))/(2*dx); % Compare results: ux_exact = -tanh(x).*sech(x); error_1norm = norm(ux_exact-ux,1) figure(1), plot(x,ux_exact,'b',x,ux,'r*'); clear ux_exact ux