Difference between revisions of "FactoringAndExpanding"
Line 104: | Line 104: | ||
<p> |
<p> |
||
<b>Setup:</b> |
<b>Setup:</b> |
||
− | This is a standard factoring problem for a non-monic polynomial (where the leading coefficient is not 1 or -1). The <code>MultiAnswer</code> answer checker allows us to collect student answers from several answer blanks and perform answer evaluation on several answer blanks simultaneously. It also allows students to enter their factors into answer blanks in either order. Since it is possible to factor <code> |
+ | This is a standard factoring problem for a non-monic polynomial (where the leading coefficient is not 1 or -1). The <code>MultiAnswer</code> answer checker allows us to collect student answers from several answer blanks and perform answer evaluation on several answer blanks simultaneously. It also allows students to enter their factors into answer blanks in either order. Since it is possible to factor <code>16x^2 + 48 x + 36</code> as <code>(2x+3)(8x+12)</code> or <code>(8x+12)(2x+3)</code> or <code>(4x+6)(4x+6)</code>, we need to use an adaptive parameter to allow both of these answers to be marked correct. |
</p> |
</p> |
||
<p> |
<p> |
Revision as of 22:47, 10 April 2010
Factored Answers
This is the PG code to check answers that require students to factor an expression into two pieces that may have a constant factor that could be moved between the pieces.
This example uses adaptive parameters and a MultiAnswer answer evaluator. For more details on these, please see AdaptiveParameters and MultiAnswerProblems.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "parserMultiAnswer.pl", ); TEXT(beginproblem()); |
Initialization:
We need to include the |
Context("Numeric"); $fac1 = Compute("(2 x + 3)"); $fac2 = Compute("(8 x + 12)"); $multians = MultiAnswer($fac1,$fac2)->with( singleResult => 0, allowBlankAnswers => 0, # singleResult => 1, # separator => " * ", # tex_separator => " \cdot ", checker => sub { my $correct = shift; my $student = shift; my $ansHash = shift; my ($F,$G) = @{$correct}; my ($f,$g) = @{$student}; $ansHash->setMessage(1,"Neither factor can be constant") unless $f->isFormula; $ansHash->setMessage(2,"Neither factor can be constant") unless $g->isFormula; # use an adaptive parameter 'a' my $context = Context()->copy; $context->flags->set(no_parameters=>0); $context->variables->add('a'=>'Parameter'); my $a = Formula($context,'a'); $f = Formula($context,$f); $g = Formula($context,$g); $F = Formula($context,$F); $G = Formula($context,$G); if ( (($a*$F == $f) && ($F*$G == $f*$g)) || (($a*$G == $f) && ($F*$G == $f*$g)) ) { return [1,1]; } elsif (($a*$F == $f) || ($a*$G == $f)) { return [1,0]; } elsif (($a*$F == $g) || ($a*$G == $g)) { return [0,1]; } else { return [0,0]; } } ); |
Setup:
This is a standard factoring problem for a non-monic polynomial (where the leading coefficient is not 1 or -1). The
The |
Context()->texStrings; BEGIN_TEXT Factor the following expression. $BR $BR \( 16 t^2 + 48 t + 36 = \big( \) \{$multians->ans_rule(10)\} \( \big) \big( \) \{$multians->ans_rule(10)\} \( \big) \) END_TEXT Context()->normalStrings; |
Main Text:
Each answer blank must be a method of the |
$showPartialCorrectAnswers = 1; install_problem_grader(~~&std_problem_grader); ANS( $multians->cmp() ); ENDDOCUMENT(); |
Answer Evaluation:
Everything is as expected. We give students feedback on whether their answers are correct by using |
- POD documentation: parserMultiAnswer.pl.html
- PG macro: parserMultiAnswer.pl