WeBWorK Problems

Integral with parameter - grader

Re: Integral with parameter - grader

by Robert Mařík -
Number of replies: 0
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();