I found the solution: differentiate the student's answer and check the derivatives. It may help someone else. R.
DOCUMENT();
loadMacros(
"PGstandard.pl",
"PGML.pl",
"PGcourse.pl",
);
TEXT(beginproblem());
$showPartialCorrectAnswers = 1;
$showHint = 1;
$b=random(2,10,1);
$c=random(-1,1,2);
$d=non_zero_random(-10,18,2);
$f=random(-10,10,1);
$n=random(3,6,1);
$n1=$n+1;
Context("Numeric")->variables->add(a=>"Real");
$showPartialCorrectAnswers = 1;
if ($d==0)
{
$funkce=Formula("$b+e^($c*a*x)")->reduce();
$int=Formula("$b*x+e^($c*a*x)/($c*a)")->reduce();
}
else
{
$funkce=Formula("$b*e^($c*a*x)")->reduce();
$int=Formula("$b*e^($c*a*x)/($c*a)")->reduce();
}
$funkce2=Formula("$d*x+a*x^($n)")->reduce();
$int2=Formula("1/2*($d)*x^2+a/$n1*x^($n1)")->reduce();
sub mycheck {
my ($correct, $student, $ansHash) = @_;
return $correct->D(x) == $student->D(x);
}
BEGIN_PGML
## Integrál s parametrem
Integrály s parametrem nejsou nic jiného než klasické integrály s drobnou modifikací: namísto hodnot koeficientů vyjádřených numerickou hodnotou obsahují parametr. Z hlediska výpočtu se nic nemění. Proto například můžeme psát
[``` \int 7x^3+a x^8\,\mathrm dx=\frac 74 x^4+\frac a9 x^9+C.```]
--------------------------
Vypočtěte integrál funkce proměnné [`x`] s parametrem [`a`].
>>[``\int [$funkce2]\,\mathrm dx ={}``][_________________________]{$int2->cmp(vars=>["x","a"] , checker=>~~&mycheck )}[``{}+C``] <<
>>[``\int [$funkce]\,\mathrm dx ={}``][_________________________]{$int->cmp(vars=>["x","a"] , checker=>~~&mycheck )}[``{}+C``] <<
END_PGML
BEGIN_PGML_HINT
Úloha je podobná jako předchozí, jenom je místo čísla parametr [`a`]. Představte si místo parametru číslo,
END_PGML_HINT
BEGIN_PGML_SOLUTION
Úloha je podobná jako předchozí, jenom je místo čísla parametr [`a`].
[```\int [$funkce2]\,\mathrm dx =[$int2]+C```]
[```\int [$funkce]\,\mathrm dx =[$int]+C```]
END_PGML_SOLUTION
ENDDOCUMENT();