randRangeNonZero( -5, 5 ) randRangeNonZero( -5, 5 ) randRangeNonZero( -5, 5 ) A === 1 ? "" : A === -1 ? "-" : A

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() { graph.parabola = plot( function( x ) { return coeffs[0] * x * x + coeffs[1] * x + coeffs[2]; }, [ -11, 11 ] ); 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();
H + 1 A * ( X1 - H ) * ( X1 - H ) + K H - 1 A * ( X2 - H ) * ( X2 - H ) + K [ parse( "y &= a( x - #{h})^2 + #{k}", [ GREEN, GREEN ] ), parse( "y &= " + A_DISP + "( x - #{" + H + "})^2 + #{" + K + "}", [ GREEN, GREEN ] ) ] [ parse( A_DISP + "( #{x} - " + H + ")^2 + " + K + " &=& y", [ PINK ] ), parse( A_DISP + "( #{" + X1 + "} - " + H + ")^2 + " + K + " &=& #{" + Y1 + "}", [ PINK, PINK ] ) ] [ parse( "y &= " + plus( A + "x^2", ( -2 * A * H ) + "x", ( A * H * H + K ) ) ), parse( "y + " + ( -A * H * H - K ) + " &= " + plus( A + "x^2", ( -2 * A * H ) + "x" ) ), ] [ parse( plus( "y", ( -A * H * H - K ) ) + " = " + A_DISP + "(" + plus( "x^2", ( -2 * H ) + "x" ) + ")" ), ] [ parse( plus( "y", ( -A * H * H - K ) ) + " &= " + A_DISP + "(" + plus( "x^2", ( -2 * H ) + "x" ) + ")" ), parse( plus( "y", ( -A * H * H - K ) ) + " + #{" + ( A * H * H ) + "} &= " + A_DISP + "(" + plus( "x^2", ( -2 * H ) + "x" ) + " + #{" + ( H * H ) + "})", [ BLUE, BLUE ] ), parse( plus( "y", ( ( -A * H * H - K ) + ( A * H * H ) ) ) + " &= " + A_DISP + "(" + plus( "x^2", ( -2 * H ) + "x", ( H * H ) ) + ")" ), ] [ parse( plus( "y", -K ) + " = " + A_DISP + "(" + plus( "x", -H ) + ")^2" ), ] [ parse( "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 formatGroup( COMP_SQR1, [ 0, 1 ] )

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

\qquad formatGroup( COMP_SQR2, [ 0 ] )

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 formatGroup( COMP_SQR3, [ 0, 1, 2 ] )

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

\qquad formatGroup( COMP_SQR4, [ 0 ] )

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

\qquad formatGroup( COMP_SQR5, [ 0 ] )

\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 formatGroup( GROUP1, [ 0 ] )

\qquad formatGroup( GROUP1, [ 1 ] )

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 formatGroup( GROUP2, [ 0, 1 ] )

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.