% hw2: compare dfdx_exact dfdx_CDS % f= exp(-xexact).*cos(5*xexact); clear all; close all; %determine exact derivative xexact=[0:0.001:3]; dfexact = -5.0*exp(-xexact).*sin(5*xexact)-cos(5*xexact).*exp(-xexact); fexact = exp(-xexact).*cos(5*xexact); plot(xexact,dfexact,'r-',xexact,fexact,'k-'); hold on; % determine approximated derivative on separte grids dxtest=[1 0.3 0.003 0.0003]; error=[]; for i=1:length(dxtest) dx = dxtest(i); x = [-dx:dx:3+dx]; xloc = x(2:length(x)-1); f = exp(-x).*cos(5*x); dfdx(1:length(f)-2)=(-f(1:length(f)-2) + f(3:length(f)))/(2*dx); dfdx_exact = -5.0*exp(-xloc).*sin(5*xloc) - cos(5*xloc).*exp(-xloc); error= [error sum(abs(dfdx - dfdx_exact))/(length(f)-2)]; plot(x(2:length(f)-1), dfdx(1:length(f)-2),'k+') hold on; end figure; loglog(dxtest, error)