Difference between revisions of "EquationEvaluators"
m |
m |
||
Line 37: | Line 37: | ||
); |
); |
||
− | $ |
+ | $eqn = ImplicitEquation("y = (x-1)^2"); |
</pre> |
</pre> |
||
</td> |
</td> |
||
<td style="background-color:#ffffcc;padding:7px;"> |
<td style="background-color:#ffffcc;padding:7px;"> |
||
<p> |
<p> |
||
+ | <b>Setup:</b> |
||
In the problem set-up section of the file, we specify that the Context should be <code>ImplicitEquation</code>, and define the answer to be an equation. It's worth noting that there are a number of Context settings that may be specifying for equation answers. In particular, it's often important to pay attention to the [[FormulaTestPoints|limits used by the answer checker]]. |
In the problem set-up section of the file, we specify that the Context should be <code>ImplicitEquation</code>, and define the answer to be an equation. It's worth noting that there are a number of Context settings that may be specifying for equation answers. In particular, it's often important to pay attention to the [[FormulaTestPoints|limits used by the answer checker]]. |
||
</p> |
</p> |
||
Line 51: | Line 52: | ||
</p> |
</p> |
||
<pre> |
<pre> |
||
− | $ |
+ | $eqn = ImplicitEquation("y = (x-1)^2", |
solutions=>[[0,0],[1,1],[-1,1], |
solutions=>[[0,0],[1,1],[-1,1], |
||
[2,4],[-2,4]]); |
[2,4],[-2,4]]); |
||
Line 59: | Line 60: | ||
</p> |
</p> |
||
<pre> |
<pre> |
||
− | $ |
+ | $eqn = ImplicitEquation("y = (x-1)^2", |
tolerance=>0.0001); |
tolerance=>0.0001); |
||
</pre> |
</pre> |
||
Line 67: | Line 68: | ||
Context()->{error}{msg}{"Can't find any solutions to your equation"} = " "; |
Context()->{error}{msg}{"Can't find any solutions to your equation"} = " "; |
||
</pre> |
</pre> |
||
− | This will eliminate the error message (though the "messages" column will be displayed in the answer table at the top of the problem, but no message will be there). |
+ | This will eliminate the error message (though the "messages" column will be displayed in the answer table at the top of the problem, but no message will be there). |
− | <pre> |
||
− | ANS($f->cmp->withPostFilter(sub { |
||
− | my $ans = shift; |
||
− | $ans->{ans_message} = "" if $ans->{ans_message} eq |
||
− | "Can't find any solutions to your equation"; return $ans; |
||
− | })); |
||
− | </pre> |
||
</p> |
</p> |
||
</td> |
</td> |
||
Line 84: | Line 85: | ||
<td style="background-color:#ffcccc;padding:7px;"> |
<td style="background-color:#ffcccc;padding:7px;"> |
||
<p> |
<p> |
||
− | The problem text section of the file is as we'd expect. |
+ | <b>Main Text:</b> The problem text section of the file is as we'd expect. |
</p> |
</p> |
||
</td> |
</td> |
||
Line 91: | Line 92: | ||
<td style="background-color:#eeddff;border:black 1px dashed;"> |
<td style="background-color:#eeddff;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | ANS( $ |
+ | ANS( $eqn->cmp() ); |
ENDDOCUMENT(); |
ENDDOCUMENT(); |
||
Line 97: | Line 98: | ||
<td style="background-color:#eeccff;padding:7px;"> |
<td style="background-color:#eeccff;padding:7px;"> |
||
<p> |
<p> |
||
− | As is the answer. |
||
+ | <b>Answer Evaluation:</p> |
||
+ | Another way to remove the error message "Can't find any solutions to your equation" would be to use a post-filter to remove the message after the answer has been graded. The <code>answerHints.pl</code> file provides one way to do this, but it is probably just as easy to do it manually, as in: |
||
+ | <pre> |
||
+ | ANS($eqn->cmp->withPostFilter(sub { |
||
+ | my $ans = shift; |
||
+ | $ans->{ans_message} = "" if $ans->{ans_message} eq |
||
+ | "Can't find any solutions to your equation"; return $ans; |
||
+ | })); |
||
+ | </pre> |
||
</p> |
</p> |
||
</td> |
</td> |
Revision as of 16:47, 22 January 2010
Equation Answer Evaluation: PG Code Snippet
This code snippet shows the essential PG code to check student answers that are equations. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros("parserImplicitEquation.pl"); TEXT(beginproblem()); |
To check equations given as answers, we don't have to change the tagging and documentation section of the problem file. In the initialization section, we need to include the macros file |
Context("ImplicitEquation"); Context()->variables->set( x=>{limits=>[-2,2]}, y=>{limits=>[0,4]} ); $eqn = ImplicitEquation("y = (x-1)^2"); |
Setup:
In the problem set-up section of the file, we specify that the Context should be
By default, the
Two other notes: if it's possible that a student's solution may evaluate to true for the test points that are used in the answer checker, it may be a good idea to specify what (x,y) solution values are used to check the answer. This can be done in the $eqn = ImplicitEquation("y = (x-1)^2", solutions=>[[0,0],[1,1],[-1,1], [2,4],[-2,4]]);
And, for this type of answer checking it is more likely than for regular formulas that the student will represent the function in a form that exceeds the default problem checking tolerances, and so be marked as incorrect. To correct this, it may be necessary to specify a tolerance; an absolute tolerance can be set in the $eqn = ImplicitEquation("y = (x-1)^2", tolerance=>0.0001);
It is possible to remove the error message "Can't find any solutions to your equation" by remapping it to another error message. The message has to be non-empty, but it can be just a blank Context()->{error}{msg}{"Can't find any solutions to your equation"} = " "; This will eliminate the error message (though the "messages" column will be displayed in the answer table at the top of the problem, but no message will be there). |
BEGIN_TEXT Give the equation of a shift of the parabola \(y = x^2\) which is upward opening and has its vertex at (1,0). $PAR equation: \{ ans_rule(35) \} END_TEXT |
Main Text: The problem text section of the file is as we'd expect. |
ANS( $eqn->cmp() ); ENDDOCUMENT(); |
Answer Evaluation: Another way to remove the error message "Can't find any solutions to your equation" would be to use a post-filter to remove the message after the answer has been graded. The ANS($eqn->cmp->withPostFilter(sub { my $ans = shift; $ans->{ans_message} = "" if $ans->{ans_message} eq "Can't find any solutions to your equation"; return $ans; })); |