{} new Polynomial(randRange(0, 3), randRange(2, 4)) POLYNOMIAL.text() ddxPolynomial(POLYNOMIAL).text() function(x) {return POLYNOMIAL.evalOf(x);} function(x) {return ddxPolynomial(POLYNOMIAL).evalOf(x);} [-2, -1.5, -1, 0, 1, 1.5, 2] [-2.5, 2.5] min.apply(Math, $.map(POINTS, FNX).concat( $.map(POINTS, DDX))) max.apply(Math, $.map(POINTS, FNX).concat( $.map(POINTS, DDX))) [floorTo(-1, YMIN - (YMAX-YMIN)*0.05 ), ceilTo(-1, YMAX + (YMAX-YMIN)*0.05)] {}

f(x) = FNXTEXT

Drag each one of the POINTS.length orange points up and down to adjust the slope of the corresponding tangent line.

The derivative of a function is defined as the slope of a line tangent to the curve at each point. Adjust the slopes of the lines to visually find the derivative \frac{d}{dx} f(x) at each point.

initAutoscaledGraph([ XRANGE, YRANGE], OPTIONS); style({ stroke: "#6495ED", strokeWidth: 3 }, function() { plot( function( x ) { return FNX( x ); }, XRANGE ); }); initDerivativeIntuition(FNX, DDX, POINTS);
\frac{d}{dx} f(OPTIONS.xLabelFormat(X)) = \frac{d}{dx} f(X) = 0
(function(){ var guess = []; $("#answers").find('.answer-label').each(function(label) { guess.push(parseFloat($(this).text())); }); return guess; })()
var allDefault = _(guess).all(function(x) { return x === 0; }); if (allDefault) { return ""; } var correct = _(points).map(function(x) { return roundTo(2, ddx(x)); }); return guess.join() === correct.join();
_(guess).each(function(coordY, i) { setSlope(i, coordY); }); var correct = _(points).map(function(x) { return roundTo(2, ddx(x)); }); if (guess.join() === correct.join()) { revealDerivative(0); }
$("#answers").find('.answer-label').each(function(index, label) { $(label).text(guess.length ? guess[index] : 0); });

The orange curve shows the derivative of f(x). Drag all of the orange points onto the orange curve. Notice how the tangent lines change as you move the orange dots. Pay attention to the relationship between the tangent lines and the blue curve.

revealDerivative();
randFromArray([ { text: "sin(x)", ddxtext: "cos(x)", fnx: function(x) { return Math.sin(x); }, ddx: function(x) { return Math.cos(x); }, xrange: [-1.25*Math.PI, 1.25*Math.PI], yrange: [ -1.25, 1.25 ], points: [ -1*Math.PI, -3*Math.PI/4, -Math.PI/2, -Math.PI/4, 0, Math.PI/4, Math.PI/2, 3*Math.PI/4, Math.PI ], options: { xLabelFormat: piFraction } }, { text: "cos(x)", ddxtext: "-sin(x)", fnx: function(x) { return Math.cos(x); }, ddx: function(x) { return -Math.sin(x); }, xrange: [-1.25*Math.PI, 1.25*Math.PI], yrange: [ -1.25, 1.25 ], points: [ -1*Math.PI, -3*Math.PI/4, -Math.PI/2, -Math.PI/4, 0, Math.PI/4, Math.PI/2, 3*Math.PI/4, Math.PI ], options: { xLabelFormat: piFraction } }, { text: "e^x", ddxtext: "e^x", fnx: function(x) { return Math.exp(x, Math.E); }, ddx: function(x) { return Math.exp(x, Math.E); }, xrange: [-5, 5], yrange: [ -5, 15 ], points: [ -2, -1, 0, 1, 2 ], options: {} }, { text: "ln(x)", ddxtext: "\\frac{1}{x}", fnx: function(x) { return Math.log(x); }, ddx: function(x) { return 1/x; }, xrange: [ 0.001, 5 ], yrange: [ -5, 5 ], points: [ 0.25, 0.5, 1, 2, 3, 4 ], options: { range: [ [ -0.25, 4.75 ], [ -5, 5 ] ] } } ]) SCENARIO.text SCENARIO.ddxtext SCENARIO.fnx SCENARIO.ddx SCENARIO.xrange SCENARIO.yrange SCENARIO.points SCENARIO.options || {}