2005-10-25

exponential

/*無視窗:本來想用JOptionPane的,不過電腦教室的電腦會整個卡住動不了,所以後來改寫了*/

package exponential;
import java.io.*;
//今天新學的省略方法,不過容量會變大
public class exponential
{
public static void main(String[] args) throws IOException
{
BufferedReader keyin= new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the number x of e^x.");
int x = Integer.parseInt(keyin.readLine());
System.out.println("Please make the number n be :");
int n = Integer.parseInt(keyin.readLine());
/*所輸入的n值大小會影響最外層回圈的執行次數,同時影響泰勒展開式的準確度。(這裡不侷限於n=10或50或100) */
double p,q,r,s,a,sum=0;
for(p=0;p<=n;p++)
{
r=1;
//剛開始這邊忘記將r重新給定1,所以跑出的數據怪怪的
for(q=p;q>0;q--)
r=r*q;
//所得的r=p!
a=1;
//問題同r=1
for(s=p;s>0;s--)
a=a*x;
//所得的a=x的p次方
/*因為不曉得Java的指數該怎麼表示,本來用"^"試試看,但是數字不太對。剛剛一查,原來那個是XOR的意思...,山不轉路轉,改用for迴圈去等效表示指數*/
sum=sum+(a/r);
//a/r=(x^p)/p! , 再利用sum去累加
}
System.out.println("e^x = "+sum);
//顯示結果
}
}

0 Comments:

張貼留言

<< Home