difflim.m
%Program 6.1 (Differentiation Using Limits). To approximate %f'(x) numerically by generating the sequencef'(x)≈Dk= %[f(x+(10^-k)*h)-f(x-(10^-k)*h]/[2*(10-k)*h] for k=0,… ,n %until |Dn+1-Dn| > |Dn-Dn-1| or |Dn-Dn-1| < tolerance, %which is an attempt to find the best approximation f’(x)≈Dn. function [L,n]=difflim(f,x,toler) %Input - f is the function input as a string 'f ' % - x is the differentiation point % - toler is the desired tolerance %Output - L=[H' D' E']: % H is the vector of step sizes % D is the vector of approximate derivatives % E is the vector of error bounds % - n is the coordinate of the "best approximation" max1=15; h=1; H(1)=h; D(1)=(feval(f,x+h)-feval(f,x-h))/(2*h); E(1)=0; R(1)=0; for n=1:2 h=h/10; H(n+1)=h; D(n+1)=(feval(f,x+h)-feval(f,x-h))/(2*h); E(n+1)=abs(D(n+1)-D(n)); R(n+1)=2*E(n+1)/(abs(D(n+1))+abs(D(n))+eps); end n=2; while((E(n)>E(n+1))&(R(n)>toler))&n<max1 h=h/10; H(n+2)=h; D(n+2)=(feval(f,x+h)-feval(f,x-h))/(2*h); E(n+2)=abs(D(n+2)-D(n+1)); R(n+2)=2*E(n+2)/(abs(D(n+2))+abs(D(n+1))+eps); n=n+1; end n=length(D)-1; L=[H' D' E'];%Program 6.1 (Differentiation Us