ParametricEquationAnswers
This problem has been replaced with a newer version of this problem
Parametric Equations
This PG code shows how to check student answers that are parametric equations.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "parserMultiAnswer.pl", ); TEXT(beginproblem()); |
Initialization:
We need to include the macros file |
Context("Numeric"); Context()->variables->are(t=>"Real"); Context()->variables->set(t=>{limits=>[-5,5]}); $x = Formula("cos(t)"); $y = Formula("sin(t)"); $t0 = Compute("0"); $t1 = Compute("pi/3"); ($x0,$y0) = (1,0); ($x1,$y1) = (1/2,sqrt(3)/2); $multians = MultiAnswer($x, $y, $t0, $t1)->with( singleResult => 0, checker => sub { my ( $correct, $student, $self ) = @_; my ( $xstu, $ystu, $t0stu, $t1stu ) = @{$student}; if ( ( ($xstu**2 + $ystu**2) == 1 ) && ( ($xstu->eval(t=>$t0stu)) == $x0 ) && ( ($ystu->eval(t=>$t0stu)) == $y0 ) && ( ($xstu->eval(t=>$t1stu)) == $x1 ) && ( ($ystu->eval(t=>$t1stu)) == $y1 ) ) { return [1,1,1,1]; } elsif ( ( ($xstu**2 + $ystu**2) == 1 ) && ( ($xstu->eval(t=>$t0stu)) == $x0 ) && ( ($ystu->eval(t=>$t0stu)) == $y0 ) ) { return [1,1,1,0]; } elsif ( ( ($xstu**2 + $ystu**2) == 1 ) && ( ($xstu->eval(t=>$t1stu)) == $x1 ) && ( ($ystu->eval(t=>$t1stu)) == $y1 ) ) { return [1,1,0,1]; } elsif ( ( ($xstu**2 + $ystu**2) == 1 ) ) { return [1,1,0,0]; } else { return [0,0,0,0]; } } ); |
Setup:
We use a
When evaluating student's answers, it is important not to use quotes. For example, if the code were |
Context()->texStrings; BEGIN_TEXT Find a parametrization of the unit circle from the point \( \big(1,0\big) \) to \( \big(\frac{1}{2},\frac{\sqrt{3}}{2}\big) \). Use \( t \) as the parameter for your answers. $BR $BR \( x(t) = \) \{$multians->ans_rule(30)\} $BR \( y(t) = \) \{$multians->ans_rule(30)\} $BR $BR for \{ $multians->ans_rule(5) \} \( \leq t \leq \) \{ $multians->ans_rule(5) \} END_TEXT Context()->normalStrings; |
Main Text: The problem text section of the file is as we'd expect. |
$showPartialCorrectAnswers = 1; ANS( $multians->cmp() ); ENDDOCUMENT(); |
Answer Evaluation: As is the answer. |
- POD documentation: parserMultiAnswer.pl
- PG macro: parserMultiAnswer.pl