3 Replies - 2484 Views - Last Post: 19 October 2010 - 11:29 AM Rate Topic: -----

#1 Guest_Ghosted*


Reputation:

need help with Java factorial

Posted 19 October 2010 - 09:48 AM

Hey guys i was wondering if anyone can help me with this

im new at java but my teacher really has it that we are at this level already, i get the basic knowlege but it would be awesome if anyone would help. So far i got the factorial but i dont know how to implement it into the program.


-------------------------------------------------
One of the more amazing facts from calculus is that the following sum gets closer and closer to the value ex the more terms you add in:
ex = 1 + x + x2/2! + x3/3! + x4/4! + x5/5! + x6/6! + . . . .
Remember that n! means n factorial, n*(n-1)*(n-2)* ... *1. For example, if x is 2 then
e2 = 1 + 2 + 22/2! + 23/3! + 24/4! + 25/5! . . . .
e2 = 1 + 2 + 4/2 + 8/6 + 16/24 + 32/120 + . . . .


e2 = 1 + 2 + 2 + 1.3333 + 0.6666 + 0.2666 + . . . .


e2 ~ 7.266


More exactly, e2 = 7.38907...
Write a program that asks the user to enter x, then calculates ex using a loop to add up successive terms until the current term is less than 1.0E-12. Then write out the value Math.exp(x) to see how your value compares.
To do this program sensibly, the loop will add in a term each iteration.
sum = sum + term;
Look carefully at the first equation for ex. Notice that each term in the series is:
x N/N!
for some N. This is the same as:
x(N-1)/(N-1)! * x/N
This is the previous term times x/N. So each iteration of the loop merely has to multiply the previous term by x/N and add it to the accumulating sum.
Don't let the math scare you away! This is actually a fairly easy program, and is typical of a type of calculation that computers are often used for.
Enter x:
2
n:1 term: 2.0 sum: 3.0
n:2 term: 2.0 sum: 5.0
n:3 term: 1.3333333333333333 sum: 6.333333333333333
n:4 term: 0.6666666666666666 sum: 7.0
n:5 term: 0.26666666666666666 sum: 7.266666666666667
n:6 term: 0.08888888888888889 sum: 7.355555555555555
n:7 term: 0.025396825396825397 sum: 7.3809523809523805
n:8 term: 0.006349206349206349 sum: 7.387301587301587
n:9 term: 0.0014109347442680777 sum: 7.3887125220458545
n:10 term: 2.8218694885361555E-4 sum: 7.388994708994708
n:11 term: 5.130671797338464E-5 sum: 7.389046015712681
n:12 term: 8.551119662230774E-6 sum: 7.3890545668323435
n:13 term: 1.3155568711124268E-6 sum: 7.389055882389215
n:14 term: 1.8793669587320383E-7 sum: 7.3890560703259105
n:15 term: 2.5058226116427178E-8 sum: 7.389056095384136
n:16 term: 3.1322782645533972E-9 sum: 7.389056098516415
n:17 term: 3.6850332524157613E-10 sum: 7.389056098884918
n:18 term: 4.094481391573068E-11 sum: 7.389056098925863
n:19 term: 4.309980412182177E-12 sum: 7.3890560989301735
n:20 term: 4.309980412182177E-13 sum: 7.389056098930604

my e^x: 7.389056098930604
real e^x: 7.38905609893065


----------------------------------------------------------------------------

Is This A Good Question/Topic? 0

Replies To: need help with Java factorial

#2 n8wxs  Icon User is offline

  • --... ...-- -.. . -. ---.. .-- -..- ...
  • member icon

Reputation: 972
  • View blog
  • Posts: 3,878
  • Joined: 07-January 08

Re: need help with Java factorial

Posted 19 October 2010 - 10:29 AM

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

:code:
Was This Post Helpful? 0
  • +
  • -

#3 Guest_Ghosted*


Reputation:

Re: need help with Java factorial

Posted 19 October 2010 - 10:57 AM

View Postn8wxs, on 19 October 2010 - 09:29 AM, said:

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

:code:


Thanks for a reply, and i dint want the code just a mental breakdown of what i need to add =]

so far i have

import java.util.Scanner;
class ConrolledLoop{
    public static void main(String[]    args){
        Scanner scan = new Scanner(System.in);

        double inData;

        System.out.println("Enter n!: ");

        inData = scan.nextDouble();
        
        double N = inData; //User input
        double factorial= 1;
        
        System.out.println(+N+"! is " +factorial);
        for (double i= 1; i<=N; i++){
              factorial=factorial*i;
        }
        System.out.println(factorial);
        

    }
}



That is what i have so far, but that is just to firgure out the factorial. I need a way so that When the user inputs X it would power X to itself and factor X! so it would look like this e^x = 1 + x + x^2/2!
then after the first x^2/2! it adds one to the power and one to the factorial and now it would look like
e^x = 1 + x + x^2/2!+x^3/3!.. i hope that helps :/ im sorry if im being a such pain, im kinda new to this.
Was This Post Helpful? 0

#4 Guest_Ghosted*


Reputation:

Re: need help with Java factorial

Posted 19 October 2010 - 11:29 AM

View PostGhosted, on 19 October 2010 - 09:57 AM, said:

View Postn8wxs, on 19 October 2010 - 09:29 AM, said:

We will not give you code. Post your attempt(s) at solving you problem. We will help you debug it and suggest improvements.

Use the code tags:

:code:


Thanks for a reply, and i dint want the code just a mental breakdown of what i need to add =]

so far i have

import java.util.Scanner;
class ConrolledLoop{
    public static void main(String[]    args){
        Scanner scan = new Scanner(System.in);

        double inData;

        System.out.println("Enter n!: ");

        inData = scan.nextDouble();
        
        double N = inData; //User input
        double factorial= 1;
        
        System.out.println(+N+"! is " +factorial);
        for (double i= 1; i<=N; i++){
              factorial=factorial*i;
        }
        System.out.println(factorial);
        

    }
}



That is what i have so far, but that is just to firgure out the factorial. I need a way so that When the user inputs X it would power X to itself and factor X! so it would look like this e^x = 1 + x + x^2/2!
then after the first x^2/2! it adds one to the power and one to the factorial and now it would look like
e^x = 1 + x + x^2/2!+x^3/3!.. i hope that helps :/ im sorry if im being a such pain, im kinda new to this.



This is my new code it give me 3 when i put 2 in
import java.util.Scanner;
class ConrolledLoop{
    public static void main(String[]    args){
        Scanner scan = new Scanner(System.in);

        double inData;

        System.out.println("Enter the term");

        inData = scan.nextDouble();

        double F = inData;
        double P = inData;
        double N = inData;
        double factorial= 1;
        double e = 0;

        for (double i= 1; i<=P; i++){

        }
        
        
        for (double i= 1; i<=F; i++){
              factorial=factorial*i;
        }

              e= Math.pow((N), P)/F;
        

              double n = e+1;


        System.out.println(n);
        

    }
}


now i just gotta make it loop so that it give me 5 then 6.333333333333333 etc. any help
Was This Post Helpful? 0

Page 1 of 1