Типичной сигмовидной кривой является кривая 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
(в высоком разрешении)
Обратите внимание, что линии симметрии смещены относительно вашего образца изображения.Чтобы график тана больше походил на ваш пример, просто переместите его вверх и вправо:
y = 1 + (e^(2x - 6) - 1) / (e^(2x - 6) + 1)
http://privat.rejbrand.se/tanh2.png
(в высоком разрешении)
В JavaScript вы наиболее эффективно реализуете это выражение как
exp2x = Math.exp(2*x)
y = (exp2x - 1) / (exp2x + 1)
Update (снова)
OK, если вы хотите, чтобы y находилось в диапазоне от 0 до 100, а x - в диапазоне отОт 0 до 100, чем вы можете попробовать
y = 50 + 50*tanh((x−50)/10)
, который выглядит как
http://privat.rejbrand.se/tanh3.png
(высокое разрешение)
Теперь
y = 50 + 50 * tanh((x−50)/10)
= 50 + 50 * (e^((x−50)/5) - 1) / (e^((x−50)/5) + 1)
Функция ошибки, erf, выглядит довольно похоже, но намного сложнее для вычисления (если в JavaScript нет встроенной функции erf).
Райан (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));
}