// Numbas version: exam_results_page_options {"name": "2. Change of Form (Cartesian to Polar)", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"functions": {"t1script": {"definition": "var r1 = Numbas.jme.unwrapValue(scope.variables.r1); // define random parameter r1\nvar p = Numbas.jme.unwrapValue(scope.variables.p ); // define random parameter p\nvar q = Numbas.jme.unwrapValue(scope.variables.q ); // define random parameter q\n\n var i1 = 2*q-p, i2 = q-p,\n t1, t2;\nif (i1 == 1) {\n\nt1 = 1/2\nt2 = 3/2\n\n} else if (i2 == 1) {\n\nt1 = -1/2\nt2 = 1/2\n\n} else {\n\nt1 = 0\nt2 = 2\n\n}\n\nreturn t1;", "type": "number", "language": "javascript", "parameters": []}, "t2script": {"definition": "var r1 = Numbas.jme.unwrapValue(scope.variables.r1); // define random parameter r1\nvar p = Numbas.jme.unwrapValue(scope.variables.p ); // define random parameter p\nvar q = Numbas.jme.unwrapValue(scope.variables.q ); // define random parameter q\n\n var i1 = 2*q-p, i2 = q-p,\n t1, t2;\nif (i1 == 1) {\n\nt1 = 1/2\nt2 = 3/2\n\n} else if (i2 == 1) {\n\nt1 = -1/2\nt2 = 1/2\n\n} else {\n\nt1 = 0\nt2 = 2\n\n}\n\nreturn t2;", "type": "number", "language": "javascript", "parameters": []}, "domain": {"definition": "var r1 = Numbas.jme.unwrapValue(scope.variables.r1); // define random parameter r1\nvar r2 = Numbas.jme.unwrapValue(scope.variables.r2); // define random parameter r2\nvar p = Numbas.jme.unwrapValue(scope.variables.p ); // define random parameter p\nvar q = Numbas.jme.unwrapValue(scope.variables.q ); // define random parameter q\nvar pi = Math.PI;\n\nvar makeboard = Numbas.extensions.jsxgraph.makeBoard\n('250px','250px',{boundingBox:[-14,14,14,-14], axis:true, grid:false}); // define how the graph is displayed\nvar board = makeboard.board; // generate the graph\n\n\nvar c1 = board.create('curve',\n [ function(r){ return r1;},\n [0,0], 0, 2*pi]\n );\nvar c2 = board.create('curve',\n [ function(r){ return r2;},\n [0,0], 0, 2*pi]\n );\nvar r_label1 = board.create('point', [-r1,0], {size: 1, name:'r='+ r1.toString() +'', label:{offset:[-16,10]}, fixed:true}); // create the label for r1\nvar r_label2 = board.create('point', [ r2,0], {size: 1, name:'r='+ r2.toString() +'', label:{offset:[ 5,10]}, fixed:true}); // create the label for r2\n\n\nvar area = board.create('curve', [[], []], {color: 'blue', opacity: 0.4});\nvar f = [];\nf.push(c1);\nf.push(c2);\narea.updateDataArray = function () {\n var i1 = 2*q-p, i2 = q-p;\n \n// RIGHT\nif (i1 == 1) {\n\n // start and end\n var left = 0, middle = r1, right = r2,\n x = [], y = [];\n \n// go forwards around c1\n curve = f[0]; \n for (i = 0; i < curve.numberPoints; i++) {\n if ((left <= curve.points[i].usrCoords[1]) && (curve.points[i].usrCoords[1] <= middle)) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n }\n// go backwards around c2\n curve = f[1];\n for (i = curve.numberPoints - 1; i >= 0; i--) {\n if ((left <= curve.points[i].usrCoords[1]) && (curve.points[i].usrCoords[1] <= right)) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n }\n\n// LEFT\n} else if (i2 == 1) {\n\n // start and end\n var left = -r2, middle = -r1, right = 0,\n x = [], y = [];\n \n// go backwards around c1\n curve = f[0]; \n for (i = curve.numberPoints - 1; i >= 0; i--) {\n if ((middle <= curve.points[i].usrCoords[1]) && (curve.points[i].usrCoords[1] <= right)) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n }\n// go forwards around c2\n curve = f[1];\n for (i = 0; i < curve.numberPoints; i++) {\n if ((left <= curve.points[i].usrCoords[1]) && (curve.points[i].usrCoords[1] <= right)) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n }\n\n// BOTH\n\n} else {\n\n x = [], y = [];\n \n// go forwards around c1\n curve = f[0]; \n for (i = 0; i < curve.numberPoints; i++) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n// go backwards around c2\n curve = f[1]; \n for (i = curve.numberPoints - 1; i >= 0; i--) {\n x.push(curve.points[i].usrCoords[1]);\n y.push(curve.points[i].usrCoords[2]);\n }\n}\n \n// close the curve\n this.dataX = x;\n this.dataY = y;\n}\n\nreturn makeboard; // update the board", "type": "html", "language": "javascript", "parameters": []}}, "parts": [{"prompt": "

Write the integral in the form
\\[ \\int_{\\simplify[fractionNumbers]{{t1script()}pi}}^{d\\pi}  \\int_a^b f(r,\\theta) \\, \\mathrm{d}r \\, \\mathrm{d}\\theta .\\]

\n

$a=\\,$[[0]] $b=\\,$[[1]]

\n

$d=\\,$[[2]]

\n

$f(r,\\theta)=\\,$[[3]](fully expanded)

", "variableReplacements": [], "gaps": [{"showCorrectAnswer": true, "minValue": "r1", "allowFractions": false, "mustBeReduced": false, "scripts": {}, "variableReplacementStrategy": "originalfirst", "notationStyles": ["plain", "en", "si-en"], "marks": "1", "variableReplacements": [], "correctAnswerFraction": false, "maxValue": "r1", "showFeedbackIcon": true, "mustBeReducedPC": 0, "type": "numberentry", "correctAnswerStyle": "plain"}, {"showCorrectAnswer": true, "minValue": "r2", "allowFractions": false, "mustBeReduced": false, "scripts": {}, "variableReplacementStrategy": "originalfirst", "notationStyles": ["plain", "en", "si-en"], "marks": 1, "variableReplacements": [], "correctAnswerFraction": false, "maxValue": "r2", "showFeedbackIcon": true, "mustBeReducedPC": 0, "type": "numberentry", "correctAnswerStyle": "plain"}, {"showCorrectAnswer": true, "minValue": "{t2script()}", "allowFractions": true, "mustBeReduced": true, "scripts": {"constructor": {"script": "var r1 = Numbas.jme.unwrapValue(variables.r1); // define random parameter r1\nvar p = Numbas.jme.unwrapValue(variables.p ); // define random parameter p\nvar q = Numbas.jme.unwrapValue(variables.q ); // define random parameter q\nvar pi = Math.PI\n\n var i1 = 2*q-p, i2 = q-p,\n t1, t2;\nif (i1 == r1) {\n\nt1 = pi/2\nt2 = 3*pi/2\n\n} else if (i2 == r1) {\n\nt1 = -pi/2\nt2 = pi/2\n\n} else {\n\nt1 = 0\nt2 = 2*pi\n\n}\n\nreturn t2;", "order": "after"}}, "variableReplacementStrategy": "originalfirst", "notationStyles": ["plain", "en", "si-en"], "marks": 1, "variableReplacements": [], "correctAnswerFraction": true, "maxValue": "{t2script()}", "showFeedbackIcon": true, "mustBeReducedPC": 0, "type": "numberentry", "correctAnswerStyle": "plain"}, {"expectedvariablenames": [], "showpreview": true, "scripts": {}, "variableReplacementStrategy": "originalfirst", "checkingaccuracy": 0.001, "marks": 1, "vsetrangepoints": 5, "checkingtype": "absdiff", "variableReplacements": [], "vsetrange": [0, 1], "showCorrectAnswer": true, "showFeedbackIcon": true, "type": "jme", "checkvariablenames": false, "answer": "{a}r^{m+1}cos^{m} theta + {c-b}r^3sin^2 theta + {b}r^3 + {d}r"}], "showCorrectAnswer": true, "scripts": {}, "variableReplacementStrategy": "originalfirst", "type": "gapfill", "showFeedbackIcon": true, "marks": 0}], "variable_groups": [{"name": "Original variables", "variables": ["a", "m", "b", "c", "d", "p", "q", "r1", "r2"]}], "advice": "

We already have the limits of $r$ from the domain: $\\var{r1}$ and $\\var{r2}$.

\n

As we move anticlockwise around the origin $\\theta$ increases, so the upper limit is $\\simplify[fractionNumbers]{{t2script()}pi}$.

\n

As for $f(r,\\theta)$, the first term changes to

\n

\\[ \\simplify{{a}x^{m}} = \\simplify{{a}r^{m}}\\cos^\\var{m}\\theta \\]

\n

The 2nd and 3rd terms can be rearranged so that

\n

\\begin{align}
\\simplify{{b}x^2} + \\simplify{{c}y^2}
&= \\simplify{{b}(x^2 + y^2)} &+& \\simplify{{c-b}y^2} \\\\
&= \\simplify{{b}r^2}              &+& \\simplify{{c-b}r^2}\\sin^2{\\theta},
\\end{align}

\n

The last term is a constant, so it doesn't change.

\n

Finally, when we change an integral from cartesian to polar form we need to multiply the function by $r$.

\n

So the whole definite integral in polar form is

\n

\\[  \\int_\\simplify[fractionNumbers]{{t1script()}pi}^\\simplify[fractionNumbers]{{t2script()}pi}  \\int_{\\var{r1}}^{\\var{r2}} \\simplify{{a}r^{m+1}}\\cos^\\var{m}{\\theta} + \\simplify{{c-b}r^3}\\sin^2{\\theta}+ \\simplify{{b}r^3} + \\var{d}r \\, \\mathrm{d}r \\, \\mathrm{d}\\theta .\\]

", "preamble": {"css": "", "js": ""}, "metadata": {"licence": "None specified", "description": "

I created this question, and every other question in Multiple Integration, for my dissertation `Computer-Aided Assessment of Multiple Integration'.

"}, "tags": [], "name": "2. Change of Form (Cartesian to Polar)", "ungrouped_variables": [], "statement": "

Convert this integral from cartesian to polar form, and define the limits of integration from the domain.

\n

\\[  \\iint \\simplify{{a}x^{m}} + \\simplify{{b}x^2} + \\simplify{{c}y^2} + \\var{d} \\, \\mathrm{d}y \\, \\mathrm{d}x \\]

\n

{domain()}

", "extensions": ["jsxgraph"], "variablesTest": {"maxRuns": "30", "condition": ""}, "rulesets": {}, "variables": {"d": {"definition": "random(1..9#1)", "name": "d", "group": "Original variables", "description": "", "templateType": "randrange"}, "r1": {"definition": "random(1..8#1)", "name": "r1", "group": "Original variables", "description": "", "templateType": "randrange"}, "c": {"definition": "random(b+1..9)", "name": "c", "group": "Original variables", "description": "", "templateType": "anything"}, "r2": {"definition": "random(r1+1..9)", "name": "r2", "group": "Original variables", "description": "", "templateType": "anything"}, "b": {"definition": "random(1..8#1)", "name": "b", "group": "Original variables", "description": "", "templateType": "randrange"}, "q": {"definition": "random(p+1,1)", "name": "q", "group": "Original variables", "description": "", "templateType": "anything"}, "m": {"definition": "random(3..4#1)", "name": "m", "group": "Original variables", "description": "", "templateType": "randrange"}, "a": {"definition": "random(1..9#1)", "name": "a", "group": "Original variables", "description": "", "templateType": "randrange"}, "p": {"definition": "random(-1,0)", "name": "p", "group": "Original variables", "description": "", "templateType": "anything"}}, "type": "question", "contributors": [{"name": "Nicholas Barker", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1915/"}]}]}], "contributors": [{"name": "Nicholas Barker", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1915/"}]}