典型的S形曲線是tanh(x)曲線。
根據定義,
tanh(x) = sinh(x)/cosh(x) =
= [(1/2) (e^x - e^-x)]/[(1/2) (e^x + e^-x)] =
= (e^x - e^-x)/(e^x + e^-x) =
= (e^(2x) - 1)/(e^(2x) + 1)
http://privat.rejbrand.se/tanh.png
(High-res)
注意對稱線相對於你的樣品圖片移動。爲了使正切曲線看起來更像你的榜樣,只需將其向上和向右:
y = 1 + (e^(2x - 6) - 1)/(e^(2x - 6) + 1)
http://privat.rejbrand.se/tanh2.png
(High-res)
在JavaScript中,你最有效地爲
exp2x = Math.exp(2*x)
y = (exp2x - 1)/(exp2x + 1)
實現這個表達式更新(再次)
好的,如果你想讓y的範圍從0到100,而x的範圍從0到100,t韓你可能想嘗試
y = 50 + 50*tanh((x−50)/10)
它看起來像
http://privat.rejbrand.se/tanh3.png
(High-res)
現在
y = 50 + 50 * tanh((x−50)/10)
= 50 + 50 * (e^((x−50)/5) - 1)/(e^((x−50)/5) + 1)
誤差函數,ERF,看起來頗爲相似,但多計算更加困難(除非JavaScript具有內置的erf樂趣ction)。
瑞恩(OP)補充說:實現!
var y = 50 + 50 * tanh((n-50)/10);
function tanh (arg) {
return (Math.exp(arg) - Math.exp(-arg))/(Math.exp(arg) + Math.exp(-arg));
}
上math.stackexchange更好?編輯:不知道有兩個。 – James 2010-08-13 18:53:10
您可能想嘗試在http://math.stackexchange.com/處詢問。 StackOverflow適用於與編程相關的問題。 – derekerdmann 2010-08-13 18:53:19
@詹姆斯:不,絕對不會。數學溢出是針對研究水平的數學問題,而不是針對本科生可能思考的問題(主要是,至少)。請停止爲你在這裏看到的每個數學問題推薦一個,因爲它通常在那裏超出範圍。 – Joey 2010-08-13 18:54:45