// Numbas version: exam_results_page_options {"name": "Classify singular points of a second order ODE", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"variable_groups": [{"variables": ["singular_points", "extra_points", "points", "a", "b", "c", "p", "q", "y''", "y'", "y", "is_essential", "essential_points", "regular_points"], "name": "Unnamed group"}], "variables": {"q": {"group": "Unnamed group", "templateType": "anything", "definition": "map(c[j]-a[j],j,0..len(points)-1)", "description": "

Power of $x-\\alpha$ in $q(x)$, for $\\alpha \\in roots$

", "name": "q"}, "singular_points": {"group": "Unnamed group", "templateType": "anything", "definition": "shuffle(list(-5..5))[0..random(0,1,1,1,2,2,2,2)]", "description": "

Some randomly picked points to be singular.

", "name": "singular_points"}, "points": {"group": "Unnamed group", "templateType": "anything", "definition": "singular_points+extra_points", "description": "", "name": "points"}, "b": {"group": "Unnamed group", "templateType": "anything", "definition": "map(max(0,x+random(-2..1)),x,a[0..len(a)-2])+[random(1,1,1,2),0]", "description": "

Power of $x-\\alpha$ in coefficient of $y'$, for $\\alpha \\in roots$

", "name": "b"}, "c": {"group": "Unnamed group", "templateType": "anything", "definition": "map(max(0,random(x-2..x+1 except x)),x,a[0..len(a)-2])+[0,random(1,1,1,2)]", "description": "

Power of $x-\\alpha$ in coefficient of $y$, for $\\alpha \\in roots$

", "name": "c"}, "regular_points": {"group": "Unnamed group", "templateType": "anything", "definition": "singular_points except essential_points", "description": "

The regular singular points

", "name": "regular_points"}, "y''": {"group": "Unnamed group", "templateType": "anything", "definition": "coefficient(singular_points,a,'y\\'\\'')", "description": "

$y''$ term.

", "name": "y''"}, "essential_points": {"group": "Unnamed group", "templateType": "anything", "definition": "filterjs(singular_points,is_essential)", "description": "

The essential singular points

", "name": "essential_points"}, "extra_points": {"group": "Unnamed group", "templateType": "anything", "definition": "shuffle(-5..5 except singular_points)[0..2]", "description": "", "name": "extra_points"}, "y'": {"group": "Unnamed group", "templateType": "anything", "definition": "coefficient(points,b,'y\\'')", "description": "

$y'$ term

", "name": "y'"}, "is_essential": {"group": "Unnamed group", "templateType": "anything", "definition": "map(b[j]Is point $j$ an essential singular point? True if $(x-\\alpha_j)^{a_j-b_j}>1$ or $(x-\\alpha_j)^{a_j-c_j}>1$

", "name": "is_essential"}, "a": {"group": "Unnamed group", "templateType": "anything", "definition": "map(random(1..2),x,singular_points)+[0,0]", "description": "

Power of $x-\\alpha$ in coefficient of $y''$, for $\\alpha \\in roots$

", "name": "a"}, "p": {"group": "Unnamed group", "templateType": "anything", "definition": "map(b[j]-a[j],j,0..len(points)-1)", "description": "

Power of $x-\\alpha$ in $p(x)$, for $\\alpha \\in roots$

", "name": "p"}, "y": {"group": "Unnamed group", "templateType": "anything", "definition": "coefficient(points,c,'y')", "description": "

$y$ term.

", "name": "y"}}, "ungrouped_variables": [], "name": "Classify singular points of a second order ODE", "functions": {"filterjs": {"type": "list", "language": "javascript", "definition": "// elements x[i] such that include[i] is true\nreturn x.filter(function(v,i){ return include[i] });", "parameters": [["x", "list"], ["include", "list"]]}, "coefficient": {"type": "string", "language": "javascript", "definition": "var tops = [];\nvar bottoms = [];\nfor(var i=0;i0) {\n tops.push(s);\n } else if(powers[i]<0) {\n bottoms.push(s);\n }\n}\n\nvar s = '1';\nif(tops.length) {\n if(bottoms.length) {\n s = '('+tops.join('*')+')/('+bottoms.join('*')+')';\n } else {\n s = tops.join(' * ');\n }\n} else if(bottoms.length) {\n s = '1/('+bottoms.join('*')+')';\n}\ns += extra;\nreturn Numbas.jme.display.exprToLaTeX(s,'all',Numbas.jme.builtinScope);", "parameters": [["roots", "list"], ["powers", "list"], ["extra", "string"]]}, "show": {"type": "html", "language": "javascript", "definition": "return $('');", "parameters": [["n", "number"]]}}, "parts": [{"prompt": "

Regular singular points: [[0]]

\n

", "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "useCustomName": false, "customName": "", "unitTests": [], "showFeedbackIcon": true, "scripts": {}, "gaps": [{"answer": "{sort(regular_points)}", "useCustomName": false, "customMarkingAlgorithm": "", "checkingType": "absdiff", "extendBaseMarkingAlgorithm": true, "showPreview": true, "customName": "", "checkVariableNames": false, "unitTests": [], "valuegenerators": [], "vsetRange": [0, 1], "marks": 1, "showFeedbackIcon": true, "scripts": {"mark": {"script": "var os = this.studentAnswer;\nvar oc = this.settings.correctAnswer;\nthis.studentAnswer = 'set('+this.studentAnswer+')';\nthis.settings.correctAnswer = 'set('+this.settings.correctAnswer+')';\nJMEPart.prototype.mark.apply(this);\n\nthis.studentAnswer = os;\nthis.settings.correctAnswer = oc;", "order": "instead"}}, "vsetRangePoints": 5, "type": "jme", "variableReplacementStrategy": "originalfirst", "checkingAccuracy": 0.001, "showCorrectAnswer": true, "variableReplacements": [], "failureRate": 1}], "type": "gapfill", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "variableReplacements": [], "marks": 0, "sortAnswers": false}, {"prompt": "

Essential singular points: [[0]]

\n

", "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "useCustomName": false, "customName": "", "unitTests": [], "showFeedbackIcon": true, "scripts": {}, "gaps": [{"answer": "{sort(essential_points)}", "useCustomName": false, "customMarkingAlgorithm": "", "checkingType": "absdiff", "extendBaseMarkingAlgorithm": true, "showPreview": true, "customName": "", "checkVariableNames": false, "unitTests": [], "valuegenerators": [], "vsetRange": [0, 1], "marks": 1, "showFeedbackIcon": true, "scripts": {"mark": {"script": "var os = this.studentAnswer;\nvar oc = this.settings.correctAnswer;\nthis.studentAnswer = 'set('+this.studentAnswer+')';\nthis.settings.correctAnswer = 'set('+this.settings.correctAnswer+')';\nJMEPart.prototype.mark.apply(this);\n\nthis.studentAnswer = os;\nthis.settings.correctAnswer = oc;", "order": "instead"}}, "vsetRangePoints": 5, "type": "jme", "variableReplacementStrategy": "originalfirst", "checkingAccuracy": 0.001, "showCorrectAnswer": true, "variableReplacements": [], "failureRate": 1}], "type": "gapfill", "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "variableReplacements": [], "marks": 0, "sortAnswers": false}], "variablesTest": {"condition": "", "maxRuns": 100}, "statement": "

Find and classify all the singular points (excluding the point at infinity) of the equation

\n

\\[ \\var{latex(y'')} + \\var{latex(y')} + \\var{latex(y)} = 0 \\]

\n

Enter your answer for each part as a list of numbers, separated by commas and enclosed in square brackets. For example, if $8$ and $9$ were regular singular points, you would enter [8,9]. If there are no points, enter [].

", "tags": ["checked2015"], "rulesets": {}, "preamble": {"css": "", "js": ""}, "type": "question", "extensions": [], "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": "

Trying out something: get the student to enter a set for each of \"regular singular points\" and \"essential singular points\".

\n

Find and classify singular points of a second-order ordinary differential equation.  One equation is chosen from a selection of 10.

"}, "advice": "

First write the equation in the form

\n

\\[y''+p(x)y'+q(x)y=0,\\]

\n

so we have

\n

\\[ y'' + \\var{latex(coefficient(points,p,'y\\''))} + \\var{latex(coefficient(points,q,'y'))} = 0 \\]

\n

That is,

\n

\\begin{align}
  p(x) &= \\var{latex(coefficient(points,p,''))}, & q(x) &= \\var{latex(coefficient(points,q,''))}.
\\end{align}

\n
\n

This equation has no singular points, i.e. all points are analytic.

\n
\n
\n

$x = \\var{singular_points[0]}$ is a singular point of the equation. This is a regular essential point if both $(\\simplify{x-{singular_points[0]}})p(x)$ and $(\\simplify{x-{singular_points[0]}})^2q(x)$ are analytic at $x = \\var{singular_points[0]}$.

\n

So first form

\n

\\[ (\\simplify[]{x-{singular_points[0]}})p(x) = \\var{latex(coefficient(points,[p[0]+1]+p[1..len(p)],''))} \\]

\n

This is {if(p[0]+1>=0,\"analytic\",\"singular\")} at $x = \\var{singular_points[0]}$.

\n
\n

Next, form

\n

\\[ (\\simplify[]{x-{singular_points[0]}})^2q(x) = \\var{latex(coefficient(points,[q[0]+2]+q[1..len(q)],''))} \\]

\n

This is {if(q[0]+2>=0,\"analytic\",\"singular\")} at $x = \\var{singular_points[0]}$.

\n
\n

Hence $x = \\var{singular_points[0]}$ is {if(is_essential[0],\"an essential\",\"a regular\")} singular point.

\n
\n
\n

$x = \\var{singular_points[1]}$ is another singular point of the equation, so form

\n

\\[ (\\simplify[]{x-{singular_points[1]}})p(x) = \\var{latex(coefficient(points,[p[0],p[1]+1]+p[2..len(p)],''))} \\]

\n

This is {if(p[1]+1>=0,\"analytic\",\"singular\")} at $x = \\var{singular_points[1]}$.

\n
\n

Next, form

\n

\\[ (\\simplify[]{x-{singular_points[1]}})^2q(x) = \\var{latex(coefficient(points,[q[0],q[1]+2]+q[2..len(q)],''))} \\]

\n

This is {if(q[1]+2>=0,\"analytic\",\"singular\")} at $x = \\var{singular_points[1]}$.

\n
\n

Hence $x = \\var{singular_points[1]}$ is {if(is_essential[1],\"an essential\",\"a regular\")} singular point.

\n
", "contributors": [{"name": "Christian Lawson-Perfect", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/"}, {"name": "Newcastle University Mathematics and Statistics", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/697/"}]}]}], "contributors": [{"name": "Christian Lawson-Perfect", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/"}, {"name": "Newcastle University Mathematics and Statistics", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/697/"}]}