[爆卦]e的計算是什麼?優點缺點精華區懶人包

為什麼這篇e的計算鄉民發文收入到精華區:因為在e的計算這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者coilion9670 (白熊)看板C_and_CPP標題[問題] 數學式程式時間Mon Oct...

e的計算 在 BusinessFocus | 商業、投資、創科平台 Instagram 的最讚貼文

2021-09-17 18:42:26

【@marketfocus.hk 】【龔成專欄】市盈率太高太低同樣易有陷阱 25倍以上股票屬偏高 初哥不宜沾手 . 【引言】財經書籍作者及股評人龔成認為,投資股票一定要對公司有認識,如果連基本的財經知識如「市盈率(PE RATIO)」也不懂,那麼便「不如不要投資」。龔成稱,市盈率就是股票市價除以盈利...


開發平台(Platform): VC++


問題(Question):
1) 撰寫一個程式計算數學常數e的趨近值。


1 1 1
e= 1 + 一 + 一 + 一 + ....
1! 2! 3!



2) 寫一個程式計算e^x的值



x x^2 x^3
e^x = 1 + 一 + 一 + 一 + ...
1! 2! 3!



老師出這兩題有沒有大神能幫一下
完全沒頭緒這程式的寫法
小弟現在大一剛學C++
希望有人能幫我解惑'
感謝 Oㄇ_


剛剛沒把公式key上來抱歉
小弟馬上補!!


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.194.70
tropical72:e^x = 1+x/1 + x^2/2! + x^3/3!+....+x^n/n!. 10/17 01:08
james732:1.先把數學公式找出來 2.想辦法把公式轉成程式 10/17 01:10
coilion9670:老師也給我們了公式但是我還是寫不出來QQ 10/17 01:13
tropical72:為表示誠意, 請先交上你的屍體. 10/17 01:14
james732:至少把公式貼上來吧,難不成還要板友自己找? 10/17 01:15
james732:對了,請善用大寫E修改文章... 10/17 01:17
※ 編輯: coilion9670 來自: 140.128.194.70 (10/17 01:21)
james732:那你可以先把階層的程式碼寫出來嗎?如果叫你算 5! 的話 10/17 01:23
biblegodbles:沒屍體的話建議去奇摩知識碰運氣 10/17 01:29
coilion9670:QQ 甚麼是階層的程式碼... 10/17 01:32
coilion9670:完全無解又不懂 :(((( 10/17 01:32
biblegodbles:意思是要你先寫一個計算階層的程式碼 例如input: 10/17 01:33
biblegodbles:output: 120 10/17 01:33
biblegodbles:input: 5! 10/17 01:34
james732:好吧,我先問,你希望板友引導你寫出來,還是想要答案? 10/17 01:46
coilion9670:想要答案還有我要懂為什麼 10/17 01:49
tropical72:(1) 1+2+3+...+n (2) 1/1+1/2+1/3+..+1/n,這兩題會嗎? 10/17 01:52
johnhmj:階乘是不是一定要用大數演算?我想到的只有這個 (._.?) 10/17 01:53
coilion9670:會! 10/17 01:53
tropical72:別忘了 e 是浮點數, 所以這裡的階乘用不到大數.. 10/17 01:54
tropical72:嗯, 那可以回文慢慢聊了.. 10/17 01:54
amozartea:其實cmath/maht.h裡面就有exp...不過不保證這樣寫有分 10/17 01:57
bigpigbigpig:大數?用不到吧?一直除的東西叫做小數,不需要大數 10/17 08:47

> -------------------------------------------------------------------------- <

作者: tropical72 (藍影) 看板: C_and_CPP
標題: Re: [問題] 計算 Exponential function 函數值
時間: Mon Oct 17 02:25:30 2011

※ 引述《coilion9670 (白熊)》之銘言:
: 開發平台(Platform): VC++

先來看第一個無聊的問題

(1) 1+2+....+n

int i, n, sum=0;
scanf("%d", &n);
for(i=1; i<=n; i++)
sum = sum+i;

(2) n!

階乘函數,它的狹益定義是: n! = n*(n-1)*(n-2)*...*1 ,
像 5! = 5*4*3*2*1 = 120,

所以先寫個 n! 之副函式,也由於用整數會溢位 (不知道溢位的話請 google),

所以用浮點數去存結果,下面是計算 i 階層函數大概長這樣 (不考慮負數情況)

int j, i=10;
double fact=1.0;
for(j=1; j<=i;j++)
fact = fact * j;

最後 fact 就是 10! (10階乘)


(3) 1/1 + 1/2 + 1/3 + ....+ 1/n

仿造問題 (1) 的 1+2+3+...+n, 只有一部份要修改而已。

int i, n, sum=0;
scanf("%d", &n);
for(i=1; i<=n; i++)
sum = sum + 1.0/i;


(4) 1+(1/1!+1/2!+1/3!+...+1/n!)

對照上面程式(2)與程式(3)
其中程式 (3) 只有一點小變化

int i, j;
int n=20; // 有 n 項
double fact; // 存 i 階乘
double sum=1.0; // 存 公式總合, 初始給 1.0

for(i=1; i<=n; i++) { // 有 n 個項次

// 算 i 階乘, 來自程式 (2)
fact=1.0;
for(j=1; j<=i; j++) fact = fact*j;

// 算倒數合,來自程式 (3)
// 程式 (3) : sum = sum + 1.0/i;
sum = sum + (double)i/fact;
}

最後 sum 的結果,就是你下面第一題的答案。

: 1) 撰寫一個程式計算數學常數e的趨近值。
: 1 1 1
: e= 1 + 一 + 一 + 一 + ....
: 1! 2! 3!

: 2) 寫一個程式計算e^x的值
: x x^2 x^3
: e^x = 1 + 一 + 一 + 一 + ...
: 1! 2! 3!

(5) 1+(x/1!+x^2/2!+x^3/3!+...+x^n/n!)

比照上面的程式 (4), 做以下修改

int i, j;
int n=20; // 有 n 項
double fact; // 存 i 階乘
double sum=1.0; // 存 公式總合, 初始給 1.0
double power; // 存 x 的 i 次方
double x=0.0;

printf("輸入 x 值 :"), scanf("%lf", &x);
printf("輸入 n 項 :"), scanf("%d", &n); // 這個可自己定 20~100試試

for(i=1; i<=n; i++) { // 有 n 個項次

// 算 i 階乘, 來自程式 (2)
fact=1.0;
for(j=1; j<=i; j++) fact = fact*j;

// 算 x 的 i 次方
power=1.0;
for(j=1; j<=i; j++) power = power * x;

// 算倒數合,來自程式 (3)
// 原本程式 (4) --> sum = sum + (double)i/fact; 換下面
sum = sum + power/fact;
}

printf("e^%d = %lf\n", x, sum);

---------



(1) 上面用的方法效率非常差,但適合初學者學習。
(2) 可調用 math.h 裡之 pow 協助完成,此處自己寫。
(3) 這題可以包三個副函式:power(算次方)、fact(算階乘)、ex(算 e^x),
考量沒學到副函式,所以全塞在主程式裡面。
(4) 基於考量初學者對 eps 概念不強,以定式 n 項方式寫,不以 eps 方式做收斂。
(5) If those codes can work, it was coded by me;
otherwise, I don't know who wrote those.

good luck.


你可能也想看看

搜尋相關網站