// Numbas version: exam_results_page_options {"name": "D Graphs: Horizontal scale transformation", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"variables": {"maxx": {"group": "Ungrouped variables", "templateType": "anything", "definition": "max(map(abs(a),a,xn)+5)+1", "description": "", "name": "maxx"}, "yo": {"group": "Ungrouped variables", "templateType": "anything", "definition": "repeat(random(-5..5),5)", "description": "

the (random) original y values which relate to the x values

", "name": "yo"}, "hsc": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(selector='hsc',random(-2,-1,-0.5,0.5,2),1)", "description": "", "name": "hsc"}, "yo3": {"group": "Ungrouped variables", "templateType": "anything", "definition": "yo[3]", "description": "", "name": "yo3"}, "vsc": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(selector='vsc',random(-2,-1,-0.5,0.5,2),1)", "description": "", "name": "vsc"}, "vsh": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(selector='vsh',random(-3..3#0.5 except 0),0)\n", "description": "

vertical shift

", "name": "vsh"}, "hsh": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(selector='hsh',random(-3..3 except 0),0)", "description": "

horizontal shift

", "name": "hsh"}, "recip": {"group": "Ungrouped variables", "templateType": "anything", "definition": "1/hsc", "description": "", "name": "recip"}, "xo": {"group": "Ungrouped variables", "templateType": "anything", "definition": "list(-2..2)", "description": "

original x values

", "name": "xo"}, "yo1": {"group": "Ungrouped variables", "templateType": "anything", "definition": "yo[1]", "description": "", "name": "yo1"}, "maxy": {"group": "Ungrouped variables", "templateType": "anything", "definition": "max(map(abs(a),a,yn)+5)+1", "description": "", "name": "maxy"}, "yo0": {"group": "Ungrouped variables", "templateType": "anything", "definition": "yo[0]", "description": "", "name": "yo0"}, "xn": {"group": "Ungrouped variables", "templateType": "anything", "definition": "map((x-hsh)/hsc,x,xo)", "description": "

new transformed x values

", "name": "xn"}, "yn": {"group": "Ungrouped variables", "templateType": "anything", "definition": "map(vsc*y+vsh,y,yo)", "description": "

new y values after the transformation

", "name": "yn"}, "selector": {"group": "Ungrouped variables", "templateType": "anything", "definition": "'hsc'", "description": "", "name": "selector"}, "yo2": {"group": "Ungrouped variables", "templateType": "anything", "definition": "yo[2]", "description": "", "name": "yo2"}, "yo4": {"group": "Ungrouped variables", "templateType": "anything", "definition": "yo[4]", "description": "", "name": "yo4"}}, "statement": "

La gráfica de la función $y=f(x)$ se muestra en color Negro.

\n

Mueva o escriba las coordenadas de los puntos de color Rojo, de forma que estén sobre la gráfica de la función $y=\\simplify[fractionNumbers,all]{{vsc}f({hsc}x+{hsh})+{vsh}}$.

", "parts": [{"marks": 0, "showFeedbackIcon": true, "scripts": {}, "stepsPenalty": "0", "prompt": "
\n

El punto $A$ $(-2,\\var{yo0})$ se debe mover a $\\big($[[0]],[[1]]$\\big)$.
El punto $B$ $(-1,\\var{yo1})$ se debe mover a $\\big($[[2]],[[3]]$\\big)$.
El punto $C$ $(0,\\var{yo2})$ se debe mover a $\\big($[[4]],[[5]]$\\big)$.
El punto $D$ $(1,\\var{yo3})$ se debe mover a $\\big($[[6]],[[7]]$\\big)$.
El punto $E$ $(2,\\var{yo4})$ se debe mover a $\\big($[[8]],[[9]]$\\big)$.

", "type": "gapfill", "variableReplacementStrategy": "originalfirst", "gaps": [{"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "xn[0]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "xn[0]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "yn[0]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "yn[0]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "xn[1]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "xn[1]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "yn[1]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "yn[1]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "xn[2]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "xn[2]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "yn[2]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "yn[2]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "xn[3]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "xn[3]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "yn[3]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "yn[3]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "xn[4]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "xn[4]"}, {"showFeedbackIcon": true, "correctAnswerFraction": false, "notationStyles": ["plain", "en", "si-en"], "mustBeReducedPC": 0, "allowFractions": true, "maxValue": "yn[4]", "variableReplacements": [], "mustBeReduced": false, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": "5", "scripts": {}, "correctAnswerStyle": "plain", "type": "numberentry", "minValue": "yn[4]"}], "variableReplacements": [], "showCorrectAnswer": true, "steps": [{"marks": 0, "showFeedbackIcon": true, "scripts": {}, "prompt": "

La gráfica de $y=\\simplify[fractionNumbers,all]{{vsc}f({hsc}x+{hsh})+{vsh}}$ se va a escalar horizontalmete, de modo que cada valor en $x$ va a cambiar por 

\n
el doble de lo que era antes y se refleja con relación al eje $y$
\n
\n

el doble de lo que era antes

\n
\n
\n

una reflexion con respecto al eje $y$

\n
\n
\n

la mitad de lo que era antes

\n
\n
\n

la mitad de lo que era antes y se refleja con relación al eje $y$

\n
\n


hcs= {hcs}

\n

hsc= {hsc}

", "type": "information", "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "showCorrectAnswer": true}]}], "extensions": ["jsxgraph"], "tags": [], "metadata": {"licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International", "description": "

of a random cubic spline

"}, "variable_groups": [], "ungrouped_variables": ["selector", "vsh", "hsh", "vsc", "hsc", "yo", "yn", "xo", "xn", "yo0", "yo1", "yo2", "yo3", "yo4", "maxx", "maxy", "recip"], "functions": {}, "preamble": {"css": "table#values th {\n background: none;\n text-align: center;\n}", "js": "function dragpoint_board() {\n var scope = question.scope;\n \n // var a = scope.variables.a.value;\n// var c = scope.variables.c.value;\n\n var yo0 = scope.variables.yo0.value;\n var yo1 = scope.variables.yo1.value;\n var yo2 = scope.variables.yo2.value;\n var yo3 = scope.variables.yo3.value; \n var yo4 = scope.variables.yo4.value;\n \n var maxx = scope.variables.maxx.value;\n var maxy = scope.variables.maxy.value;\n \n var div = Numbas.extensions.jsxgraph.makeBoard('500px','500px',{boundingBox:[-maxx,maxy,maxx,-maxy],grid:true});\n $(question.display.html).find('#dragpoint').append(div);\n \n var board = div.board;\n \n \n //create stationary points\n \n var op0 = board.create('point',[-2,yo0],{name:'',fixed:true,size:2,color:'black'});\n var op1 = board.create('point',[-1,yo1],{name:'',fixed:true,size:2,color:'black'});\n var op2 = board.create('point',[0,yo2],{name:'',fixed:true,size:2,color:'black'});\n var op3 = board.create('point',[1,yo3],{name:'',fixed:true,size:2,color:'black'});\n var op4 = board.create('point',[2,yo4],{name:'',fixed:true,size:2,color:'black'});\n \n \n //create draggable points\n //why are there are a cloine under each one?\n var np0 = board.create('point',[-2,yo0],{name:'A',size:2,snapSizeX: 0.25,snapSizeY: 0.25,snapToGrid: true});\n var np1 = board.create('point',[-1,yo1],{name:'B',size:2,snapSizeX: 0.25,snapSizeY: 0.25,snapToGrid: true});\n var np2 = board.create('point',[0,yo2],{name:'C',size:2,snapSizeX: 0.25,snapSizeY: 0.25,snapToGrid: true});\n var np3 = board.create('point',[1,yo3],{name:'D',size:2,snapSizeX: 0.25,snapSizeY: 0.25,snapToGrid: true});\n var np4 = board.create('point',[2,yo4],{name:'E',size:2,snapSizeX: 0.25,snapSizeY: 0.25,snapToGrid: true});\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 = 5;\n var points = [np0, np1, np2, np3, np4];\n \n \n // this function sets up the i^th point\n function make_point(i) {\n \n // calculate initial coordinates\n // var x = i-(num_points-1)/2;\n \n // create an invisible vertical line for the point to slide along\n // var line = board.create('line',[[x,0],[x,1]],{visible: false});\n \n // create the point\n // var point = points[i] = board.create(\n // 'point',\n // [i-(num_points-1)/2,0],\n // {\n // name:'',\n // size:2,\n // snapSizeY: 0.25, // the point will snap to y-coordinates which are multiples of 0.1\n // snapSizeX: 0.25,\n // snapToGrid: true\n // }\n // );\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[2*i].display.studentAnswer;\n var ystudentAnswer = question.parts[0].gaps[2*i+1].display.studentAnswer;\n \n // watch the student's input and reposition the point when it changes. \n ko.computed(function() {\n x = evaluate(xstudentAnswer());\n y = evaluate(ystudentAnswer());\n if(!(isNaN(x)) && !(isNaN(y)) && board.mode!=board.BOARD_MODE_DRAG) {\n point.moveTo([x,y],100);\n }\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 xstudentAnswer(x);\n ystudentAnswer(y);\n });\n \n }\n \n // create each point\n for(var i=0;i