2011-08-28 33 views
1

我有一個值,例如2.8。我想找到10個指數曲線上的數字,它們和這個數值相加。如何找到10個值,按指數分佈,總計爲一個值,x

也就是說,我想最終得到10個總和爲2.8的數字,當繪製時,它看起來像下面的曲線(指數衰減)。這10個數字應該沿着曲線等間隔 - 也就是說,值之間的「x-step」應該是恆定的。

Exponential Decrease

的2.8這個值將用戶輸入的,因此我計算方式這就需要將某種算法,我可以計劃(因而對SO不Math.SE問這個)。

我不知道該從哪裏開始 - 任何想法?

+0

你是如何繪製編號在圖上?圖形由成對的數字組成,而不僅僅是數字。你的y值是10個數字,但是x值是多少? – Danish94

+0

理想情況下,我想用1到10的x值來做到這一點。這有幫助嗎? – robintw

+0

@robintw:對於給定的x值,y值已經固定(e^-1,e^-2,...),否?或者你可以縮放曲線嗎?在這種情況下,你的問題將變得微不足道。 –

回答

3

您希望具有10個均等分佈的值,即x_k = a + k * b。他們將履行總和(exp(-x_k))= v,其中v是你的目標值(2.8)。這意味着exp(-a)* sum(exp(-b)^ k)= v

顯然,如果v是正數,每個選項都有一個解。將b設置爲任意值,並從中計算出一個值。

例如對於v = 2.8和b = 0.1,得到a = -log(v/sum(exp(-b)^ k))= -log(2.8/sum(0.90484^k))= -log(2.8/6.6425) = -log(0.421526)= 0.86387。

所以在這個例子中,X值是0.86387,0.96387,...,1.76387和y的值0.421526,0.381412,0.345116,0.312274,0.282557,0.255668,0.231338,0.209324,0.189404,0.171380。

更新:

正如已闡明該曲線可以任意縮放的,而XS是優選的爲1,2,3 ... 9,這是更簡單的。

假設曲線函數是r * exp(-x),則10個值將是r * exp(-1)... r * exp(-9)。它們的總和是r * sum(exp(-x))= r * 0.58190489。因此,要達到一定的值(2.8),你只需要調整相應的R:

R = 2.8 /總和(EXP(-x))= 4.81178294

,你會得到10個值:1.770156,0.651204 ,0.239565,0.088131,0.032422,0.011927,0.004388,0.001614,0.000594。

1

如果我理解你的問題正確,那麼你想找到x解決了方程

是可以解決的

(算了筆數字作爲幾何級數)

下的等式對於2.8或其他任何正數,將始終有1個不同於1的實數正方形。你可以使用一些root-finding算法解決它(1始終是一個根,但它不能解決原始任務)。對於常數a,你可以選擇你喜歡的任何數字。

計算完x後,您可以很容易計算出10個數字爲

1

我要概括和假設你想要N個數總和爲V.

由於您的號碼同樣對指數間隔你可以寫你的總和爲

a + a*x + a*x^2 + ... + a*x^(N-1) = V 

凡第一點擁有價值a,第二a*x

你可以拿出一個因素a並獲得:

a (1 + x + x^2 + ... + x^(N-1)) = V 

如果我們隨意拿起x那麼我們就可以解決了容易

a = V/(1 + x + x^2 + .. x^(N-1)) 
    = V*(x+1)/(x^N-1) 

代是回

a, a*x, a*x^2, ..., a*x^(N-1) 

給出所需的序列

相關問題