clear all
xveryfine=linspace(0,5,1000);
fxveryfine=exp(-xveryfine.^2).*sin(10*xveryfine);
dfactualveryfine=exp(-xveryfine.^2).*(-2*xveryfine.*sin(10*xveryfine)+10*cos(10*xveryfine))
x=GenGrid(0,5,30,1.0);
fx=exp(-x.^2).*sin(10*x);
df=DerivCDA(fx,x);
figure(1)
subplot(211)
hold off
plot(x,fx,’bo-‘,xveryfine,fxveryfine,’k-‘)
xlabel(‘x’);ylabel(‘f(x)’)
subplot(212)
hold off
plot(x,df,’bo-‘,xveryfine,dfactualveryfine,’k-‘)
xlabel(‘x’);ylabel(‘df(x)/dx’)
function df=DerivCDA(f,x)
df=zeros(size(f))
N=length(f)
df(1)=(f(2)-f(1))/(x(2)-x(1))
for i=2:N-1
df(i)=(f(i+1)-f(i-1))/(x(i+1)-x(i-1));
end
df(N)=(f(N)-f(N-1))/(x(N)-x(N-1))
end
function x=GenGrid(a,b,N,r)
x=linspace(a,b,N);
if abs(r-1) > 1.0e-8
dx0=(b-a)*(1-r)/(1-r.^(N-1));
x(1)=a;
dx=dx0;
for i=2:N
x(i)=x(i-1)+dx;
dx=r*dx;
end
end
end