randRangeNonZero( -10, 10 ) randRangeNonZero( -5, 5 ) B * YINT 0 randRange( 2, 6 )

Reprezentați grafic următoarea ecuație:

expr([ "*", B, "y" ]) = C

Trebuie să scriem ecuația expr([ "*", B, "y" ]) = C în funcție de y pentru a o aduce la o forma cu care putem să lucrăm.

Am putea să împărțim ambele părți prin B:

\qquad y = \color{GREEN}{YINT}

Intersecția cu y este YINT, și această ecuație reprezintă de fapt o linie unde toate punctele au valoarea de y = YINT.

Putem să alegem câteva puncte unde y = YINT. (-X_EXAMPLE, YINT) și (X_EXAMPLE, YINT) sunt câteva opțiuni bune.

style({ stroke: GREEN, fill: GREEN }, function() { graph.exampleA = circle( [ -1 * X_EXAMPLE, YINT ], 0.2 ).toBack(); graph.exampleB = circle( [ X_EXAMPLE, YINT ], 0.2 ).toBack(); });

Se poate observa că aceste puncte formează o linie orizontală care intersectează axa y în punctul (0, YINT).

style({ stroke: BLUE, strokeWidth: 2, strokeDasharray: "." }, function() { plot( function( x ) { return YINT; }, [ -11, 11 ] ).toBack(); });
randRangeNonZero( -10, 10 ) randRangeNonZero( -5, 5 ) B * XINT randRange( 2, 6 ) randRange( 2, 6 )

Reprezentați grafic următoarea ecuație:

expr([ "*", B, "x" ]) = C

Foarte suspect. Nu există nici un y în această ecuație. Dacă am încerca să o scriem în funcție de x oare ce ar rezulta ?

Poate ar trebui să împărţim ambele părţi prin B:

\qquad x = \color{GREEN}{XINT}

Această ecuaţie reprezintă o linie unde toate punctele au x = XINT.

Putem să alegem câteva puncte cu x = XINT. (XINT, -Y_EXAMPLE), (XINT, Y_EXAMPLE_2) și (XINT, Y_EXAMPLE) sunt potrivite.

style({ stroke: GREEN, fill: GREEN }, function() { graph.exampleA = circle( [ XINT, -1 * Y_EXAMPLE ], 0.2 ).toBack(); graph.exampleB = circle( [ XINT, Y_EXAMPLE ], 0.2 ).toBack(); graph.exampleA = circle( [ XINT, Y_EXAMPLE_2 ], 0.2 ).toBack(); });

Putem observa că aceste puncte definesc o linie verticală care intersectează axa x în punctul (XINT, 0).

style({ stroke: BLUE, strokeWidth: 2, strokeDasharray: "." }, function() { line([XINT, -11], [XINT, 11]).toBack(); });
Pentru a rezolva cerința, trebuie să mutăm cele două puncte astfel încât dreapta să fie în poziția corectă.
[ graph.pointA.coord, graph.pointB.coord ]
return abs(guess[0][0] - XINT) < 0.001 && abs(guess[1][0] - XINT) < 0.001;
graph.pointA.setCoord( guess[0] ); graph.pointB.setCoord( guess[1] ); graph.line1.transform( true );
reduce( randRangeNonZero( -5, 5 ), randRange( 1, 5 ) ) randRangeNonZero( max( -10, -10 - SLOPE_FRAC[0] ), min( 10, 10 - SLOPE_FRAC[0] ) ) SLOPE_FRAC[0] / SLOPE_FRAC[1] SLOPE === 1 ? "" : ( SLOPE === -1 ? "-" : fraction( SLOPE_FRAC[0], SLOPE_FRAC[1], true, true ) ) randRangeNonZero( -3, 3 ) SLOPE_FRAC[0] * -MULT SLOPE_FRAC[1] * MULT SLOPE_FRAC[1] * YINT * MULT random() < 0.3

Reprezentați grafic următoarea ecuație:

expr([ "+", [ "*", A, "x" ], [ "*", B, "y" ] ]) = C

y = PRETTY_SLOPE x + YINT

Am putea să rescriem ecuația expr([ "+", [ "*", A, "x" ], [ "*", B, "y" ] ]) = C astfel încât să obținem ecuația pantei.

Dacă adăugăm abs( A )x ambelor părți, obținem:

Dacă scădem abs( A )x ambelor părți, obținem:

\qquad expr( [ "*", B, "y" ] ) = expr([ "+", [ "*", -A, "x" ], C ])

Putem împărții ambele părți prin B:

\qquad y = expr([ "+", "\\dfrac{" + expr([ "*", -A, "x" ]) + "}{" + B + "}", "\\dfrac{" + C + "}{" + B + "}" ])

\qquad y = \color{purple}{PRETTY_SLOPE} x \color{GREEN}{+ YINT}

Din ecuație rezultă că intersecția cu axa y este YINT și panta este decimalFraction( SLOPE, true, true ).

Intersecția cu axa y de YINT, înseamnă de fapt că dreapta trece prin punctul care are coordonatele (0, YINT).

style({ stroke: GREEN, fill: GREEN }, function() { graph.yint = circle( [ 0, YINT ], 0.2 ).toBack(); });

Panta este decimalFraction( SLOPE, true, true ). Ea este cea care ne arată cu cât trebuie să avansăm pe direcția dreptei. Mai exact, dacă avem un punct pe dreaptă și vrem să înaintăm cu un pas, ne vom muta cu abs( SLOPE_FRAC[0] ) poziții în jos (pentru că panta este negativă) în sus. Mai exact, dacă avem un punct pe dreaptă și vrem să înaintăm cu un pas, ne vom muta cu abs( SLOPE_FRAC[0] ) poziție în jos (pentru că panta este negativă) în sus. Pentru fiecare pas făcut trebuie de asemenea să ne mutăm cu SLOPE_FRAC[1] poziții la dreapta. Pentru fiecare pas făcut trebuie de asemenea să ne mutăm cu SLOPE_FRAC[1] poziție la dreapta.

style({ stroke: "purple", strokeWidth: 2, arrows: "->" }, function() { path([ [ 0, YINT ], [ 0, YINT + SLOPE_FRAC[0] ] ]).toBack(); path([ [ 0, YINT + SLOPE_FRAC[0] ], [ SLOPE_FRAC[1], YINT + SLOPE_FRAC[0] ] ]).toBack(); }); label( [ 0, YINT + SLOPE_FRAC[0] / 2 ], abs( SLOPE_FRAC[0] ) + " \\text{ " + ( SLOPE_FRAC[0] < 0 ? "în jos" : "în sus" ) + "} \\quad", "left", { color: "purple" } ); label( [ 0, YINT + SLOPE_FRAC[0] ], SLOPE_FRAC[1] + " \\text{ la dreapta }", ( SLOPE_FRAC[0] < 0 ? "below right" : "above right" ), { color: "purple" } ); graph.yint.toBack();

În consecință, dreapta ar trebui să treacă prin punctul (SLOPE_FRAC[1], YINT + SLOPE_FRAC[0])

style({ stroke: BLUE, strokeWidth: 2, strokeDasharray: "." }, function() { plot( function( x ) { return x * SLOPE + YINT; }, [ -11, 11 ] ).toBack(); });
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.line1 = addMovableLineSegment({ pointA: graph.pointA, pointZ: graph.pointB, fixed: true, extendLine: true }); // A and B can't be in the same place graph.pointA.onMove = function( x, y ) { return ( x != graph.pointB.coord[0] || y != graph.pointB.coord[1] ); } graph.pointB.onMove = function( x, y ) { return ( x != graph.pointA.coord[0] || y != graph.pointA.coord[1] ); } graph.pointA.toFront(); graph.pointB.toFront();
Pentru a rezolva cerința, trebuie să mutăm cele două puncte astfel încât dreapta să fie în poziția corectă.
[ graph.pointA.coord, graph.pointB.coord ]
if (_.isEqual(guess, [[-5, 5], [5, 5]])) { return ""; } var slope = ( guess[1][1] - guess[0][1] ) / ( guess[1][0] - guess[0][0] ); var yint = slope * ( 0 - guess[0][0] ) + guess[0][1]; return abs( SLOPE - slope ) < 0.001 && abs( YINT - yint ) < 0.001;
graph.pointA.setCoord( guess[0] ); graph.pointB.setCoord( guess[1] ); graph.line1.transform( true );