Difference between revisions of "ParametricEquationAnswers"
Jump to navigation
Jump to search
(New page: <h2>Parametric Equations</h2> <!-- Header for these sections -- no modification needed --> <p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> <em>This PG code sh...) |
|||
Line 100: | Line 100: | ||
<p> |
<p> |
||
<b>Setup:</b> |
<b>Setup:</b> |
||
− | We use a <code>MultiAnswer()</code> answer checker that will verify that the students answers satisfy the equation for the circle and have the required starting and ending points. This answer checker will allow students to enter any correct parametrization. For example, both <code>x = cos(t), y = sin(t), 0 & |
+ | We use a <code>MultiAnswer()</code> answer checker that will verify that the students answers satisfy the equation for the circle and have the required starting and ending points. This answer checker will allow students to enter any correct parametrization. For example, both <code>x = cos(t), y = sin(t), 0 ≤ t ≤ pi/3</code> and <code>x = cos(2t), y = sin(2t), 0 ≤ t ≤ pi/6</code> will be marked correct. |
</p> |
</p> |
||
</td> |
</td> |
Revision as of 18:02, 23 April 2010
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 |
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: nameOfMacro.pl.html
- PG macro: nameOfMacro.pl