FormulasUpToMultiplication
Formulas Up To Multiplication by a Nonzero Constant
This PG code shows how to check student answers that are correct up to multiplication by a nonzero constant.
| PG problem file | Explanation |
|---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", ); TEXT(beginproblem()); |
Initialization: We need only essential macros. |
Context("Numeric");
$aSolution = Compute("(x-2)(x+1)");
|
Setup: Nothing surprising here. |
BEGIN_TEXT
Find a quadratic equation in terms of the variable
\( x \) with roots \( -1 \) and \( 2 \).
$PAR
y = \{ ans_rule(30) \}
END_TEXT
|
Main Text: The problem text section of the file is as we'd expect. |
$showPartialCorrectAnswers = 1;
ANS( $aSolution->cmp(checker => sub {
my ( $correct, $student, $self ) = @_;
my $context = Context()->copy;
return 0 if $student == 0;
$context->flags->set(no_parameters=>0);
$context->variables->add('C0'=>'Parameter');
my $c0 = Formula($context,'C0');
$student = Formula($context,$student);
$correct = Formula($context,"$c0 * $aSolution");
return $correct == $student;
}
) );
ENDDOCUMENT();
|
Answer Evaluation:
We use a local context with an adaptive parameter to check the answer. For more on adaptive parameters, see AdaptiveParameters When |