// Numbas version: exam_results_page_options {"name": "cos rule - find a side", "extensions": [], "custom_part_types": [], "resources": [["question-resources/AcuteTriangle_tSonQMW.svg", "/srv/numbas/media/question-resources/AcuteTriangle_tSonQMW.svg"], ["question-resources/ObtuseTriangle_Fe8ESh4.svg", "/srv/numbas/media/question-resources/ObtuseTriangle_Fe8ESh4.svg"]], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "cos rule - find a side", "tags": [], "metadata": {"description": "

Student is given a triangle with the value of 2 sides and 1 or 2 angles and asked to find the value of the third side using the cosine rule. Triangle can be acute or obtuse.

\n

Side and angle lengths are randomised. Units are randomised.

", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "

Use the cosine rule to find the value of {dspchosenside}. Give your answer rounded to the 1 decimal place.

\n

       

\n

not to scale

\n

", "advice": "

To find the value of {dspchosenside} we need to use the cosine rule.

\n

We need to use the angle opposite {dspchosenside} but this is not given so we need to work it out:

\n

angle = 180° - {angle_dsp_vals[helpingvar]} - {angle_dsp_vals[othervar]} = {angle_dsp_vals[findvar]}

\n

$\\var{dspchosenside}^2 = \\var{side_dsp_vals[helpingvar]}^2 + \\var{side_dsp_vals[othervar]}^2 - 2 \\times \\var{side_dsp_vals[helpingvar]} \\times \\var{side_dsp_vals[othervar]} \\times \\cos(\\var{angle_dsp_vals[findvar]})$

\n

Take the square root of both sides:

\n

$\\var{dspchosenside} = \\sqrt{\\var{side_dsp_vals[helpingvar]}^2 + \\var{side_dsp_vals[othervar]}^2 - 2 \\times \\var{side_dsp_vals[helpingvar]} \\times \\var{side_dsp_vals[othervar]} \\times \\cos(\\var{angle_dsp_vals[findvar]})}=\\var{side_dsp_vals[findvar]}$ {units}

\n

", "rulesets": {}, "extensions": [], "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"obtuse": {"name": "obtuse", "group": "build the triangle", "definition": "if(angle_C_val>pi/2,1,0)", "description": "", "templateType": "anything", "can_override": false}, "findvar": {"name": "findvar", "group": "set up the problem", "definition": "random(0,1,2)", "description": "

0 = A, 1 = B, 2 = C

", "templateType": "anything", "can_override": false}, "side_b_val": {"name": "side_b_val", "group": "build the triangle", "definition": "decimal(random(5..200)/10)", "description": "", "templateType": "anything", "can_override": false}, "side_c_val": {"name": "side_c_val", "group": "build the triangle", "definition": "decimal(random(side_b_val*10..min(250,2*side_b_val*10))/10)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_deg": {"name": "angle_A_deg", "group": "build the triangle", "definition": "random(10..50)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_min": {"name": "angle_A_min", "group": "build the triangle", "definition": "random(0..59)", "description": "", "templateType": "anything", "can_override": false}, "angle_A_val": {"name": "angle_A_val", "group": "build the triangle", "definition": "radians(angle_A_deg + angle_A_min/60)", "description": "", "templateType": "anything", "can_override": false}, "side_a_val": {"name": "side_a_val", "group": "build the triangle", "definition": "precround(cosrule_side(side_b_val,side_c_val,angle_A_val),1)", "description": "", "templateType": "anything", "can_override": false}, "angle_B_val": {"name": "angle_B_val", "group": "build the triangle", "definition": "round_to_min(cosrule_angle(side_a_val,side_c_val,side_b_val))", "description": "", "templateType": "anything", "can_override": false}, "angle_C_val": {"name": "angle_C_val", "group": "build the triangle", "definition": "round_to_min(pi-angle_A_val-angle_B_val)", "description": "", "templateType": "anything", "can_override": false}, "aA": {"name": "aA", "group": "display vars", "definition": "if (findvar=0 and dsp1angle=1,angle_dsp_vals[0],if(findvar<>0 and dsp1angle=0,angle_dsp_vals[0],''))", "description": "", "templateType": "anything", "can_override": false}, "aB": {"name": "aB", "group": "display vars", "definition": "if (findvar=1 and dsp1angle=1,angle_dsp_vals[1],if(findvar<>1 and dsp1angle=0,angle_dsp_vals[1],''))", "description": "", "templateType": "anything", "can_override": false}, "aC": {"name": "aC", "group": "display vars", "definition": "if (findvar=2 and dsp1angle=1,angle_dsp_vals[2],if(findvar<>2 and dsp1angle=0,angle_dsp_vals[2],''))", "description": "", "templateType": "anything", "can_override": false}, "sa": {"name": "sa", "group": "display vars", "definition": "if(findvar=0,'a',side_dsp_vals[0])", "description": "", "templateType": "anything", "can_override": false}, "sb": {"name": "sb", "group": "display vars", "definition": "if(findvar=1,'b',side_dsp_vals[1])", "description": "", "templateType": "anything", "can_override": false}, "sc": {"name": "sc", "group": "display vars", "definition": "if(findvar=2,'c',side_dsp_vals[2])", "description": "", "templateType": "anything", "can_override": false}, "helpingvar": {"name": "helpingvar", "group": "set up the problem", "definition": "if(findvar=0,random(1,2),if(findvar=1,random(0,2),random(0,1)))", "description": "

0=a, 1=b, 2=c

", "templateType": "anything", "can_override": false}, "side_vals": {"name": "side_vals", "group": "set up the problem", "definition": "[side_a_val,side_b_val,side_c_val]", "description": "", "templateType": "anything", "can_override": false}, "angle_dsp_names": {"name": "angle_dsp_names", "group": "set up the problem", "definition": "['A','B','C']", "description": "", "templateType": "anything", "can_override": false}, "side_dsp_vals": {"name": "side_dsp_vals", "group": "set up the problem", "definition": "[precround(side_a_val,1),precround(side_b_val,1),precround(side_c_val,1)]", "description": "", "templateType": "anything", "can_override": false}, "angle_dsp_vals": {"name": "angle_dsp_vals", "group": "set up the problem", "definition": "[deg_to_degmin(degrees(angle_A_val)),deg_to_degmin(degrees(angle_B_val)),deg_to_degmin(degrees(angle_C_val))]", "description": "", "templateType": "anything", "can_override": false}, "unitchoices": {"name": "unitchoices", "group": "display vars", "definition": "['mm','cm','m','km']", "description": "", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "display vars", "definition": "random(unitchoices)", "description": "", "templateType": "anything", "can_override": false}, "othervar": {"name": "othervar", "group": "set up the problem", "definition": "3-findvar-helpingvar", "description": "", "templateType": "anything", "can_override": false}, "answer": {"name": "answer", "group": "set up the problem", "definition": "precround(cosrule_side(side_vals[helpingvar],side_vals[othervar],angle_vals[findvar]),1)", "description": "", "templateType": "anything", "can_override": false}, "dspchosenside": {"name": "dspchosenside", "group": "set up the problem", "definition": "side_dsp_names[findvar]", "description": "", "templateType": "anything", "can_override": false}, "dsp1angle": {"name": "dsp1angle", "group": "display vars", "definition": "random(0,1)", "description": "

0 = no: the other 2 angles are given

\n

1 = yes: the opposite angle is given

", "templateType": "anything", "can_override": false}, "test": {"name": "test", "group": "build the triangle", "definition": "round_to_min(cosrule_angle(side_a_val,side_c_val,side_b_val))", "description": "", "templateType": "anything", "can_override": false}, "side_dsp_names": {"name": "side_dsp_names", "group": "set up the problem", "definition": "['a','b','c']", "description": "", "templateType": "anything", "can_override": false}, "angle_vals": {"name": "angle_vals", "group": "set up the problem", "definition": "[angle_A_val,angle_B_val,angle_C_val]", "description": "", "templateType": "anything", "can_override": false}, "dspchosenangle": {"name": "dspchosenangle", "group": "Ungrouped variables", "definition": "", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["dspchosenangle"], "variable_groups": [{"name": "build the triangle", "variables": ["side_a_val", "side_b_val", "side_c_val", "angle_A_deg", "angle_A_min", "angle_A_val", "angle_B_val", "angle_C_val", "obtuse", "test"]}, {"name": "display vars", "variables": ["aA", "aB", "aC", "sa", "sb", "sc", "unitchoices", "units", "dsp1angle"]}, {"name": "set up the problem", "variables": ["findvar", "helpingvar", "othervar", "answer", "side_vals", "side_dsp_vals", "side_dsp_names", "angle_vals", "angle_dsp_vals", "angle_dsp_names", "dspchosenside"]}], "functions": {"deg_to_degmin": {"parameters": [["deg", "number"]], "type": "string", "language": "javascript", "definition": "min=Math.round((deg-Math.trunc(deg))*60);\ndegstr=String(Math.trunc(deg))+\"\u00b0\"+String(min)+\"'\";\nreturn degstr;"}, "dms": {"parameters": [["deg", "number"]], "type": "string", "language": "javascript", "definition": "degrees = Math.trunc(deg);\nmin = (deg - Math.trunc(deg))*60;\nminutes = Math.round(min);\nseconds = Math.round((min - Math.trunc(min))*6000)/100;\ndegstr=String(degrees)+\"\u00b0\"+String(minutes)+\"'\"+String(seconds)+\"''\";\nreturn degstr;"}, "cosrule_side": {"parameters": [["a", "number"], ["b", "number"], ["C", "number"]], "type": "number", "language": "javascript", "definition": "tmp=Math.pow(a,2) + Math.pow(b,2) - 2*a*b*Math.cos(C);\ntmp2 = Math.sqrt(tmp);\nreturn tmp2;"}, "sinerule_angle": {"parameters": [["a", "number"], ["b", "number"], ["angB", "number"]], "type": "number", "language": "javascript", "definition": "return Math.asin(a*Math.sin(angB)/b)"}, "cosrule_angle": {"parameters": [["a", "number"], ["b", "number"], ["c", "number"]], "type": "number", "language": "javascript", "definition": "num = Math.pow(a,2) + Math.pow(b,2) - Math.pow(c,2);\nden = 2 * a * b\nreturn Math.acos(num/den);"}, "round_to_min": {"parameters": [["angle", "number"]], "type": "number", "language": "javascript", "definition": "deg = angle * 180 / Math.PI;\ndegrees = Math.trunc(deg);\nmin = (deg - Math.trunc(deg))*60;\nminutes = Math.round(min);\nrounded = degrees + minutes/60;\nreturn rounded * Math.PI / 180;"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

{dspchosenangle} = [[0]] {units}

", "gaps": [{"type": "numberentry", "useCustomName": true, "customName": "length", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "answer", "maxValue": "answer", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "contributors": [{"name": "Merryn Horrocks", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4052/"}]}]}], "contributors": [{"name": "Merryn Horrocks", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4052/"}]}