NaN (not a number) in numerical integration

7 views (last 30 days)
I am trying to integrate the following expression over the variable alpha
ep=0.2;
u=0.2;
lam=0.7;
n=1000;
f=@(alpha) power((1-ep+ep*exp(u^(-1)*alpha)),n).*lam^(-1).*exp(-lam^(-1)*alpha);
out = quad(f,0,Inf)
When I try to solve this, I get NaN value. How can I solve this problem?
Thanks
  2 Comments
Sulaymon Eshkabilov
Sulaymon Eshkabilov on 3 Nov 2021
Could you ples show your equation written in math formulation format (not MATLAB embedded code)?

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 3 Nov 2021
ep=0.2;
u=0.2;
lam=0.7;
n=1000;
f=@(alpha) power((1-ep+ep*exp(u^(-1)*alpha)),n).*lam^(-1).*exp(-lam^(-1)*alpha);
out = quad(f,0,Inf)
Warning: Infinite or Not-a-Number function value encountered.
out = NaN
syms A
fa = f(A)
fa = 
limit(fa, A, 0)
ans = 
limit(fa, A, inf)
ans = 
Look at your expression. You have an exponential in alpha, being raised to 1000. With alpha starting from 0, the expression being raised to 1000 has a minimum value of 1, so raising the value to 1000 is going to increase rapidly.
If you ignore the +4/5 then you can see that you have exp(-10/7 alpha) * exp(5000 alpha), which combines to roughly exp(4999 alpha). Clearly that is going to give you an infinite integral when you go as far as alpha = infinity

More Answers (1)

the cyclist
the cyclist on 3 Nov 2021
Looks like your function becomes infinite. Here's a plot zooming in where it happens
ep=0.2;
u=0.2;
lam=0.7;
n=1000;
f=@(alpha) power((1-ep+ep*exp(u.^(-1).*alpha)),n).*lam.^(-1).*exp(-lam.^(-1).*alpha);
out = quad(f,0,Inf)
Warning: Infinite or Not-a-Number function value encountered.
out = NaN
a = 0.36:1.e-6:0.37;
figure
plot(a,f(a))

Community Treasure Hunt

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

Start Hunting!