randRangeNonZero(-5, 5) randRangeNonZero(-5, 5) randRangeNonZero(-5, 5) A === 1 ? "" : A === -1 ? "-" : A H + 1 A * (X1 - H) * (X1 - H) + K H - 1 A * (X2 - H) * (X2 - H) + K

Graph the following equation:

graphInit({ range: 11, scale: 20, axisArrows: "<->", tickStep: 1, labelStep: 1, gridOpacity: 0.05, axisOpacity: 0.2, tickOpacity: 0.4, labelOpacity: 0.5 }); label( [ 0, 11 ], "y", "above" ); label( [ 11, 0 ], "x", "right" ); addMouseLayer(); graph.pointA = addMovablePoint({ coord: [ 5, 5 ], snapX: 0.5, snapY: 0.5, normalStyle: { stroke: KhanUtil.BLUE, fill: KhanUtil.BLUE } }); graph.pointB = addMovablePoint({ coord: [ -5, 5 ], snapX: 0.5, snapY: 0.5, normalStyle: { stroke: KhanUtil.BLUE, fill: KhanUtil.BLUE } }); graph.pointC = addMovablePoint({ coord: [ 0, 5 ], snapX: 0.5, snapY: 0.5, normalStyle: { stroke: KhanUtil.BLUE, fill: KhanUtil.BLUE } }); // returns true if the three points don't form a parabola (that opens vertically) graph.invalid = function( p1, p2, p3 ) { return ( ( p1[ 0 ] - p2[ 0 ] ) * ( p1[ 0 ] - p3[ 0 ] ) * ( p2[ 0 ] - p3[ 0 ] ) === 0 ); }; // Fits a parabola to 3 points graph.fitParabola = function( p1, p2, p3 ) { var denom = (p1[0] - p2[0]) * (p1[0] - p3[0]) * (p2[0] - p3[0]); if ( denom !== 0 ) { var A = (p3[0] * (p2[1] - p1[1]) + p2[0] * (p1[1] - p3[1]) + p1[0] * (p3[1] - p2[1])) / denom; var B = ((p3[0] * p3[0]) * (p1[1] - p2[1]) + (p2[0] * p2[0]) * (p3[1] - p1[1]) + (p1[0] * p1[0]) * (p2[1] - p3[1])) / denom; var C = (p2[0] * p3[0] * (p2[0] - p3[0]) * p1[1] + p3[0] * p1[0] * (p3[0] - p1[0]) * p2[1] + p1[0] * p2[0] * (p1[0] - p2[0]) * p3[1]) / denom; return [ A, B, C ]; } else { return [ 0, 0, 0 ]; } }; // A and B can't be in the same place graph.pointA.onMove = function( x, y ) { if ( graph.invalid( [ x, y ], graph.pointB.coord, graph.pointC.coord ) ) { return false; } graph.pointA.coord = [ x, y ]; graph.drawParabola(); }; graph.pointB.onMove = function( x, y ) { if ( graph.invalid( graph.pointA.coord, [ x, y ], graph.pointC.coord ) ) { return false; } graph.pointB.coord = [ x, y ]; graph.drawParabola(); }; graph.pointC.onMove = function( x, y ) { if ( graph.invalid( graph.pointA.coord, graph.pointB.coord, [ x, y ] ) ) { return false; } graph.pointC.coord = [ x, y ]; graph.drawParabola(); }; graph.parabola = bogusShape; graph.drawParabola = function() { graph.parabola.remove(); var coeffs = graph.fitParabola( graph.pointA.coord, graph.pointB.coord, graph.pointC.coord ); style({ stroke: KhanUtil.BLUE }, function() { // Plot the parabola var a = coeffs[0], b = coeffs[1], c = coeffs[2]; graph.parabola = parabola(a, b, c); graph.parabola.toBack(); }); }; graph.drawParabola(); graph.showSolution = function() { $( "html, body" ).animate({ scrollTop: $( ".question" ).offset().top }, { duration: 500, easing: "swing", complete: function() { var coords = { x1: graph.pointA.coord[0], y1: graph.pointA.coord[1], x2: graph.pointB.coord[0], y2: graph.pointB.coord[1], x3: graph.pointC.coord[0], y3: graph.pointC.coord[1] }; $( coords ).delay( 100 ).animate({ x1: X1, y1: Y1, x2: X2, y2: Y2, x3: H, y3: K }, { duration: 500, easing: "linear", step: function( now, fx ) { coords[ fx.prop ] = now; graph.pointA.setCoord([ coords.x1, coords.y1 ]); graph.pointB.setCoord([ coords.x2, coords.y2 ]); graph.pointC.setCoord([ coords.x3, coords.y3 ]); graph.drawParabola(); } }); } }); };
Drag the three points to graph the equation.
[graph.pointA.coord, graph.pointB.coord, graph.pointC.coord]
var coeffs = graph.fitParabola(graph.pointA.coord, graph.pointB.coord, graph.pointC.coord); if (coeffs[0] === 0 && coeffs[1] === 0 && coeffs[2] === 5) { return ""; } return abs(A - coeffs[0]) < 0.001 && abs((-2 * A * H) - coeffs[1]) < 0.001 && abs((A * H * H + K) - coeffs[2]) < 0.001;
graph.pointA.setCoord(guess[0]); graph.pointB.setCoord(guess[1]); graph.pointC.setCoord(guess[2]); graph.drawParabola();

`\qquad y = A_DISP(x - H)^2 + K`

`y = A_DISPx^2 + -2 * A * Hx + A * H * H + K`

We could try plugging in some different `x`-values, but instead of guessing it might be easier to convert the equation to vertex form.

Convert the equation to vertex form by completing the square. [Show me how]

First, move the constant term to the left side of the equation:

`\qquad \begin{eqnarray} y &=& Ax^2 + -2 * A * Hx + A * H * H + K \\ \\ y + -A * H * H - K &=& Ax^2 + -2 * A * Hx \end{eqnarray}`

Next, we can factor out a `A` from the right side:

`\qquad y + -A * H * H - K = A_DISP(x^2 + -2 * Hx)`

We can complete the square by taking half of the coefficient of our `x` term, squaring it, and adding it to both sides of the equation. The coefficient of our `x` term is `-2 * H`, so half of it would be `-H`, and squaring that gives us `H * H`. Because we're adding the `H * H` inside the parentheses on the right where it's being multiplied by `A`, we need to add `A * H * H` to the left side to make sure we're adding the same thing to both sides.

`\qquad \begin{eqnarray} y + -A * H * H - K &=& A_DISP(x^2 + -2 * Hx) \\ \\ y + -A * H * H - K + \blue{A * H * H} &=& A_DISP(x^2 + -2 * Hx + \blue{H * H}) \\ \\ y - K &=& A_DISP(x^2 + -2 * Hx + H * H) \end{eqnarray}`

Now we can rewrite the expression in parentheses as a squared term:

`\qquad y - K = A_DISP(x - H)^2`

Move the constant term to the right side of the equation. Now the equation is in vertex form:

`\qquad y = A_DISP(x - H)^2 + K`

`\qquad y = A_DISP(x - H)^2 + K`

When the equation is written in vertex form like this, the vertex is the point `(h, k)`:

`\qquad y = a(x - \green{h})^2 + \green{k}`

`\qquad y = A_DISP(x - \green{H})^2 + \green{K}`

Examining our equation, we can see the vertex of the parabola is at `(H, K)`.

style({ stroke: GREEN, strokeWidth: 3 }, function() { line( [ H - 0.3, K - 0.3 ], [ H + 0.3, K + 0.3 ] ).toBack(); line( [ H - 0.3, K + 0.3 ], [ H + 0.3, K - 0.3 ] ).toBack(); });

To find another point on the parabola, we can try plugging an `x` value into the equation.

Since the vertex is at `x = H`, let's try one unit to the right and evaluate the equation at `x = X1`.

`\qquad \begin{eqnarray} A_DISP(\pink{x} - H)^2 + K &=& y \\ \\ A_DISP(\pink{X1} - H)^2 + K &=& \pink{Y1} \end{eqnarray}`

Another point on the parabola is `(X1, Y1)`

style({ stroke: PINK, strokeWidth: 3 }, function() { line( [ X1 - 0.3, Y1 - 0.3 ], [ X1 + 0.3, Y1 + 0.3 ] ).toBack(); line( [ X1 - 0.3, Y1 + 0.3 ], [ X1 + 0.3, Y1 - 0.3 ] ).toBack(); });

A parabola has an axis of symmetry that passes through its vertex.

style({ stroke: GREEN, strokeDasharray: "-" }, function() { line( [ H, -11 ], [ H, 11 ] ).toBack(); });

Because the parabola is symmetric, we can reflect the point `(X1, Y1)` across the axis of symmetry to get another point, `(X2, Y2)`, that must also be on the parabola.

style({ stroke: ORANGE, strokeWidth: 3 }, function() { line( [ X2 - 0.3, Y2 - 0.3 ], [ X2 + 0.3, Y2 + 0.3 ] ).toBack(); line( [ X2 - 0.3, Y2 + 0.3 ], [ X2 + 0.3, Y2 - 0.3 ] ).toBack(); });

There is only one graph of a parabola that passes through all three points we found.