# FormulasToConstants

Line 72: | Line 72: | ||

<td style="background-color:#eeccff;padding:7px;"> | <td style="background-color:#eeccff;padding:7px;"> | ||

<p> | <p> | ||

− | And then in the answer and solution section of the file we rely on the MathObjects <code>cmp()</code> method. By specifying the <code>upToConstant=>1</code> flag for <code>cmp()</code>, we allow the student's answer to differ from the correct answer by any specific constant. | + | And then in the answer and solution section of the file we rely on the MathObjects <code>cmp()</code> method. By specifying the <code>upToConstant=>1</code> flag for <code>cmp()</code>, we allow the student's answer to differ from the correct answer by any specific constant. <code>sin(x)</code> and <code>sin(x)+5</code> are both marked as correct but <code> sin(x) +C </code> is not correct since it is a family of answers and not a single anti-derivative. |

− | </ | + | |

− | < | + | Note that for the formula up to an arbitrary constant the comparison will correctly mark students' answers that have different arbitrary constants: thus, a student answer of <code>sin(x)+k</code> to the second question here will be marked correct as will <code>sin(x) +c </code>. |

− | Note that for the formula up to an arbitrary constant the comparison will correctly mark students' answers that have different arbitrary constants: thus, a student answer of <code>sin(x)+k</code> to the second question here will be marked correct. | + | |

</p> | </p> | ||

</td> | </td> |

## Revision as of 15:52, 10 June 2008

## Formulas Up To Constants: PG Code Snippet

*This code snippet shows the essential PG code to evaluate antderivative and general antiderivative formulas. 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.*

There are two types of comparison that we're interested in here: one is "an antiderivative of f(x)", and the other is "the most general antiderivative of f(x)". The former requires that the student answers F(x), F(x)+1, F(x)-sqrt(8), etc., all be marked correct, and the latter, that F(x)+C, F(x)+5-k, etc., all be marked correct. These are both illustrated below.

It is possible to do some of this type of comparison with old-style answer checkers. This is shown in a table below.

PG problem file | Explanation |
---|---|

loadMacros("parserFormulaUpToConstant.pl"); |
To check |

$func = Formula("sin(x)"); $gfunc = FormulaUpToConstant("sin(x)+C"); |
In the problem set-up section of the problem file, we define an antiderivative function, |

BEGIN_TEXT An antiderivative of \(cos(x)\) is \{ ans_rule(15) \} $BR The most general antiderivative is \{ ans_rule(15) \} END_TEXT |
In the text section of the file we ask for the answers as usual. |

ANS( $func->cmp(upToConstant=>1) ); ANS( $gfunc->cmp() ); |
And then in the answer and solution section of the file we rely on the MathObjects |

With old-style answer checkers we can check *antiderivatives*, but checking *the most general antiderivative* is much less elegant, as we have to require that the student use a specific constant of integration.

PG problem file | Explanation |
---|---|

$func = "sin(x)"; $gfunc = "sin(x)+C"; |
In this case we need no additional macros, and so do not change the description and tagging or initialization sections of the file. In the problem set-up section we specify the function(s) to evaluate. |

BEGIN_TEXT An antiderivative of \(cos(x)\) is \{ ans_rule(15) \} $BR The most general antiderivative is \{ ans_rule(15) \} $BR ${BITALIC}(Use "C" for any arbitrary constant of integration in your answer.)$EITALIC END_TEXT |
In the text section of the problem we ask for the functions. Because we require that the most general antiderivative use the constant |

ANS( fun_cmp( $func, mode=>"antider" ) ); ANS( fun_cmp( $gfunc, mode=>"antider", var=>["x","C"] ) ); |
When checking the answer in the answer and solutions section of the file, we specify |