How can i use L'hospital rule i.e sin(x)/x for x tends to zero?

2 views (last 30 days)
I have a simple program
n=[0:7] x=sin((pi*n)/2)./(pi*n)
which returns,
n =
0 1 2 3 4 5 6 7
x =
NaN 0.3183 0.0000 -0.1061 -0.0000 0.0637 0.0000 -0.0455
Only the problem is that,according to L'Hospital rule,value of x for n=0 should be 0.5 instead getting NaN.. How can i get this? Is there any command?

Accepted Answer

Star Strider
Star Strider on 23 Sep 2012
Edited: Star Strider on 23 Sep 2012
By convention, 0/0 evaluates to NaN.
To be absolutely formal (if a bit kludgy) about using L’Hospital's rule in this situation:
fderiv = @(f,x) (f(x+eps)-f(x))/eps; % Derivative of a function
xderiv = @(x) ((x+eps)-x)/eps; % Derivative of an expression
for n = 0:7
x(n+1)=sin((pi*n)/2)./(pi*n);
if isnan( x(n+1) ) % Test for ‘NaN’
x(n+1) = fderiv(@sin, pi*n/2)./(xderiv(pi*n)); % L'Hospital's Rule
end
end
There are better and more numerically stable derivative expressions (such as the five-point algorithm), but this will do for an illustration.
Also, using L'Hospital's rule,
x=sin((pi*n)/2)./(pi*n)
will be 1 at n=0, however:
x=(sin(pi*n)/2)./(pi*n)
with the fderiv call then becoming:
x(n+1) = (fderiv(@sin, pi*n)/2)./(xderiv(pi*n));
will be 0.5 for n=0.

More Answers (1)

Wayne King
Wayne King on 23 Sep 2012
Edited: Wayne King on 23 Sep 2012
You can do this:
x = -5:0.001:5;
y = sin(x)./x;
plot(x,y)
Since the increment in the x-variable is 0.001 and the range is 10, the total number of x-samples is 10^4, 0 will be at index 5001. Look at the y-values in a neighborhood of 0.
y(4950:5050)
You can see that the left-hand and right-hand limits are 1.
If you have the Symbolic Toolbox.
ezplot('sin(x)/x',[-5,5])

Categories

Find more on Surfaces, Volumes, and Polygons in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!