// Numbas version: finer_feedback_settings {"name": "Trapezium Rule", "extensions": ["jsxgraph"], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "Trapezium Rule", "tags": [], "metadata": {"description": "Using the trapezium rule with 5 ordinates to approximate $\\int_a^b{1/(x^2+c)}$", "licence": "Creative Commons Attribution 4.0 International"}, "statement": "
Use the trapezium rule with {n+1} ordinates ({n} strips)
", "advice": "The trapezium rule states that $\\int^b_aydx\\approx0.5h[(y_0+y_n)+2(y_1+y_2+...+y_{n-1})]$ where $h=\\frac{b-a}{n}$
\nIn our example $a=\\var{a}, b=\\var{b}$ and $n=\\var{n}$ is the number of strips.
\nHence $h=\\frac{\\var{b}-\\var{a}}{\\var{n}}=\\var{h}$
\nSo $\\int^\\var{b}_\\var{a}{\\frac{1}{x^2+\\var{c}}}dx\\approx0.5\\times\\var{h}[(y_0+y_4)+2(y_1+y_2+y_3)]$
\nOur values of $x_i$ are given by $a+h \\times i=\\var{a}+\\var{h}\\times i$, as we vary $i$ from 0 to $\\var{n}$
\nThus we obtain $[x_0,...,x_\\var{n}] = \\var{x}$
\nNow we can calculate each $y_i$ as $y_i = y(x_i) = {\\frac{1}{x_i^2+\\var{c}}}$
\nThus we obtain $[y_0,...,y_\\var{n}] = \\var{y}$
\nHence $\\int^\\var{b}_\\var{a}{\\frac{1}{x^2+\\var{c}}}dx\\approx0.5\\times\\var{h}[(\\var{y[0]}+\\var{y[4]})+2(\\var{y[1]}+\\var{y[2]}+\\var{y[3]})] \\approx \\var{answer}$
\n\nFor comparison, the exact integral $\\int{\\frac{1}{x^2+\\var{c}}}dx$ is given by $\\frac{tan^{-1}(x/ \\sqrt {\\var{c}})}{\\sqrt {\\var{c}}}$. Hence the exact value of $\\int^\\var{b}_\\var{a}{\\frac{1}{x^2+\\var{c}}}dx$ is $\\frac{tan^{-1}(\\var{b}/\\sqrt {\\var{c}})}{\\sqrt {\\var{c}}}-\\frac{tan^{-1}(\\var{a}/\\sqrt {\\var{c}})}{\\sqrt {\\var{c}}} = \\var{precround(exactanswer,5)}$
\n\nThe trapezium rule approximation to the area under the curve can be seen below. The convexity of the curve explains why in this case the trapezium rule gives an overestimate of the true integral.
\n\n{plotf(c,n,a,b)}
", "rulesets": {}, "extensions": ["jsxgraph"], "variables": {"a": {"name": "a", "group": "Ungrouped variables", "definition": "random(1 .. 3#1)", "description": "", "templateType": "randrange"}, "h": {"name": "h", "group": "Ungrouped variables", "definition": "random(0.25,0.5,1)", "description": "", "templateType": "anything"}, "n": {"name": "n", "group": "Ungrouped variables", "definition": "4", "description": "", "templateType": "anything"}, "b": {"name": "b", "group": "Ungrouped variables", "definition": "a+(n)*h", "description": "", "templateType": "anything"}, "c": {"name": "c", "group": "Ungrouped variables", "definition": "random(1,2,3)", "description": "", "templateType": "anything"}, "x": {"name": "x", "group": "Ungrouped variables", "definition": "list(a..b#h)", "description": "", "templateType": "anything"}, "y": {"name": "y", "group": "Ungrouped variables", "definition": "map(precround(1/(z^2+c),5),z,x)", "description": "", "templateType": "anything"}, "answer": {"name": "answer", "group": "Ungrouped variables", "definition": "precround(0.5*h*(y[0]+y[4]+2*(y[1]+y[2]+y[3])),5)", "description": "", "templateType": "anything"}, "exactanswer": {"name": "exactanswer", "group": "Ungrouped variables", "definition": "(arctan(b/sqrt(c))-arctan(a/sqrt(c)))/sqrt(c)", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "a<>h", "maxRuns": 100}, "ungrouped_variables": ["a", "h", "n", "b", "c", "x", "y", "answer", "exactanswer"], "variable_groups": [], "functions": {"plotf": {"parameters": [["c", "number"], ["n", "number"], ["a", "number"], ["b", "number"]], "type": "html", "language": "javascript", "definition": "\nvar div = Numbas.extensions.jsxgraph.makeBoard('400px','400px', {axis:true,showNavigation:false, boundingbox:[a-0.5,1/(c+(a-0.5)*(a-0.5)),b+0.5,-0.1/c]});\nvar brd=div.board;\n//The function for which we are estimating the integral. \n//This dispays to the right\nvar f = function(x){ return 1/(x*x+c); };\nvar plot = brd.create('functiongraph',[f,0,b+1]);\nvar os = brd.create('riemannsum',[f,n,'trapezoidal',a, b ], \n{fillColor:'#ffff00', fillOpacity:0.3});\nreturn div;"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "numberentry", "useCustomName": false, "customName": "", "marks": "3", "showCorrectAnswer": true, "showFeedbackIcon": true, "scripts": {}, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "adaptiveMarkingPenalty": 0, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "prompt": "Find an approximate value for $\\int_\\var{a}^\\var{b}{\\frac{1}{x^2+\\var{c}}}dx$
", "minValue": "answer", "maxValue": "answer", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "precisionType": "dp", "precision": "3", "precisionPartialCredit": 0, "precisionMessage": "You have not given your answer to the correct precision.", "strictPrecision": false, "showPrecisionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "type": "question", "contributors": [{"name": "Simon Thomas", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/3148/"}]}]}], "contributors": [{"name": "Simon Thomas", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/3148/"}]}