2014-10-17 58 views
1

首先,如果有更好的方法來格式化數學方程式,我找不到任何東西,但唉,表達式很短。嘗試使用因子來簡化表達式

作爲一個分配問題的一部分,我必須在C中生成一些代碼來評估x^n/n!對於一個任意的x,並且n = {1-10,50,100}

我總是可以用大量的庫蠻力,但我想知道如果有人有更好的數學技能,那麼我可以建議一個更好的算法(n!)...

我知道我可以將分子分成x ^(n/2)x ^(n/2),偶數的值爲n,x x對於n的奇數值,^(n-1/2)* x ^(n-1/2)。而且我可以進一步將其改爲n/2的對數基x。

但我堅持多種原因:

1 - 我不認爲計算這些變化的任何實際上使一個很大的區別,因爲他們是不是真的幫助我減少大量乘法我必須執行,或者他們的總體數量。

2 - 即使我想起n!作爲1 * 2 * 3 * ... *(n-1)* n,我仍然不能合理化簡化整體方程的好方法。

3 - 我已經看過Karatsuba的乘法算法,雖然這是一種可能性,但對編程問題的介紹看起來有點複雜。

所以我想知道你們是否可以想到任何中間立場。我喜歡解釋,直接的答案,如果你有時間:)

乾杯,

+0

http://en.wikipedia.org/wiki/Gamma_function – Barmar 2014-10-17 23:34:11

+0

呃,我的不好。我應該早點看到過這個。該解決方案的總體目標是通過x^n/n!的總和來近似e^x的值。因此,使用一個需要e^x作爲因子的函數將無法正常工作......不錯的建議。 – 2014-10-17 23:49:40

+0

爲什麼你需要這樣做?是否有一種編程語言沒有函數來計算'e^x'? – Barmar 2014-10-17 23:52:03

回答

2

我的建議是計算的總和(把它們放在一個數組)的所有條款,然後以相反的順序總結起來(即從最小到最大) - 可以稍微降低舍入誤差。

請注意,您可以通過x/k相乘計算從前面的一個k個名詞 - 你不需要永遠計算x^nn!直接(這很重要)。

+0

關於以相反順序進行求和的好處。首先添加小條款可確保您獲得儘可能高的精度。 – eigenchris 2015-03-09 19:22:05