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

Fortran Factorials

  1. Feb 9, 2012 #1
    I don't understand at all how you tell the computer to evaluate a complicated factorial expression such as the one given in in the infinite sum of binomial theorem as

    Ʃ [n! / k!(n-k)! ] * x^k

    where n is the final value of the sum and k is where you are in the loop.

    It's supposed to be

    INTEGER :: k, n
    REAL :: sum, fact, x

    ASK INPUT (what are x and n?)

    DO k = 0,n
    sum = sum + fact*x**k
    fact = fact * (n-k)/(k+1)
    END DO

    Is there a procedure to figure out what the term multiplied by the fact variable should be?
     
  2. jcsd
  3. Feb 9, 2012 #2

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Look at what the term are summing, for each value of k.

    When k = 0, it is n! / (0! n!) so k0 = 1
    When k = 1, it is n! / (1! (n-1)! so k1 = n = k0 * n / 1
    When k = 2, it is n! / (2! (n-2)! so k2 = n(n-1) / 2! = k1 * (n-1) / 2
    When k = 3, it is n! / (3! (n-3)! so k3 = n(n-1)(n-2) / 3! = k2 * (n-2) / 3
    etc.
    That is what the program is doing when it updates "fact".
     
  4. Feb 9, 2012 #3
    Hmmm... then fact * (n-k)/(k+1) can't be right because it doesn't match the results of working out all the factorials like that. I checked it in command prompt and it said the sum with x = 2 and n = 2 is 5. This sum represents (1+x)^n which should be 9 in that case.

    I thought fact * ( (n-k+1) / k ) would work but I'm not getting the right answer with that either.
     
  5. Feb 9, 2012 #4
    disregard that. i worked it out on paper and i got 9 but for some reason the program is outputting 5...

    If the k0,k1,k2 etc values are the "fact", how is (n-2)/3 = (n-k)/(k+1) for k = 3? That's why I thought it should be ( (n-k+1) / k ).
     
    Last edited: Feb 9, 2012
  6. Feb 10, 2012 #5

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    The code calculates "k3" when k = 2, not when k = 3.

    Each time through the loop, it uses the current value of fact, then calculates the next value.
     
  7. Feb 10, 2012 #6
    Code (Text):
        i=n
        fact=1
        sum=1
        DO k= 1,n
            f = f*i/k*x
            i = i-1
            s = s + f
        END DO
     
  8. Feb 10, 2012 #7
    OH! I just realized that! It's so simple now that I understand it. Thank you for the help!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Fortran Factorials
  1. CuTee Simple factorial (Replies: 0)

  2. FORTRAN Help (Replies: 1)

  3. Fortran Help (Replies: 2)

  4. Infinity in fortran (Replies: 5)

  5. Linking Fortran (Replies: 5)

Loading...