Spacecurve1

From WeBWorK_wiki
Revision as of 17:22, 7 June 2015 by Paultpearson (talk | contribs) (Deprecate examples using LiveGraphics3D)
Jump to navigation Jump to search

Deprecated: A Parametric Curve in Space

Click to enlarge

This PG code shows how to ask a parametric curve question with three answer blanks and use MultiAnswer to check the answer. It is deprecated because Java is no longer universally supported on all web browsers and platforms.


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();      

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"parserMultiAnswer.pl",
"AnswerFormatHelp.pl",
);

TEXT(beginproblem());

Initialization: Since we will have multiple answer blanks that depend on each other, we need to use parserMultiAnswer.pl.

Context("Numeric");
Context()->variables->are(t=>"Real");
Context()->variables->set(t=>{limits=>[0,10]});

$a = random(-5,-2,1);
$x = Formula("$a * t**2");
$y = Formula("0");
$z = Formula("t");

$multians = MultiAnswer($x, $y, $z)->with(
  singleResult => 1,
  checker => sub {
      my ( $correct, $student, $self ) = @_;
      my ( $xstu, $ystu, $zstu ) = @{$student};
      return 0 unless $xstu->isFormula;
      if (($xstu==$a*$zstu**2) && ($ystu==0)) {
            return 1;
      } else {
            return 0;
      }
  }
);

Setup: We use singleResult => 1 since it doesn't make sense to say that x(t) is correct but z(t) is incorrect since they depend on one another. First, we check that the student hasn't fed us a bogus constant solution such as x=y=z=0 by requiring the x-coordinate to be a formula (not a constant) via return 0 unless $xstu->isFormula;. Then, we check that the student's answers satisfy the parametric equation.

Context()->texStrings;
BEGIN_TEXT
Find a parametrization of the curve \( x = $a z^2 \) 
in the \(xz\)-plane.  Use \( t \) as the 
parameter for all of your answers.
$BR
$BR
\( x(t) = \) \{$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
$BR
\( y(t) = \) \{$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
$BR
\( z(t) = \) \{$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
END_TEXT
Context()->normalStrings;

Main Text: Notice that we use $multians->ans_rule(20) (instead of just ans_rule(20)) so that the multianswer object is aware of all of the answer blanks.

$showPartialCorrectAnswers = 0;

ANS($multians->cmp());

Answer Evaluation:

Context()->texStrings;
BEGIN_SOLUTION
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();

Solution:

Templates by Subject Area