寻找衍生剧本

时间:2011-06-19 00:28:23

标签: javascript math

我正在拼命寻找可以计算函数的一阶导数的JavaScript。该函数始终只包含一个变量x。

e.g. f(x) = x²
  f'(3) = 2x

因此,脚本应该提供结果6,因为2*3 = 6

我希望你知道我的意思。

6 个答案:

答案 0 :(得分:8)

function slope (f, x, dx) {
    dx = dx || .0000001;
    return (f(x+dx) - f(x)) / dx;
}

var f = function (x) { return Math.pow(x, 2); }

slope(f, 3)

答案 1 :(得分:3)

这是一个帮助做这件事的Java库:

http://jscl-meditor.sourceforge.net/

另一个:

http://www.mathtools.net/Java/Mathematics/index.html

您始终可以使用Rhino并导入Java类以在JavaScript中使用。

这是JavaScript的一个:

http://code.google.com/p/smath/wiki/smathJavaScriptAPI

答案 2 :(得分:3)

试试nerdamer

它可以用它来衍生和构建JavaScript函数。

//Derivative of x^2
var result = nerdamer('diff(x^2,x)').evaluate();
document.getElementById('text').innerHTML = "<p>f'(x)="+result.text()+'</p>';
//Build a new function
var f = result.buildFunction();
//Evalute f'(3)
document.getElementById('text').innerHTML += "<p>f'(3)="+f(3).toString()+'</p>';
<script src="http://nerdamer.com/js/nerdamer.core.js"></script>
<script src="http://nerdamer.com/js/Algebra.js"></script>
<script src="http://nerdamer.com/js/Calculus.js"></script>
<div id="text"></div>

答案 3 :(得分:1)

我认为javascript中没有任何内容。

以下是一些简单的解决方案,您需要相应地调整代码:

var func = function(x) {return Math.pow(x, 2)}
function der(x, func, prec, isLeft){
    if(prec == undefined) prec = 0.000000001;
    var y = func(x);
    if(isLeft){
        var x1 = x - prec;
    } else {
        x1 = x + prec;
    }
    var y1 = func(x1);
    return (y1-y)/(x1-x);
}

答案 4 :(得分:0)

您可以使用diff.js执行类似的操作。你可以这样做:

x = range(-10, 10, 0.01); // works only in latest browsers
f = diffXY(x, x.map(F));

这将为您提供f = -10到10的函数F的导数x的值,其中步长为0.01。

答案 5 :(得分:0)

math.js对于我来说这份工作看起来不错。查看this示例:

math.derivative('x^2', 'x')                     // Node {2 * x}
math.derivative('x^2', 'x', {simplify: false})  // Node {2 * 1 * x ^ (2 - 1)
math.derivative('sin(2x)', 'x'))                // Node {2 * cos(2 * x)}
math.derivative('2*x', 'x').evaluate()          // number 2
math.derivative('x^2', 'x').evaluate({x: 4})    // number 8
const f = math.parse('x^2')
const x = math.parse('x')
math.derivative(f, x)                           // Node {2 * x}