Derivatives and the Shape of a Graph
Author: Marc Renault

Shape f

Show f '

Show f "

Position f

U / D

L / R

a
b
c
d

Show where f is...

Increasing

Decreasing

Concave Up

Concave Down

Show f

panelWidth = 182.2
panel, d_1 = CreatePanel(panelWidth)
n = 3.9 (slider from -10 to 20, step 0.1)
m = 7 (slider from 0 to 20, step 0.1)
screenRight: x(Corner[2])
screenLeft: x(Corner[1])
a = -0.071 (slider from -0.3 to 0.3, step 0.0010)
b = 0.14 (slider from -1 to 1, step 0.01)
c = 0.48 (slider from -3 to 3, step 0.01)
d = 0.37 (slider from -3 to 3, step 0.01)
f(x) = a * (x - m)^(4) + b * (x - m)^(3) + c * (x - m)^(2) + d * (x - m) + n
Df = Derivative(f)
DDf = Derivative(Df)
ExtList = RemoveUndefined({(screenLeft, f(screenLeft)), Extremum[f], (screenRight, f(screenRight))})
tfShowDf = false
tfShowDDf = false
inc = If(a > 0, 0, If[a < 0, 1, If[b > 0, 1, If[b < 0, 0, If[c > 0, 0, If[c < 0, 1, If[d > 0, 1, If[d > 0, 0, 0]]]]]]])
text3: a + ""
text4: b + ""
text5: c + ""
text6: d + ""
ExtXList: x(ExtList)
up1 = Function(f, Element[ExtXList, 2 - inc], Element[ExtXList, 3 - inc])
up2 = Function(f, Element[ExtXList, 4 - inc], Element[ExtXList, 5 - inc])
down1 = Function(f, Element[ExtXList, 1 + inc], Element[ExtXList, 2 + inc])
down2 = Function(f, Element[ExtXList, 3 + inc], Element[ExtXList, 4 + inc])
tfInc = false
tfDec = false
InfList = RemoveUndefined({(screenLeft, f(screenLeft)), TurningPoint[f], (screenRight, f(screenRight))})
InfXList: x(InfList)
conup: 1 - inc
cu1 = Function(f, Element[InfXList, 2 - conup], Element[InfXList, 3 - conup])
cu2 = Function(f, Element[InfXList, 4 - conup], Element[InfXList, 5 - conup])
cd1 = Function(f, Element[InfXList, 1 + conup], Element[InfXList, 2 + conup])
cd2 = Function(f, Element[InfXList, 3 + conup], Element[InfXList, 4 + conup])
tfCU = false
tfCD = false
tfShowf = true

Tool: Create Panel (command CreatePanel)
Enter panel width in pixels
Input: panelPixelWidth
Output: panel, panelBorder

panel, a, panelBorder, c, d = Polygon(Corner[1], (x(Corner[1]) + panelPixelWidth / x(Corner[5]) * (x(Corner[2]) - x(Corner[1])), y(Corner[1])), (x(Corner[1]) + panelPixelWidth / x(Corner[5]) * (x(Corner[2]) - x(Corner[1])), y(Corner[4])), Corner[4])