ComplexInfinity encountered in Mathematica

  • Context: Mathematica 
  • Thread starter Thread starter EngWiPy
  • Start date Start date
  • Tags Tags
    Mathematica
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
6 replies · 7K views
EngWiPy
Messages
1,361
Reaction score
61
Hello,

I have the following segement of code:

Code:
IA1[N_, k_, n_, sig_, al_] := (
   Sqrt[Pi]*(4*al)^(n + 1))/(sig - s + (2*al))^(NA + k + n + 1)*(
   Gamma[N + k + n + 1]*Gamma[N + k - n - 1])/Gamma[N + k + 0.5]*
   Hypergeometric2F1[N + k + n + 1, n + 1.5, N + k + 0.5, (
    sig - s - 2*al)/(sig - s + 2*al)];
IA2[N_, k_, n_, sig_, al_] := (Sqrt[Pi]*(4*al)^n)/(sig - s + (2*al))^(
   NA + k + n + 1)*(Gamma[N + k + n + 1]*Gamma[N + k - n + 1])/
   Gamma[N + k + 1.5]*
   Hypergeometric2F1[N + k + n + 1, n + 0.5, N + k + 1.5, (
    sig - s - 2*al)/(sig - s + 2*al)];
IA[N_, k_, n_, sig_, al_] := 
  2*(N + k - n - 1)*IA1[N, k, n, sig, al] - 
   sig*D[IA1[N, k, n, sig, al], s] - 2*al*IA2[N, k, n, sig, al];

and when I run it, the following error appears:

Code:
\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

But I didn't find a situation where we can get ComplexInfinity. Can anyone help me, please?

Note: the minimum value for N=1, K=0, n=0, and sig and al are essentially greater than zero
 
Last edited:
Physics news on Phys.org
Hi S_David,

S_David said:
Hello,

I have the following segement of code:

Code:
IA1[N_, k_, n_, sig_, al_] := (
   Sqrt[Pi]*(4*al)^(n + 1))/(sig - s + (2*al))^(NA + k + n + 1)*(
   Gamma[N + k + n + 1]*Gamma[N + k - n - 1])/Gamma[N + k + 0.5]*
   Hypergeometric2F1[N + k + n + 1, n + 1.5, N + k + 0.5, (
    sig - s - 2*al)/(sig - s + 2*al)];
IA2[N_, k_, n_, sig_, al_] := (Sqrt[Pi]*(4*al)^n)/(sig - s + (2*al))^(
   NA + k + n + 1)*(Gamma[N + k + n + 1]*Gamma[N + k - n + 1])/
   Gamma[N + k + 1.5]*
   Hypergeometric2F1[N + k + n + 1, n + 0.5, N + k + 1.5, (
    sig - s - 2*al)/(sig - s + 2*al)];
IA[N_, k_, n_, sig_, al_] := 
  2*(N + k - n - 1)*IA1[N, k, n, sig, al] - 
   sig*D[IA1[N, k, n, sig, al], s] - 2*al*IA2[N, k, n, sig, al];

and when I run it, the following error appears:

Code:
\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

\[Infinity]::indet: Indeterminate expression 0 ComplexInfinity \
encountered. >>

But I didn't find a situation where we can get ComplexInfinity. Can anyone help me, please?

Note: the minimum value for N=1, K=0, n=0, and sig and al are essentially greater than zero

Inside IA1 you have:

Code:
Gamma[N+k-n-1]

which for the values you are using becomes Gamma[0].
 
Wow, you are absolutely right. I didn't know that Gamma[0] is undefined, too. I thought just for the negative values. In this case we must include an If[] statement for the code to work. Is this a valid step?

Ok, thanks a lot alphysicist, and wish you luck.

Best Regards
 
S_David said:
Wow, you are absolutely right. I didn't know that Gamma[0] is undefined, too. I thought just for the negative values. In this case we must include an If[] statement for the code to work. Is this a valid step?

Ok, thanks a lot alphysicist, and wish you luck.

Best Regards

Sure, glad to help!

I'm not sure what you are calculating, so I can't say that an If statement is the right thing to do. I can't see that there is anything wrong with it, though. I have done calculations in the past that blew up at the origin and just did a quick If branch to get through it.
 
alphysicist said:
Sure, glad to help!

I'm not sure what you are calculating, so I can't say that an If statement is the right thing to do. I can't see that there is anything wrong with it, though. I have done calculations in the past that blew up at the origin and just did a quick If branch to get through it.

If we have the following expression [tex]f(x)=\frac{1}{\sqrt{x}}[/tex], then the domain must be [tex]x>0[/tex], because for other values the function doen't exist in the real axis. I think we can say the same in my problem, because there is no other way to overcome the problem. I am computing the Moment Generating Function (MGF) to compute the Symbol Error Rate in a wireless communication system.

Thanks.
 
S_David said:
If we have the following expression [tex]f(x)=\frac{1}{\sqrt{x}}[/tex], then the domain must be [tex]x>0[/tex], because for other values the function doen't exist in the real axis. I think we can say the same in my problem, because there is no other way to overcome the problem. I am computing the Moment Generating Function (MGF) to compute the Symbol Error Rate in a wireless communication system.

Thanks.

Here's what I essentially did the last time I ran into this type of problem. The problem was essentially along the lines of:

[tex] f(x)=\frac{1-e^{-x}}{x}[/tex]

which has a finite limit at [itex]x=0[/itex], but the computer does not want to divide by zero. So I just calculated the limit by hand and put it in an If statement.

However, I did that just because it was straightforward. Your problem looks more difficult, so maybe you would want to see if mathematica can calculate the limit, if that's what needed? Or do you already know the value, or can you just skip that value altogether? Those considerations will tell you the right approach.
 
alphysicist said:
Here's what I essentially did the last time I ran into this type of problem. The problem was essentially along the lines of:

[tex] f(x)=\frac{1-e^{-x}}{x}[/tex]

which has a finite limit at [itex]x=0[/itex], but the computer does not want to divide by zero. So I just calculated the limit by hand and put it in an If statement.

However, I did that just because it was straightforward. Your problem looks more difficult, so maybe you would want to see if mathematica can calculate the limit, if that's what needed? Or do you already know the value, or can you just skip that value altogether? Those considerations will tell you the right approach.

After double check, the term [tex](N+k-n-1)\ge 0[/tex], because the maximum value of [tex]n[/tex] is [tex]N+k-1[/tex]. I tried to write the limit as [tex]n\longrightarrow N+k-1[/tex] but Mathematica didn't compute it, and gives ComplexInfinity again. I am not sure if I can calculate it manually, it seems complicated.

I don't know where, but I am sure that I have something wrong, because when I run the program, after writting the If statement, I got negative answers, which must not occur in my case, because the SER is in the range of [tex][0,1][/tex] by definition.

Best regards