作者yauhh (喲)
看板C_and_CPP
標題Re: [問題] recursive Eule
時間Mon May 2 20:53:34 2011
※ 引述《bleed1979 (十三)》之銘言:
: 其實用內建型別再怎麼逼近都太無趣了,能顯示多少。
: 使用大數計算,我們來逼近e的小數點以下精確1000位以上。
: 在公式e^x = 1 + x + x^2/2! + x^3/3! + x^3/3! + x^n/n!
: x代1得到 e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n!
: 如果n = 4,
: 則整理一下會發現 e = (1 + 1/1 * (1 + 1/2 * (1 + 1/3 * (1 + 1/4))))
: 所以只要能算出1/n,使用遞迴就可以解決。
接著你的討論,想問個問題.
計算放到現實總是相當討厭,會碰到具體的限制. 就一般所知道,浮點數
在加減法方面會有一點點不精確性,而在乘除法方面則會因此產生成倍數的不精確.
於是,你將一個 e 遞迴在除法上,則除一次,除二次,除三次, ...,
不精確性一直累積出來.
同樣一個 e, 我可能拆成 1 + 1/1! + 1/2! + 1/3! + ... + 1/n!,
分母先自己乘,因為都是整數所以分母沒有不精確性,然後每項分別除,然後加總.
雖然除了蠻多次,但是因為除法是包含在同一層加法裡頭,所以不精確性比連除好幾次
少很多(吧?).
那麼,請問你解這個問題,該如何檢查先加再除或先除再加的精確性?
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.226.35
推 tropical72:補一下,驗證該程式 100 位, 是無誤的。 05/02 21:44
推 yoco315:小y寶貝,人家第二行前六個字寫的很清楚 05/02 21:55
→ yoco315:如果你沒看到,檢查一下你的螢幕..........或是你的眼睛... 05/02 21:56