Difference between revisions of "Spacecurve1"

From WeBWorK_wiki
Jump to navigation Jump to search
(PGML example link)
(Removes the AnswerFormatHelp macro and some other cleanup.)
Line 16: Line 16:
   
 
<tr valign="top">
 
<tr valign="top">
<th> PG problem file </th>
+
<th style="width: 40%"> PG problem file </th>
 
<th> Explanation </th>
 
<th> Explanation </th>
 
</tr>
 
</tr>
Line 43: Line 43:
   
 
loadMacros(
 
loadMacros(
"PGstandard.pl",
+
'PGstandard.pl',
"MathObjects.pl",
+
'MathObjects.pl',
"parserMultiAnswer.pl",
+
'parserMultiAnswer.pl',
"AnswerFormatHelp.pl",
+
'PGML.pl',
  +
'PGcourse.pl'
 
);
 
);
   
Line 103: Line 103:
 
<td style="background-color:#ffdddd;border:black 1px dashed;">
 
<td style="background-color:#ffdddd;border:black 1px dashed;">
 
<pre>
 
<pre>
Context()->texStrings;
 
  +
BEGIN_PGML
BEGIN_TEXT
 
  +
Find a parametrization of the curve [` x = [$a] z^2 `]
Find a parametrization of the curve \( x = $a z^2 \)
 
  +
in the [`xz`]-plane. Use [` t `] as the
in the \(xz\)-plane. Use \( t \) as the
 
 
parameter for all of your answers.
 
parameter for all of your answers.
$BR
 
  +
$BR
 
  +
- [` x(t) = `] [______________]{$multians}
\( x(t) = \) \{$multians->ans_rule(20)\}
+
- [` y(t) = `] [______________]{$multians}
\{ AnswerFormatHelp("formulas") \}
+
- [` z(t) = `] [______________]{$multians}
$BR
+
\( y(t) = \) \{$multians->ans_rule(20)\}
+
[@ helpLink('formulas') @]*
\{ AnswerFormatHelp("formulas") \}
+
END_PGML
$BR
 
\( z(t) = \) \{$multians->ans_rule(20)\}
 
\{ AnswerFormatHelp("formulas") \}
 
END_TEXT
 
Context()->normalStrings;
 
 
</pre>
 
</pre>
 
<td style="background-color:#ffcccc;padding:7px;">
 
<td style="background-color:#ffcccc;padding:7px;">
 
<p>
 
<p>
 
<b>Main Text:</b>
 
<b>Main Text:</b>
Notice that we use <code>$multians-&gt;ans_rule(20)</code> (instead of just <code>ans_rule(20)</code>) so that the multianswer object is aware of all of the answer blanks.
+
Notice that we use <code>$multians</code> in each answer blank because they results in the three answers are dependent on each other.
</p>
 
</td>
 
</tr>
 
 
<!-- Answer evaluation section -->
 
 
<tr valign="top">
 
<td style="background-color:#eeddff;border:black 1px dashed;">
 
<pre>
 
$showPartialCorrectAnswers = 0;
 
 
ANS($multians->cmp());
 
</pre>
 
<td style="background-color:#eeccff;padding:7px;">
 
<p>
 
<b>Answer Evaluation:</b>
 
 
</p>
 
</p>
 
</td>
 
</td>
Line 129: Line 128:
 
<td style="background-color:#ddddff;border:black 1px dashed;">
 
<td style="background-color:#ddddff;border:black 1px dashed;">
 
<pre>
 
<pre>
Context()->texStrings;
 
  +
BEGIN_PGML_SOLUTION
BEGIN_SOLUTION
 
 
Solution explanation goes here.
 
Solution explanation goes here.
END_SOLUTION
 
  +
END_PGML_SOLUTION
Context()->normalStrings;
 
 
COMMENT('MathObject version.');
 
   
 
ENDDOCUMENT();
 
ENDDOCUMENT();

Revision as of 12:12, 10 March 2023

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.


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();      

loadMacros(
  'PGstandard.pl',
  'MathObjects.pl',
  'parserMultiAnswer.pl',
  'PGML.pl',
  'PGcourse.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.

BEGIN_PGML
Find a parametrization of the curve [` x = [$a] z^2 `]
in the [`xz`]-plane.  Use [` t `] as the
parameter for all of your answers.

- [` x(t) = `] [______________]{$multians}
- [` y(t) = `] [______________]{$multians}
- [` z(t) = `] [______________]{$multians}

[@ helpLink('formulas') @]*
END_PGML

Main Text: Notice that we use $multians in each answer blank because they results in the three answers are dependent on each other.

BEGIN_PGML_SOLUTION
Solution explanation goes here.
END_PGML_SOLUTION

ENDDOCUMENT();

Solution:

Templates by Subject Area