我正在拼命寻找可以计算函数的一阶导数的JavaScript。该函数始终只包含一个变量x。
e.g. f(x) = x² f'(3) = 2x
因此,脚本应该提供结果6,因为2*3 = 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的一个:
答案 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}