// Numbas version: exam_results_page_options {"name": "Fourier Sketching (-3 to 3)", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"variablesTest": {"maxRuns": "200", "condition": ""}, "advice": "
The correct graph is shown below.
\n{graph(a,b,c)}
", "preamble": {"js": "function dragpoint_board() {\n var scope = question.scope;\n \n var a = scope.variables.a.value;\n var b = scope.variables.b.value;\n var c = scope.variables.c.value;\n\n \n var div = Numbas.extensions.jsxgraph.makeBoard('500px','500px',{boundingBox:[-3.3,13.5,3.3,-13.5],grid:true,withLabel:true});\n $(question.display.html).find('#dragpoint').append(div);\n\n var board = div.board;\n \n// ceeate axis labels\n \n var label1 = board.create('point',[3.1,0.2],{name:'X',size:-1});\n label1.setProperty({fixed:true});\n var label2 = board.create('point',[0,14.3],{name:'y',size:-1});\n label2.setProperty({fixed:true});\n \n \n \n //create draggable points\n\n\n var line0 = board.create('line',[[-3,0],[-3,4]],{visible: false});\n var np0 = board.create('glider',[-3,8,line0],\n {\n name:'A',\n size:3\n }\n );\n\n var line1 = board.create('line',[[0,0],[0,4]],{visible: false});\n var np1 = board.create('glider',[-1,8,line1],\n {\n name:'B',\n size:3\n }\n );\n \n var line2 = board.create('line',[[0,0],[0,4]],{visible: false});\n var np2 = board.create('glider',[0,6,line2],\n {\n name:'C',\n size:3,\n }\n );\n \n var line3 = board.create('line',[[3,0],[3,4]],{visible: false});\n var np3 = board.create('glider',[0,6,line3],\n {\n name:'D',\n size:3,\n }\n );\n \n \n //shorthand to evaluate a mathematical expression to a number\n function evaluate(expression) {\n try {\n var val = Numbas.jme.evaluate(expression,question.scope);\n return Numbas.jme.unwrapValue(val);\n }\n catch(e) {\n // if there's an error, return no number\n return NaN;\n }\n }\n \n // set up points array\n var num_points = 4;\n var points = [np0, np1, np2, np3];\n \n \n // this function sets up the i^th point\n function make_point(i) {\n \n var point = points[i];\n \n var x=point[0];\n var y=point[1];\n \n // the contents of the input box for this point\n var xstudentAnswer = question.parts[0].gaps[i].display.studentAnswer;\n\n \n // when the student drags the point, update the gapfill input\n point.on('drag',function(){\n var x = Numbas.math.niceNumber(point.X());\n var y = Numbas.math.niceNumber(point.Y());\n if(i < 2)\n {\n var diff = y-(a);\n xstudentAnswer(diff);\n }\n if (i===2)\n {\n var diff = y-(c);\n xstudentAnswer(diff);\n }\n if (i===3)\n {\n var diff = y-(b*3+c);\n xstudentAnswer(diff);\n }\n });\n \n }\n \n // create each point\n for(var i=0;iBy dragging the points A, B, and C, construct the graph of the function
\n$ f(x) = \\left\\{ \\begin{array}{cl} \\var{a}\\;\\;\\;\\;\\;\\;\\;\\;\\; -3 < x < 0 \\\\ \\simplify{{b}x + {c}} \\;\\;\\;\\;\\; \\; \\; 0<x<3.\\end{array}\\right.$
\nNote that in order to be marked correct, the points need to be within 0.2 of their correct $y$-values.
\nAlso note that you have to drag each of the points in order to be able to submit your answer.
", "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "ungrouped_variables": ["a", "b", "c"], "type": "question", "contributors": [{"name": "Gareth Woods", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/978/"}]}]}], "contributors": [{"name": "Gareth Woods", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/978/"}]}