## WeBWorK Problems

### Re: Constants and General Solutions to ODEs

by Alex Jordan -
Number of replies: 0
Hi Lynda,

I know you posted this question a long time ago, but I just wrestled with this problem, and the "solution" I came works like this:

Students will be required to use C for the arbitrary constant, and C should be added as a variable to the context.

Next suppose "the" answer is:
$answer = Formula("1/(x+C)"); which is the solution to y' = -y^2 Make a custom answer checker that checks for two things: 1. the student's answer solves the differential equation 2. whatever the student has entered in place of C is a linear (and nonconstant) function of C I probably do not have the most efficient way to do this, but my custom checker works like this: ANS($answer->cmp( checker=>sub {
my ( $correct,$student, $ansHash ) = @_; my$dstudent = $student->D('x'); my$lhs = Formula("$dstudent"); my$rhs = Formula("-($student)^2"); my$studentC = Formula("1/$student - x"); my$dstudentC = $studentC->D('C'); my$ddstudentC = $dstudentC->D('C'); if (($lhs == $rhs) && ($ddstudentC == Formula("0")))
{ if (\$dstudentC != Formula("0"))
{return 1}
else {Value->Error("Your answer is not the most general solution.")}
}
else {return 0};
} ) );

This lets students enter things like 1/(x+2C-5), if that happens to be where they ended up after solving process. There is a check in there that prevents things like 1/(x+5) from being counted as correct too. Ideally, the checker would allow 1/(x+f(C)) for any one-to-one function f that covers R, but I don't know how to check that. Looking at first and second derivatives lets us check linearity though.

Take care if you use this in problems where the answer has domain issues.