// Numbas version: exam_results_page_options {"name": "Find the equation of a line through two points - negative gradient", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"variable_groups": [], "rulesets": {}, "name": "Find the equation of a line through two points - negative gradient", "functions": {"correctPoints": {"parameters": [], "language": "javascript", "type": "html", "definition": "//point coordinate variables\nvar xa = Numbas.jme.unwrapValue(scope.variables.xa);\nvar xb = Numbas.jme.unwrapValue(scope.variables.xb);\nvar ya = Numbas.jme.unwrapValue(scope.variables.ya);\nvar yb = Numbas.jme.unwrapValue(scope.variables.yb);\nvar m = Numbas.jme.unwrapValue(scope.variables.m);\nvar c = Numbas.jme.unwrapValue(scope.variables.c);\n\n//make board\nvar div = Numbas.extensions.jsxgraph.makeBoard('400px','400px',{boundingBox:[math.min(xa-4,-2),math.max(ya+4,2),math.max(xb+4,2),math.min(yb-4,-2)],grid: true});\nvar board = div.board;\nquestion.board = board;\n\n\n//points (with nice colors)\nvar a = board.create('point',[xa,ya],{name: 'A', size: 7, fillColor: 'blue' , strokeColor: 'lightblue' , highlightFillColor: 'lightblue', highlightStrokeColor: 'yellow', fixed: true, showInfobox: true});\nvar b = board.create('point',[xb,yb],{name: 'B', size: 7, fillColor: 'blue' , strokeColor: 'lightblue' , highlightFillColor: 'lightblue', highlightStrokeColor: 'yellow',fixed: true, showInfobox: true});\n\n\n//ans(was tree) is defined at the end and nscope looks important\n//but they're both variables\n\nvar correct_line = board.create('functiongraph',[function(x){ return m*x+c},-22,22], {strokeColor:\"green\",setLabelText:'mx+c',visible: true, strokeWidth: 4, highlightStrokeColor: 'green'} )\n\n\n\nquestion.signals.on('HTMLAttached',function(e) {\nko.computed(function(){\n//define ans as this \ncorrect_line.updateCurve();\nboard.update();\n});\n });\n\n\nreturn div;"}, "plotPoints": {"parameters": [], "language": "javascript", "type": "html", "definition": "\n//point coordinate variables\nvar xa = Numbas.jme.unwrapValue(scope.variables.xa);\nvar xb = Numbas.jme.unwrapValue(scope.variables.xb);\nvar ya = Numbas.jme.unwrapValue(scope.variables.ya);\nvar yb = Numbas.jme.unwrapValue(scope.variables.yb);\nvar m = Numbas.jme.unwrapValue(scope.variables.m);\nvar c = Numbas.jme.unwrapValue(scope.variables.c);\n\n//make board\nvar div = Numbas.extensions.jsxgraph.makeBoard('400px','400px',{boundingBox:[math.min(xa-4,-2),math.max(ya+4,2),math.max(xb+4,2),math.min(yb-4,-2)],grid: true});\nvar board = div.board;\nquestion.board = board;\n\n//points (with nice colors)\nvar a = board.create('point',[xa,ya],{name: 'A', size: 7, fillColor: 'blue' , strokeColor: 'lightblue' , highlightFillColor: 'lightblue', highlightStrokeColor: 'yellow', fixed: true, showInfobox: true});\nvar b = board.create('point',[xb,yb],{name: 'B', size: 7, fillColor: 'blue' , strokeColor: 'lightblue' , highlightFillColor: 'lightblue', highlightStrokeColor: 'yellow',fixed: true, showInfobox: true});\n\n\n//ans(was tree) is defined at the end and nscope looks important\n//but they're both variables\n var ans;\n var nscope = new Numbas.jme.Scope([scope,{variables:{x:new Numbas.jme.types.TNum(0)}}]);\n//this is the beating heart of whatever plots the function,\n//I've changed this from being curve to functiongraph\n var line = board.create('functiongraph',[function(x){\nif(ans) {\n try {\nnscope.variables.x.value = x;\n var val = Numbas.jme.evaluate(ans,nscope).value;\n return val;\n }\n catch(e) {\nreturn 13;\n }\n}\nelse\n return 13;\n },-12,12]\n , {strokeColor:\"blue\",strokeWidth: 4} );\n \nvar correct_line = board.create('functiongraph',[function(x){ return m*x+c},-22,22], {strokeColor:\"green\",setLabelText:'mx+c',visible: false, strokeWidth: 4, highlightStrokeColor: 'green'} )\n\nquestion.lines = {\n l:line, c:correct_line\n}\n\n question.signals.on('HTMLAttached',function(e) {\nko.computed(function(){\nvar expr = question.parts[2].gaps[0].display.studentAnswer();\n\n//define ans as this \ntry {\n ans = Numbas.jme.compile(expr,scope);\n}\ncatch(e) {\n ans = null;\n}\nline.updateCurve();\ncorrect_line.updateCurve();\nboard.update();\n});\n });\n\n\nreturn div;"}}, "ungrouped_variables": ["xa", "xb", "ya", "yb", "m", "c", "twos", "twos2"], "metadata": {"description": "

Use two points on a line graph to calculate the gradient and $y$-intercept and hence the equation of the straight line running through both points.

\n

The answer box for the third part plots the function which allows the student to check their answer against the graph before submitting.

\n

This particular example has a negative gradient.

", "licence": "Creative Commons Attribution 4.0 International"}, "advice": "

#### a)

\n

We find the equation of a straight line passing through two points by finding the gradient and the $y$-intercept of the line.
We can find the gradient ($m$) using the points $A$ and $B$, $(x_1,y_1)=(\\var{xa},\\var{ya})$ and $(x_2,y_2)=(\\var{xb},\\var{yb})$ respectively.

\n

The definition of gradient is the ratio of vertical change ($y_2-y_1$) to horizontal change ($x_2-x_1$):

\n

\\\begin{align} m &= \\frac{y_2-y_1}{x_2-x_1} \\\\ &= \\frac{\\simplify[!collectNumbers]{{yb}-{ya}}}{\\simplify[!collectNumbers]{{xb}-{xa}}} \\\\ &= \\frac{\\simplify{{yb}-{ya}}}{\\simplify{{xb}-{xa}}} \\\\ &= \\simplify[simplifyFractions,unitDenominator]{({yb-ya})/({xb-xa})}\\text{.} \\end{align} \

\n

#### b)

\n

Rearranging the equation $y=mx+c$ and substituting either of the points gives two equations for the $y$-intercept $c$:

\n

\$c = y_1-mx_1 \\quad \\mathrm{or} \\quad c = y_2-mx_2 \\,\\text{,} \$

\n

Let's use point $B$:

\n

\\\begin{align} c &= y_2-mx_2 \\\\ &= \\var{ya}-(\\var{m}\\times\\var{xa}) \\\\ &= \\simplify{{ya-m*xa}}\\text{.} \\end{align} \

\n

We then check this against point $A$:

\n

\\\begin{align} y_1 &= mx_1 + c \\\\ &= \\simplify[fractionNumbers]{{m}{xb}+{c}} \\\\ &= \\simplify{{m}*{xb}+{c}}\\text{.} \\end{align} \

\n

#### c)

\n

Substituting our values for $m$ and $c$ into the equation for a straight line, $y=mx+c$, gives

\n

\$y=\\simplify[all,!noLeadingMinus]{{m} x+ {c}}\\text{.}\$

\n

This is plotted below:

\n

{correctPoints()}

", "extensions": ["jsxgraph"], "statement": "

In this question we will identify the equation of the straight line passing through the points  $A=(\\var{xa},\\var{ya})$ and  $B=(\\var{xb},\\var{yb})$, in the form $y = mx + c$.

\n

{plotPoints()}

", "preamble": {"js": "", "css": ""}, "tags": ["gradient", "graphs", "line equation", "negative gradient", "Straight Line", "straight line", "taxonomy", "y-intercept"], "parts": [{"variableReplacementStrategy": "originalfirst", "sortAnswers": false, "scripts": {}, "variableReplacements": [], "type": "gapfill", "extendBaseMarkingAlgorithm": true, "prompt": "

Calculate the gradient, $m$, of the line between these two points.

\n

$m=$ [[0]]

\n

", "customName": "", "gaps": [{"extendBaseMarkingAlgorithm": true, "useCustomName": false, "correctAnswerStyle": "plain", "maxValue": "m", "customName": "", "showFractionHint": true, "variableReplacements": [], "unitTests": [], "customMarkingAlgorithm": "", "correctAnswerFraction": false, "mustBeReducedPC": 0, "variableReplacementStrategy": "originalfirst", "type": "numberentry", "marks": 1, "allowFractions": false, "minValue": "m", "mustBeReduced": false, "showCorrectAnswer": true, "showFeedbackIcon": true, "adaptiveMarkingPenalty": 0, "notationStyles": ["plain", "en", "si-en"], "scripts": {}}], "useCustomName": false, "adaptiveMarkingPenalty": 0, "unitTests": [], "showFeedbackIcon": true, "customMarkingAlgorithm": "", "marks": 0, "showCorrectAnswer": true}, {"variableReplacementStrategy": "originalfirst", "sortAnswers": false, "scripts": {}, "variableReplacements": [], "type": "gapfill", "extendBaseMarkingAlgorithm": true, "prompt": "

Use this gradient and the points to calculate the $y$-intercept, $c$.

\n

$c=$ [[0]]

", "customName": "", "gaps": [{"extendBaseMarkingAlgorithm": true, "useCustomName": false, "correctAnswerStyle": "plain", "maxValue": "c", "customName": "", "showFractionHint": true, "variableReplacements": [], "unitTests": [], "customMarkingAlgorithm": "", "correctAnswerFraction": false, "mustBeReducedPC": 0, "variableReplacementStrategy": "originalfirst", "type": "numberentry", "marks": 1, "allowFractions": false, "minValue": "c", "mustBeReduced": false, "showCorrectAnswer": true, "showFeedbackIcon": true, "adaptiveMarkingPenalty": 0, "notationStyles": ["plain", "en", "si-en"], "scripts": {}}], "useCustomName": false, "adaptiveMarkingPenalty": 0, "unitTests": [], "showFeedbackIcon": true, "customMarkingAlgorithm": "", "marks": 0, "showCorrectAnswer": true}, {"variableReplacementStrategy": "originalfirst", "sortAnswers": false, "scripts": {"mark": {"script": "console.log(this.question.lines.c)\nthis.question.lines.l.setAttribute({strokeColor: this.credit==1 ? 'green' : 'red'});\nthis.question.lines.c.setAttribute({visible: this.credit==1 ? false : true});\n", "order": "after"}}, "variableReplacements": [], "type": "gapfill", "extendBaseMarkingAlgorithm": true, "prompt": "

Using your values for $m$ and $c$, write down the equation of the straight line which passes through the two points A and B, in the form $y = mx +c$

\n

$\\displaystyle y=$ [[0]]

\n

Use the graph to plot your answer and check that it goes through these points.

", "customName": "", "gaps": [{"answer": "{m}*x+{c}", "failureRate": 1, "extendBaseMarkingAlgorithm": true, "checkingAccuracy": 0.001, "valuegenerators": [{"name": "x", "value": ""}], "notallowed": {"message": "

You must input your answer in the form y = mx +c where m and c are numbers.

", "showStrings": false, "partialCredit": 0, "strings": ["c", "m"]}, "checkingType": "absdiff", "unitTests": [], "customName": "", "variableReplacements": [], "vsetRange": [0, 1], "checkVariableNames": true, "customMarkingAlgorithm": "", "variableReplacementStrategy": "alwaysreplace", "type": "jme", "showPreview": true, "vsetRangePoints": 5, "useCustomName": false, "showCorrectAnswer": true, "showFeedbackIcon": true, "scripts": {}, "marks": 1, "adaptiveMarkingPenalty": 0}], "useCustomName": false, "adaptiveMarkingPenalty": 0, "unitTests": [], "showFeedbackIcon": true, "customMarkingAlgorithm": "", "marks": 0, "showCorrectAnswer": true}], "variables": {"c": {"name": "c", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "ya-m*xa"}, "yb": {"name": "yb", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "ya-twos2"}, "twos2": {"name": "twos2", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "random(2..4 except 3)"}, "m": {"name": "m", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "(ya-yb)/(xa-xb)"}, "xb": {"name": "xb", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "xa+twos"}, "twos": {"name": "twos", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "random(2..4 except 3 )"}, "ya": {"name": "ya", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "random(-5..5)"}, "xa": {"name": "xa", "description": "", "templateType": "anything", "group": "Ungrouped variables", "definition": "random(-5..2 except[0,-2,-4])"}}, "variablesTest": {"maxRuns": 100, "condition": "\n"}, "contributors": [{"name": "Chris Graham", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/369/"}, {"name": "Bradley Bush", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1521/"}, {"name": "Aiden McCall", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1592/"}]}]}], "contributors": [{"name": "Chris Graham", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/369/"}, {"name": "Bradley Bush", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1521/"}, {"name": "Aiden McCall", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1592/"}]}