randRangeNonZero(-5, 5) randRange(-5, 5)
randRangeExclude(-5, 5, [0, Y]) randRangeExclude(-5, 5, [0, Y])
(Y - YINT_1) / X (Y - YINT_2) / X toFraction(SLOPE_1, 0.001) toFraction(SLOPE_2, 0.001)
fractionVariable(SLOPE_FRAC_1[0], SLOPE_FRAC_1[1], "x") fractionVariable(SLOPE_FRAC_2[0], SLOPE_FRAC_2[1], "x") randRangeNonZero( -3, 3 ) randRangeNonZero( -3, 3 ) SLOPE_FRAC_1[0] * -MULT_1 SLOPE_FRAC_2[0] * -MULT_2 SLOPE_FRAC_1[1] * MULT_1 SLOPE_FRAC_2[1] * MULT_2 SLOPE_FRAC_1[1] * YINT_1 * MULT_1 SLOPE_FRAC_2[1] * YINT_2 * MULT_2 randFromArray([ true, false ]) randFromArray([ true, false ]) randFromArray([ "<", ">", "≤", "≥" ]) randFromArray([ "<", ">", "≤", "≥" ]) B_1 < 0 ? { "<": ">", ">": "<", "≤": "≥", "≥": "≤" }[ COMP_1 ] : COMP_1 B_2 < 0 ? { "<": ">", ">": "<", "≤": "≥", "≥": "≤" }[ COMP_2 ] : COMP_2 COMP_1 === "<" || COMP_1 === "≤" COMP_2 === "<" || COMP_2 === "≤" COMP_1 === "≥" || COMP_1 === "≤" COMP_2 === "≥" || COMP_2 === "≤"

Graph the following system of inequalities:

`\blue{expr([ "+", [ "*", A_1, "x" ], [ "*", B_1, "y" ] ]) STD_FORM_COMP_1 C_1}`

`\blue{y COMP_1 PRETTY_SLOPE_1 + YINT_1}`

`\green{expr([ "+", [ "*", A_2, "x" ], [ "*", B_2, "y" ] ]) STD_FORM_COMP_2 C_2}`

`\green{y COMP_2 PRETTY_SLOPE_2 + YINT_2}`

Inequality 1:

- Solid line
- Dashed line

Inequality 2:

- Solid line
- Dashed line

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", "below" ); 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: [ -5, -5 ], snapX: 0.5, snapY: 0.5, normalStyle: { stroke: KhanUtil.BLUE, fill: KhanUtil.BLUE } }); graph.pointD = addMovablePoint({ coord: [ 5, -5 ], snapX: 0.5, snapY: 0.5, normalStyle: { stroke: KhanUtil.BLUE, fill: KhanUtil.BLUE } }); graph.set = raphael.set(); graph.update = function() { graph.set.remove(); if ( abs( graph.pointB.coord[0] - graph.pointA.coord[0] ) > 0.001 ) { var slope = ( graph.pointB.coord[1] - graph.pointA.coord[1] ) / ( graph.pointB.coord[0] - graph.pointA.coord[0] ); var yint = slope * ( 0 - graph.pointA.coord[0] ) + graph.pointA.coord[1]; var shadeEdge = ( ( graph.pointA.coord[0] < graph.pointB.coord[0] ) ? graph.shadetop1 : !graph.shadetop1 ) ? 11 : -11; style({ stroke: BLUE, strokeWidth: 2, strokeDasharray: graph.dasharray1 }, function() { graph.set.push( line( [ -11, -11 * slope + yint ], [ 11, 11 * slope + yint ] ) ); }); style({ fill: BLUE, stroke: null, opacity: KhanUtil.FILL_OPACITY }, function() { graph.set.push( path([ [ 11, shadeEdge ], [ 11, 11 * slope + yint ], [ -11, -11 * slope + yint ], [ -11, shadeEdge ] ]) ); }); } else { // vertical line var x = graph.pointA.coord[0]; var shadeEdge = ( ( graph.pointB.coord[1] < graph.pointA.coord[1] ) ? graph.shadetop1 : !graph.shadetop1 ) ? 11 : -11; style({ stroke: BLUE, strokeWidth: 2, strokeDasharray: graph.dasharray1 }, function() { graph.set.push( line( [ x, -11 ], [ x, 11 ] ) ); }); style({ fill: BLUE, stroke: null, opacity: KhanUtil.FILL_OPACITY }, function() { graph.set.push( path([ [ x, -11 ], [ x, 11 ], [ shadeEdge, 11 ], [ shadeEdge, -11 ] ]) ); }); } if ( abs( graph.pointD.coord[0] - graph.pointC.coord[0] ) > 0.001 ) { var slope = ( graph.pointD.coord[1] - graph.pointC.coord[1] ) / ( graph.pointD.coord[0] - graph.pointC.coord[0] ); var yint = slope * ( 0 - graph.pointC.coord[0] ) + graph.pointC.coord[1]; var shadeEdge = ( ( graph.pointC.coord[0] < graph.pointD.coord[0] ) ? graph.shadetop2 : !graph.shadetop2 ) ? 11 : -11; style({ stroke: GREEN, strokeWidth: 2, strokeDasharray: graph.dasharray2 }, function() { graph.set.push( line( [ -11, -11 * slope + yint ], [ 11, 11 * slope + yint ] ) ); }); style({ fill: GREEN, stroke: null, opacity: KhanUtil.FILL_OPACITY }, function() { graph.set.push( path([ [ 11, shadeEdge ], [ 11, 11 * slope + yint ], [ -11, -11 * slope + yint ], [ -11, shadeEdge ] ]) ); }); } else { // vertical line var x = graph.pointC.coord[0]; var shadeEdge = ( ( graph.pointD.coord[1] < graph.pointC.coord[1] ) ? graph.shadetop2 : !graph.shadetop2 ) ? 11 : -11; style({ stroke: GREEN, strokeWidth: 2, strokeDasharray: graph.dasharray2 }, function() { graph.set.push( line( [ x, -11 ], [ x, 11 ] ) ); }); style({ fill: GREEN, stroke: null, opacity: KhanUtil.FILL_OPACITY }, function() { graph.set.push( path([ [ x, -11 ], [ x, 11 ], [ shadeEdge, 11 ], [ shadeEdge, -11 ] ]) ); }); } graph.set.toBack(); }; graph.showCorrect = function() { graph.pointA.setCoord([ 0, YINT_1 ]); graph.pointB.setCoord([ SLOPE_FRAC_1[1], YINT_1 + SLOPE_FRAC_1[0] ]); graph.pointC.setCoord([ 0, YINT_2 ]); graph.pointD.setCoord([ SLOPE_FRAC_2[1], YINT_2 + SLOPE_FRAC_2[0] ]); graph.shadetop1 = graph.pointA.coord[0] > graph.pointB.coord[0] ? LESS_THAN_1 : !LESS_THAN_1; graph.shadetop2 = graph.pointC.coord[0] > graph.pointD.coord[0] ? LESS_THAN_2 : !LESS_THAN_2; if ( INCLUSIVE_1 ) { graph.dasharray1 = ''; $( 'input[name=dashradio1][value=solid]' ).attr( 'checked', true ); } else { graph.dasharray1 = '- '; $( 'input[name=dashradio1][value=dashed]' ).attr( 'checked', true ); } if ( INCLUSIVE_2 ) { graph.dasharray2 = ''; $( 'input[name=dashradio2][value=solid]' ).attr( 'checked', true ); } else { graph.dasharray2 = '- '; $( 'input[name=dashradio2][value=dashed]' ).attr( 'checked', true ); } graph.update(); }; // A and B can't be in the same place graph.pointA.onMove = function( x, y ) { if ( x != graph.pointB.coord[0] || y != graph.pointB.coord[1] ) { graph.pointA.setCoord([ x, y ]); graph.update(); return true; } else { return false; } } graph.pointB.onMove = function( x, y ) { if ( x != graph.pointA.coord[0] || y != graph.pointA.coord[1] ) { graph.pointB.setCoord([ x, y, ]); graph.update(); return true; } else { return false; } } // C and D can't be in the same place graph.pointC.onMove = function( x, y ) { if ( x != graph.pointD.coord[0] || y != graph.pointD.coord[1] ) { graph.pointC.setCoord([ x, y ]); graph.update(); return true; } else { return false; } } graph.pointD.onMove = function( x, y ) { if ( x != graph.pointC.coord[0] || y != graph.pointC.coord[1] ) { graph.pointD.setCoord([ x, y, ]); graph.update(); return true; } else { return false; } } graph.dasharray1 = ""; graph.dasharray2 = ""; graph.shadetop1 = true; graph.shadetop2 = false; graph.update(); graph.pointA.toFront(); graph.pointB.toFront(); graph.pointC.toFront(); graph.pointD.toFront();
[ graph.pointA.coord, graph.pointB.coord, graph.pointA.coord[0] > graph.pointB.coord[0] ? graph.shadetop1 : !graph.shadetop1, graph.dasharray1 === "- " ? false : true, graph.pointC.coord, graph.pointD.coord, graph.pointC.coord[0] > graph.pointD.coord[0] ? graph.shadetop2 : !graph.shadetop2, graph.dasharray2 === "- " ? false : true ]
var slope1 = ( guess[1][1] - guess[0][1] ) / ( guess[1][0] - guess[0][0] ); var yint1 = slope1 * ( 0 - guess[0][0] ) + guess[0][1]; var slope2 = ( guess[5][1] - guess[4][1] ) / ( guess[5][0] - guess[4][0] ); var yint2 = slope2 * ( 0 - guess[4][0] ) + guess[4][1]; return (abs(SLOPE_1 - slope1) < 0.001 && abs(YINT_1 - yint1) < 0.001 && guess[2] === LESS_THAN_1 && guess[3] === INCLUSIVE_1 && abs(SLOPE_2 - slope2) < 0.001 && abs(YINT_2 - yint2) < 0.001 && guess[6] === LESS_THAN_2 && guess[7] === INCLUSIVE_2) || (abs(SLOPE_2 - slope1) < 0.001 && abs(YINT_2 - yint1) < 0.001 && guess[2] === LESS_THAN_2 && guess[3] === INCLUSIVE_2 && abs(SLOPE_1 - slope2) < 0.001 && abs(YINT_1 - yint2) < 0.001 && guess[6] === LESS_THAN_1 && guess[7] === INCLUSIVE_1);
graph.pointA.setCoord( guess[0] ); graph.pointB.setCoord( guess[1] ); graph.pointC.setCoord( guess[4] ); graph.pointD.setCoord( guess[5] ); graph.shadetop1 = graph.pointA.coord[0] > graph.pointB.coord[0] ? guess[2] : !guess[2]; graph.shadetop2 = graph.pointC.coord[0] > graph.pointD.coord[0] ? guess[6] : !guess[6]; if ( guess[3] ) { graph.dasharray1 = ""; $( "input[name=dashradio1][value=solid]" ).attr( "checked", true ); } else { graph.dasharray1 = "- "; $( "input[name=dashradio1][value=dashed]" ).attr( "checked", true ); } if ( guess[7] ) { graph.dasharray2 = ""; $( "input[name=dashradio2][value=solid]" ).attr( "checked", true ); } else { graph.dasharray2 = "- "; $( "input[name=dashradio2][value=dashed]" ).attr( "checked", true ); } graph.update();

Convert the first inequality, `expr([ "+", [ "*", A_1, "x" ], [ "*", B_1, "y" ] ]) STD_FORM_COMP_1 C_1`, to slope-intercept form by solving for `y`.

Add `abs( A_1 )x` to both sides:

Subtract `abs( A_1 )x` from both sides:

`\qquad expr( [ "*", B_1, "y" ] ) STD_FORM_COMP_1 expr([ "+", [ "*", -A_1, "x" ], C_1 ])`

Divide both sides by `B_1`. Since you're multiplying or dividing by a negative number, don't forget to flip the inequality sign:

`\qquad y COMP_1 expr([ "+", "\\dfrac{" + expr([ "*", -A_1, "x" ]) + "}{" + B_1 + "}", "\\dfrac{" + C_1 + "}{" + B_1 + "}" ])`

`\qquad y COMP_1 \color{purple}{PRETTY_SLOPE_1} \red{+ YINT_1}`

The y-intercept is `YINT_1` and the slope is `decimalFraction( SLOPE_1, true, true )`. Since the y-intercept is `YINT_1`, the line must pass through the point `(0, YINT_1)`.

The slope is `decimalFraction( SLOPE_1, true, true )`. Remember that the slope tells you rise over run. For every step we take we must move `abs( SLOPE_FRAC_1[0] )` positions down (because it's negative)up. For every step we take we must move `abs( SLOPE_FRAC_1[0] )` position down (because it's negative)up. For every step we take we must also move `SLOPE_FRAC_1[1]` positions to the right. For every step we take we must also move `SLOPE_FRAC_1[1]` position to the right. So the line must also pass through `(SLOPE_FRAC_1[1], YINT_1 + SLOPE_FRAC_1[0])`.

Since our inequality has a less-than or equal to sign, that means that any point below the line is a solution to the inequality, so the area below the line should be shaded.

Since our inequality has a greater-than or equal to sign, that means that any point above the line is a solution to the inequality, so the area above the line should be shaded.

Note that since the sign is less-than or equal to, any point on the line is also a solution, so the line should be solid. Note that since the sign is greater-than or equal to, any point on the line is also a solution, so the line should be solid.

Note that since the sign is less-than (and not equal to), any point on the line is not part of the solution, so the line should be dashed to indicate this. Note that since the sign is greater-than (and not equal to), any point on the line is not part of the solution, so the line should be dashed to indicate this.

Convert the second inequality, `expr([ "+", [ "*", A_2, "x" ], [ "*", B_2, "y" ] ]) STD_FORM_COMP_2 C_2`, to slope-intercept form by solving for `y`.

Add `abs( A_2 )x` to both sides:

Subtract `abs( A_2 )x` from both sides:

`\qquad expr( [ "*", B_2, "y" ] ) STD_FORM_COMP_2 expr([ "+", [ "*", -A_2, "x" ], C_2 ])`

Divide both sides by `B_2`. Since you're multiplying or dividing by a negative number, don't forget to flip the inequality sign:

`\qquad y COMP_2 expr([ "+", "\\dfrac{" + expr([ "*", -A_2, "x" ]) + "}{" + B_2 + "}", "\\dfrac{" + C_2 + "}{" + B_2 + "}" ])`

`\qquad y COMP_2 \color{purple}{PRETTY_SLOPE_2} \red{+ YINT_2}`

The y-intercept is `YINT_2` and the slope is `decimalFraction( SLOPE_2, true, true )`. Since the y-intercept is `YINT_2`, the line must pass through the point `(0, YINT_2)`.

The slope is `decimalFraction( SLOPE_2, true, true )`. Remember that the slope tells you rise over run. For every step we take we must move `abs( SLOPE_FRAC_2[0] )` positions down (because it's negative)up. For every step we take we must move `abs( SLOPE_FRAC_2[0] )` position down (because it's negative)up. For every step we take we must also move `SLOPE_FRAC_2[1]` positions to the right. For every step we take we must also move `SLOPE_FRAC_2[1]` position to the right. So the line must also pass through `(SLOPE_FRAC_2[1], YINT_2 + SLOPE_FRAC_2[0])`.

Since our inequality has a less-than or equal to sign, that means that any point below the line is a solution to the inequality, so the area below the line should be shaded.

Since our inequality has a greater-than or equal to sign, that means that any point above the line is a solution to the inequality, so the area above the line should be shaded.

Note that since the sign is less-than or equal to, any point on the line is also a solution, so the line should be solid. Note that since the sign is greater-than or equal to, any point on the line is also a solution, so the line should be solid.

Note that since the sign is less-than (and not equal to), any point on the line is not part of the solution, so the line should be dashed to indicate this. Note that since the sign is greater-than (and not equal to), any point on the line is not part of the solution, so the line should be dashed to indicate this.