# How to overcome this error in NIntegrate?

I am encountering the following error message for my code

NIntegrate::izero: Integral and error estimates are 0 on all integration subregions. Try increasing the value of the MinRecursion option. If value of integral may be 0, specify a finite value for the AccuracyGoal option.

λ = 0.5;
η = 4;
K = 1*10^15;

ESTwoBeta = Exp[σ^2*(2 - η)/η^2];
ω = λ * π* ESTwoBeta/K;

BW = 20*10^6;
NPSD = -174 + 10*Log10[BW];
Noise = 10^(NPSD/10)/1000;
PowerVal = 10^(43/10)/1000;
W = Noise/PowerVal;

SINRThresdB = 10;
γ = 10^(SINRThresdB/10);

expression1 = NIntegrate[x^{2/η - 1} Exp[-x γ W ω^{-η/2}] Exp[-x^{2/η}]
Exp[-2/{η (1 - 2/η)} γ x^{2/η} Hypergeometric2F1[1, 1 - 2/η, 2 - 2/η, -γ]],
{x, 0, ∞}] 2/η


How can I get over this?

• What are you trying to integrate? Show you input. Without it, any help more specific than what the error message suggests is impossible.
– Kiro
Sep 20, 2017 at 9:10
• @Kiro, Please have a look now. Sep 20, 2017 at 10:15

The error means your integral is either zero or too small. To test which, raise the working precision to see if you can get a nonzero result. You will want to keep the precision goal constant as you raise the working precision. The greater the difficulty to get a nonzero result, the greater the likelihood that the integral is zero. If you cannot prove or convince yourself analytically that the integral is zero, you may have to live with the uncertainty.

In this case, WorkingPrecision -> 32 (together with PrecisionGoal -> 8 to keep the precision goal constant) produces a max-recursion error. So I raised MaxRecursion and got a result free of error messages.

λ = 1/2; (* change lambda from machine precision to exact *)
(*...update other defs...*)

expression1 =
NIntegrate[
x^{2/η -
1} Exp[-x γ W ω^{-η/
2}] Exp[-x^{2/η}] Exp[-2/{η (1 -
2/η)} γ x^{2/η} Hypergeometric2F1[1,
1 - 2/η, 2 - 2/η, -γ]], {x, 0, ∞},
WorkingPrecision -> 32, PrecisionGoal -> 8,
MaxRecursion -> 20] 2/η
(*  {3.5919201893005161202478068684044*10^-9}  *)

• That can't be true. With the above parameter definitions I get Exp[-80000000000000000*...]for the integrand after FullSimplify. With version 8.0 I can't verify your result, despite get Underflow. There must be something wrong with the parameter-definitions. Sep 20, 2017 at 13:09
• @Akku14 I get the same result, and no underflow, with or without simplifying. V11.2. Sep 20, 2017 at 18:57
• I mean I get the same result as my answer in both cases. So don't see a problem Sep 21, 2017 at 0:09