什么样的算法制作这样的曲线(img)&可以在javascript中为flot完成吗?

Met*_*uru 5 javascript math flot

你能给我一个算法的例子吗? alt text http://ryancalderoni.com/archive/ideal_curve.jpg

编辑:然后我将如何使用Javascript计算数学?有人可以添加吗?很抱歉最初不包含该上下文..

注意:我使用'flot'来绘制它,flot的输入是一个像这样的javascript数组:

[[X,Y],[X,Y],[X,Y] ...]

因此,给定改变曲线的值,我将所有点输出到带有循环的数组,然后将其吐出到flot to graph.

And*_*and 4

典型的 S 型曲线是 tanh(x) 曲线。

\n\n

根据定义,

\n\n
  tanh(x) = sinh(x) / cosh(x) =\n          = [(1/2) (e^x - e^-x)] / [(1/2) (e^x + e^-x)] =\n          = (e^x - e^-x) / (e^x + e^-x) = \n          = (e^(2x) - 1) / (e^(2x) + 1)\n
Run Code Online (Sandbox Code Playgroud)\n\n


(高分辨率)

\n\n

请注意,对称线相对于示例图片发生了移动。要使 tanh 图看起来更像您的示例,只需将其向上和向右移动:

\n\n
y = 1 + (e^(2x - 6) - 1) / (e^(2x - 6) + 1)\n
Run Code Online (Sandbox Code Playgroud)\n\n


(高分辨率)

\n\n

在 JavaScript 中,您可以最有效地实现此表达式:

\n\n
exp2x = Math.exp(2*x)\ny = (exp2x - 1) / (exp2x + 1)\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新(再次)

\n\n

好的,如果您希望 y 的范围从 0 到 100,x 的范围从 0 到 100,那么您可能想尝试

\n\n
y = 50 + 50*tanh((x\xe2\x88\x9250)/10)\n
Run Code Online (Sandbox Code Playgroud)\n\n

看起来像

\n\n


(高分辨率)

\n\n

现在

\n\n
y = 50 + 50 * tanh((x\xe2\x88\x9250)/10)\n  = 50 + 50 * (e^((x\xe2\x88\x9250)/5) - 1) / (e^((x\xe2\x88\x9250)/5) + 1)\n
Run Code Online (Sandbox Code Playgroud)\n\n

误差函数 erf 看起来非常相似,但计算起来要困难得多(除非 JavaScript 有内置的 erf 函数)。

\n\n
\n\n

Ryan(OP)补充道:已实施!

\n\n
var y = 50 + 50 * tanh((n-50)/10);\n\nfunction tanh (arg) {\n    return (Math.exp(arg) - Math.exp(-arg)) / (Math.exp(arg) + Math.exp(-arg));\n}\n
Run Code Online (Sandbox Code Playgroud)\n