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.
典型的 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)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n请注意,对称线相对于示例图片发生了移动。要使 tanh 图看起来更像您的示例,只需将其向上和向右移动:
\n\ny = 1 + (e^(2x - 6) - 1) / (e^(2x - 6) + 1)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n在 JavaScript 中,您可以最有效地实现此表达式:
\n\nexp2x = Math.exp(2*x)\ny = (exp2x - 1) / (exp2x + 1)\nRun Code Online (Sandbox Code Playgroud)\n\n好的,如果您希望 y 的范围从 0 到 100,x 的范围从 0 到 100,那么您可能想尝试
\n\ny = 50 + 50*tanh((x\xe2\x88\x9250)/10)\nRun Code Online (Sandbox Code Playgroud)\n\n看起来像
\n\n\n\n现在
\n\ny = 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)\nRun Code Online (Sandbox Code Playgroud)\n\n误差函数 erf 看起来非常相似,但计算起来要困难得多(除非 JavaScript 有内置的 erf 函数)。
\n\nRyan(OP)补充道:已实施!
\n\nvar 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}\nRun Code Online (Sandbox Code Playgroud)\n