LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 07-23-2007, 11:45 PM   #1
ckoniecny
Member
 
Registered: Oct 2005
Posts: 162

Rep: Reputation: 30
Calculate e^x in Java


I'm trying to calculate e^x, without any built-in functions such as Math.exp. This is what I have so far:

Code:
    public static double math_ex(int iter, int x) {
       double ex = 0;
       int i = 1;
       
       while(i <= iter) {
          if (i == 1) {
             ex += x;
          } else {
             ex += Math.pow(x,(double)i/factorial(i));
          }
          i++;
       }
       ex += 1;
       return ex;       
    }
My input is:
Code:
Enter iterations: 
6
Enter x: 
3
e^3 = 11.989024
But when I use the calculator to figure it out, it is 20.0855........

Can you see anything thats wrong with my function?

Thanks.
 
Old 07-24-2007, 06:06 AM   #2
Wim Sturkenboom
Senior Member
 
Registered: Jan 2005
Location: Roodepoort, South Africa
Distribution: Slackware 10.1/10.2/12, Ubuntu 12.04, Crunchbang Statler
Posts: 3,786

Rep: Reputation: 282Reputation: 282Reputation: 282
Not a java programmer, but if Math.exp is a built=in function, I assume that Math.pow is as well.

Don't know what is wrong with your code, but is simple multiplying in a loop not easier.

something like
Code:
result=1;
while(iter--)
  result *= x;
return result;
This is not bug free.

[edit]
OK, it's still vague but the factorial is probably to calculate e; so calculate e first and fill it in in place of x. Will be a bit faster as well as you only have to calculate e once.[/edit]

Last edited by Wim Sturkenboom; 07-24-2007 at 06:20 AM.
 
Old 07-24-2007, 06:29 AM   #3
oami
LQ Newbie
 
Registered: Nov 2006
Location: Russia
Distribution: OpenSuSE 10.2
Posts: 1

Rep: Reputation: 0
Quote:
Originally Posted by ckoniecny

Code:
             ex += Math.pow(x,(double)i/factorial(i));
This line should be
Code:
             ex += Math.pow(x,(double)i)/factorial(i);
according to the series e^x=1+x+x^2/2!+...+x^n/n!
(not x^(n/n!) )
 
Old 07-24-2007, 06:31 AM   #4
pixellany
LQ Veteran
 
Registered: Nov 2005
Location: Annapolis, MD
Distribution: Arch/XFCE
Posts: 17,802

Rep: Reputation: 728Reputation: 728Reputation: 728Reputation: 728Reputation: 728Reputation: 728Reputation: 728
What is the algorithm that you intended to code? (I just ran the numbers by hand and it clearly is not converging on the right answer)
 
Old 07-24-2007, 10:22 PM   #5
Dan04
Member
 
Registered: Jun 2006
Location: Texas
Distribution: Ubuntu
Posts: 207

Rep: Reputation: 37
Quote:
Originally Posted by pixellany
What is the algorithm that you intended to code? (I just ran the numbers by hand and it clearly is not converging on the right answer)
It looks like it's supposed to be the MacLaurin series sum(x**n / n! for n in {0, 1, 2, ...}).
 
Old 07-24-2007, 10:27 PM   #6
Dan04
Member
 
Registered: Jun 2006
Location: Texas
Distribution: Ubuntu
Posts: 207

Rep: Reputation: 37
BTW, what type does your factorial function use? Because of overflow, "int" is only accurate up to n=12, and even "long" only gets you to n=20.
 
Old 07-25-2007, 10:28 AM   #7
jiml8
Senior Member
 
Registered: Sep 2003
Posts: 3,171

Rep: Reputation: 114Reputation: 114
In addition to changing it as oami specified, you have to either start i at 0 or add one to the result.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to calculate bandwidth on linux epsharma Linux - Software 4 07-02-2006 10:45 AM
How to calculate Server power needs psychobyte Linux - Hardware 1 08-11-2005 02:59 AM
Calculate in shell script Ephracis Linux - General 1 12-16-2004 11:11 AM
Calculate Interface Traffic JJX Linux - Networking 7 10-22-2004 02:38 AM
Calculate the space of a folder Half_Elf Linux - General 4 05-18-2003 07:53 PM


All times are GMT -5. The time now is 07:16 AM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration