## WeBWorK Problems

### Re: Using Primes in Answers (parserFunctionPrime.pl)

by Davide Cervone -
Number of replies: 0
The core of you code was:
Context("Numeric");
parser::FunctionPrime->Enable();
parserFunction("r(t)" => "15");
$r = Formula("r(t)");$dr = Formula("r'(t)");

$dA = Compute("2 pi$r * $dr"); BEGIN_TEXT ... $$A'(t) =$$\{ans_rule(30) \} END_TEXT ANS($dA->cmp);


First, I'd use

    Context()->variables->are(t=> 'Real');

with are rather than add so that you remove the original variable x that was in the context. Not a big issue, but cleaner.

Next, there is no real need for the variables $r or $dr. You can just do

    $dA = Compute("2 pi r(t) r'(t)");  so that it looks like what you would expect the student to type. Third, I would not use r(t) = 15 as that means that r'(t) = 0 so an answer of 0 will be a correct answer. (In your case, 2pi r(t) r'(t) does equal 0.) I'd recommend using some function that has a non-zero derivative and unlikely to be reproduced by a student, say r(t) = e^t + cos(3t)/10 (which is positive and not too big on the usual domain) or some such thing. So a revised version of the problem is loadMacros("parserFunctionPrime.pl"); Context("Numeric"); parser::FunctionPrime->Enable(); Context()->variables->are(t=>"Real"); parserFunction("r(t)" => "e^t+cos(3t)/10");$dA = Compute("2pi r(t) r'(t)");

Context()->texStrings;
BEGIN_TEXT
$$A'(t)$$ = \{$dA->ans_rule(20)\} END_TEXT Context()->normalStrings; ANS($dA->cmp);

Hope that helps.