Volume1
An Integral with Weighted Answer Blanks
This PG code shows how to ask students to set up and evaluate an integral for calculating the volume of a solid of revolution. Each answer blank is weighted.
- Download file: File:Volume1.txt (change the file extension from txt to pg when you save it)
- File location in NPL:
FortLewis/Authoring/Templates/IntegralCalc/Volume1.pg
PG problem file | Explanation |
---|---|
Problem tagging: |
|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "PGunion.pl", "answerHints.pl", "weightedGrader.pl", ); TEXT(beginproblem()); install_weighted_grader(); $showPartialCorrectAnswers = 1; |
Initialization:
We load |
Context("Numeric"); Context()->variables->are( x=>"Real", dx=>"Real", y=>"Real", dy=>"Real" ); $f = Compute("x"); $g = Compute("x^2"); $upper = Real("1"); $lower = Real("0"); # answers below are intentionally wrong $int = Compute("( pi x - pi x^2 ) dx"); $vol = Compute("pi"); @weights = (5,5,40,50); # # Display the answer blanks properly in different modes # Context()->texStrings; if ($displayMode eq 'TeX') { $integral = 'Volume = \(\displaystyle' . '\int_{'. NAMED_ANS_RULE("lowerlimit",4). '}^{'. NAMED_ANS_RULE("upperlimit",4). '}'. NAMED_ANS_RULE("integrand",30). ' = '. NAMED_ANS_RULE("volume",10). '\)'; } else { $integral = BeginTable(center=>0). Row([ 'Volume = \(\displaystyle\int\)', NAMED_ANS_RULE("upperlimit",4).$BR.$BR. NAMED_ANS_RULE("lowerlimit",4), NAMED_ANS_RULE("integrand",30).$SPACE.' = '.$SPACE. NAMED_ANS_RULE("volume",10), ],separation=>2). EndTable(); } Context()->normalStrings; |
Setup: To keep the code that needs to be modified compartmentalized, we define the functions involved, the limits of integration, the integrand, the volume, and an array of weights (which sum to 100) for each of these answers.
The code for correctly displaying the answer blanks creates |
Context()->texStrings; BEGIN_TEXT Set up and evaluate an integral for the volume of the solid of revolution obtained by rotating the region bounded by \( y = $f \) and \( y = $g \) about the \(x\)-axis. $BR $BR $integral END_TEXT TEXT(MODES(TeX=>"",HTML=> "${PAR}${BITALIC}${BBOLD}Note:${EBOLD} You can earn $weights[0]${PERCENT} for the upper limit of integration, $weights[1]${PERCENT} for the lower limit of integration, $weights[2]${PERCENT} for the integrand, and $weights[3]${PERCENT} for the finding the volume. ${EITALIC}")); Context()->normalStrings; |
Main Text:
We use the mode-specific |
NAMED_WEIGHTED_ANS( "upperlimit" => $upper->cmp(), $weights[0] ); NAMED_WEIGHTED_ANS( "lowerlimit" => $lower->cmp(), $weights[1] ); NAMED_WEIGHTED_ANS( "integrand" => $int->cmp() ->withPostFilter(AnswerHints( Formula("pi x - pi x^2 dx") => "Don't forget to multiply every term in the integrand by dx", Formula("pi x - pi x^2") => "Don't forget the differential dx", Formula("(pi x^2 - pi x)*dx") => "Is the parabola above the line?", Formula("pi x^2 - pi x") => "Is the parabola above the line?", )), $weights[2] ); NAMED_WEIGHTED_ANS( "volume" => $vol->cmp(), $weights[3] ); |
Answer Evaluation:
The answer evaluator we use is |
Context()->texStrings; BEGIN_SOLUTION ${PAR}SOLUTION:${PAR} Solution explanation goes here. END_SOLUTION Context()->normalStrings; COMMENT('MathObject version. Weights each answer blank separately.'); ENDDOCUMENT(); |
Solution: We include a comment to the instructor to let them know how the question is being graded. |