Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Equation Evaluation Problem in Mathematica

  1. Jul 14, 2009 #1
    Hello,

    I have the following line in Mathematica:

    Code (Text):
    Print[Pout = (2^-Q*E^(A/2))/SNR \!\(
    \*UnderoverscriptBox[\(\[Sum]\), \(q = 0\), \(Q\)]Binomial[Q, q] \(
    \*UnderoverscriptBox[\(\[Sum]\), \(n = 0\), \(Ne + q\)]
    FractionBox[
    SuperscriptBox[\((\(-1\))\), \(n\)], \(a[n]\)] Re[
    \*FractionBox[\(Meq[\(-
    \*FractionBox[\(A + \((2*Pi*I*n)\)\), \(2*SNR\)]\)]\),
    FractionBox[\(A + \((2*Pi*I*n)\)\), \(2*SNR\)]]]\)\)]
    But the problem is that for different values of SNR, the result will be the same all the time. Why is that happening? A, Q, and Ne are all constants.

    Thanks in advance
     
  2. jcsd
  3. Jul 14, 2009 #2

    Hepth

    User Avatar
    Gold Member

    What are some examples of what A Q and Ne are so i can try it?
    and what is meq?
     
  4. Jul 14, 2009 #3
    Try these expressions:
    Code (Text):
    A=23
    Q=15
    Ne=21
    Meq[s_]:=1/(1-s)
    Regards
     
  5. Jul 15, 2009 #4

    Hepth

    User Avatar
    Gold Member

    and also, the a[n] function or array?

    but before that make sure youre clearing any variables youre reusing.
    restarting the kernel does that.
     
  6. Jul 15, 2009 #5
    Assume
    Code (Text):
    a[n]=1
    How clear all variables? I have many of them.

    Regards
     
  7. Jul 15, 2009 #6
    I have the same problem again in the following code:

    Code (Text):
    gA = 10;
    M = 1;
    Ne = 1;
    If[M >= 1, m = M, m = 0];
    For[SNRdB = 0, SNRdB <= 10, SNRdB++,
     SNR = 10^(SNRdB/10);
     Print[F1 = \!\(
    \*UnderoverscriptBox[\(\[Sum]\), \(r = m\), \(M\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(i = 0\), \(M - r\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(j = 0\), \(r + i\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(k = 0\), \(j*\((Ne - 1)\)\)]
    \*SuperscriptBox[\((\(-1\))\), \(i + j\)]*Binomial[M, r]*
            Binomial[M - r, i]*Binomial[r + i, j]*
    \*SuperscriptBox[\(E\),
    FractionBox[\(\(-j\)*SNR\), \(gA\)]]*
    \*SuperscriptBox[\((
    \*FractionBox[\(SNR\), \(g\)])\), \(k\)]\)\)\)\)]]
    For[SNRdB = 0, SNRdB <= 10, SNRdB++,
     SNR = 10^(SNRdB/10);
     Print[F2 = 1 - \!\(
    \*UnderoverscriptBox[\(\[Sum]\), \(r1 = m\), \(M - 1\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(i1 = 1\), \(M - r1\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(j1 = 1\), \(r1 + i1\)]\(
    \*UnderoverscriptBox[\(\[Sum]\), \(k1 = 0\), \(j1*\((Ne - 1)\)\)]
    \*SuperscriptBox[\((\(-1\))\), \(i1 + j1\)]*Binomial[M, r1]*
             Binomial[M - r1, i1]*Binomial[r1 + i1, j1]*
    \*SuperscriptBox[\(E\),
    FractionBox[\(\(-j1\)*SNR\), \(gA\)]]*
    \*SuperscriptBox[\((
    \*FractionBox[\(SNR\), \(g\)])\), \(k1\)]\)\)\)\)]]

    1-1/\[ExponentialE]^(1/10)

    1-\[ExponentialE]^-1/10^(9/10)

    1-\[ExponentialE]^-1/10^(4/5)

    1-\[ExponentialE]^-1/10^(7/10)

    1-\[ExponentialE]^-1/10^(3/5)

    1-\[ExponentialE]^-1/Sqrt[10]

    1-\[ExponentialE]^-1/10^(2/5)

    1-\[ExponentialE]^-1/10^(3/10)

    1-\[ExponentialE]^-1/10^(1/5)

    1-\[ExponentialE]^-1/10^(1/10)

    1-1/\[ExponentialE]

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1
    Why is the second part constant, even though it is a dependent on SNR?

    Regards
     
  8. Jul 15, 2009 #7

    Hepth

    User Avatar
    Gold Member

    Because of your sums and their indices. To fix this, add:

    If[M > 1, m = M, m = 0];

    before the second For loop. It changes the greater than equal to to just a greater than. That way the second sum in the second for loop doesn't go from 1 to 0 (1 to M-r1 == M-m==0)
     
  9. Jul 15, 2009 #8

    Hepth

    User Avatar
    Gold Member

    As for your first question, I DO get something different each time I change SNR.
     
  10. Jul 15, 2009 #9
    Really? How is that? Try to put the SNR in a For[] loop, and tell me what will happen. Because I am using a For[] loop actually.

    Regarding your previous post, I have doubts that I have something wrong in the mathematical equations. So, I will double check them and see what happen then.

    Thank you
     
  11. Jul 15, 2009 #10

    Hepth

    User Avatar
    Gold Member

    FOR:
    Code (Text):

    A = 23;
    Q = 15;
    Ne = 21;
    Meq[s_] := 1/(1 - s)
    a[n_] = 1;
    For[SNRdB = 0, SNRdB <= 10, SNRdB++,
      SNR = 10^(SNRdB/10);
    Print[
       Pout =
              Refine[(1.0) (2^-Q*E^(A/2))/SNR
     
    [tex]
    \left.\left.\left.\sum _{q=0}^Q \text{Binomial}[Q,q]\sum _{n=0}^{\text{Ne}+q} \frac{(-1)^n}{a[n]}\text{Re}\left[\frac{\text{Meq}\left[-\frac{A+(2*\text{Pi}*I*n)}{2*\text{SNR}}\right]}{\frac{A+(2*\text{Pi}*I*n)}{2*\text{SNR}}}\right]\right]\right]\right]
    [/tex]

    The changes I made were adding the Refine to simplify the complex stuff, and multiplying by 1.0 to give me a real value.
    I also added the SNR changing in the for loop. Looks like it changes when SNR does. Or did I do something wrong?

    EDIT: oops, heres my output:
    343.991

    424.207

    520.658

    635.431

    770.336

    926.63

    1104.7

    1303.75

    1521.56

    1754.43

    1997.27
     
    Last edited: Jul 15, 2009
  12. Jul 15, 2009 #11

    Hepth

    User Avatar
    Gold Member

    What I mean is that for your given values, you have a sum over
    [tex]
    \sum _{\text{r1}=m}^{M-1} \sum _{\text{i1}=1}^{M-\text{r1}} \sum _{\text{j1}=1}^{\text{r1}+\text{i1}} \sum _{\text{k1}=0}^{\text{j1}*(\text{Ne}-1)}
    [/tex]
    but you have defined :
    If[M >= 1, m = M, m = 0];
    and M IS 1, so m=M=1;
    Then in your sum
    [tex]
    \sum _{\text{r1}=m}^{M-1} \sum _{\text{i1}=1}^{M-\text{r1}}
    [/tex]
    you have:
    r1 from {m to M-1} which is r1 from {1 to (1-1)} or {1 to 0}
    then you have i1 from {1 to M-r1} which is {1 to (1-1)} or {1 to 0}

    So it doesnt sum anything.
    see :
    [tex]
    M=1;m=1;\sum _{\text{r1}=m}^{M-1} \sum _{\text{i1}=1}^{M-\text{r1}} 1==0
    [/tex]
     
  13. Jul 16, 2009 #12
    Yes, now the fake code is working. I said fake because I gave you fake parameters, so the values you got are not the expected one, because there are not in the range between 0 and 1 as it must be by definition. When I did a slight change toward the real parameters I got the expected results as following:

    Code (Text):
    A = 23;
    Q = 15;
    Ne = 21;
    Meq[s_] := 1/(1 - 0.5 s)^4 ;
    a[n_] = If[n == 0, 2, 1];
    For[SNRdB = 0, SNRdB <= 10, SNRdB++,
     SNR = 10^(SNRdB/10);
     Print[Pout = Refine[(1.0) (2^-Q*E^(A/2))/SNR \!\(
    \*UnderoverscriptBox[\(\[Sum]\), \(q = 0\), \(Q\)]Binomial[Q, q] \(
    \*UnderoverscriptBox[\(\[Sum]\), \(n = 0\), \(Ne + q\)]
    FractionBox[
    SuperscriptBox[\((\(-1\))\), \(n\)], \(a[n]\)] Re[
    \*FractionBox[\(Meq[\(-
    \*FractionBox[\(A + \((2*Pi*I*n)\)\), \(2*SNR\)]\)]\),
    FractionBox[\(A + \((2*Pi*I*n)\)\), \(2*SNR\)]]]\)\)]]]

    0.142877

    0.246246

    0.390748

    0.564677

    0.738295

    0.875494

    0.956523

    0.989842

    0.998584

    0.999898

    0.999997
    But when I turn my attention to my real, relatively long code, I faced with the same problem again, although I used the same procedure as you described. I don't know why.

    Best Regards
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Equation Evaluation Problem in Mathematica
Loading...