Difference between revisions of "Vectors"
m |
|||
Line 80: | Line 80: | ||
my ($correct, $student, $ansHash) = @_; |
my ($correct, $student, $ansHash) = @_; |
||
return $student->isParallel($correct); |
return $student->isParallel($correct); |
||
− | } ) ); |
||
+ | }, showCoordinateHints => 0 ) ); |
||
## or: |
## or: |
||
# ANS( $v1->cmp( checker=>sub { |
# ANS( $v1->cmp( checker=>sub { |
||
Line 86: | Line 86: | ||
# return $student.$correct == 0; } ) ); |
# return $student.$correct == 0; } ) ); |
||
− | ANS( $v3->cmp( checker=>sub { |
||
+ | # make a custom answer checker |
||
+ | sub parallel_vector_cmp { |
||
my ($correct, $student, $ansHash) = @_; |
my ($correct, $student, $ansHash) = @_; |
||
return $student->isParallel($correct); |
return $student->isParallel($correct); |
||
− | } |
+ | } |
+ | ANS( $v3->cmp( checker=>~~¶llel_vector_cmp, showCoordinateHints => 0 ) ); |
||
</pre> |
</pre> |
||
<td style="background-color:#eeccff;padding:7px;"> |
<td style="background-color:#eeccff;padding:7px;"> |
||
<p> |
<p> |
||
− | We can then use the vectors to check the answers that are given. Note that we have used [[CustomAnswerCheckers|custom answer checkers]] for the latter answer evaluators here, taking advantage of the built in dot product and <code>isParallel</code> method of vector objects. |
+ | We can then use the vectors to check the answers that are given. Note that we have used [[CustomAnswerCheckers|custom answer checkers]] for the latter answer evaluators here, taking advantage of the built in dot product and <code>isParallel</code> method of vector objects. When checking if a student's vector is parallel to the correct vector, hints about which coordinates are incorrect can be misleading, so we set showCoordinateHints => 0. |
</p> |
</p> |
||
<p> |
<p> |
Revision as of 11:16, 21 October 2009
Vectors in Problems: PG Code Snippet
This code snippet shows the essential PG code to use vectors in WeBWorK problems. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.
PG problem file | Explanation |
---|---|
Context('Vector'); ## display vectors in ijk format # Context()->flags->set( ijk=>1 ); ## set the appearance of the ijk vectors ## this sets them to be overset with ## vector arrows, instead of boldface # Context()->constants->set( # i => {TeX => "\mathit{\vec i}"}, # j => {TeX => "\mathit{\vec j}"}, # k => {TeX => "\mathit{\vec k}"}, # ); $v1 = Vector("<1,3>"); $v2 = Compute("<-3,1>"); $v3 = 3*i + 2*j - 4*k; $a = 3*i + j; $b = $a + $v1; |
We indicate that we are working in a vector context by setting the
Then, we can define vectors as we might expect: either with the
Note that if we define the vector using the constants i, j and k, as in the definition of
To explicitly require that the vectors be two-dimensional rather than three-dimensional, we would use |
BEGIN_TEXT Enter the vector pointing from \($a\) to \($b\): \{ ans_rule(25) \} $PAR Enter a vector perpendicular to this: \{ ans_rule(25) \} $PAR Enter a vector parallel to \($v3\): \{ ans_rule(25) \} |
We can then use the vectors that we created in the text section of the problem. |
ANS( $v1->cmp() ); ANS( $v2->cmp( checker=>sub { my ($correct, $student, $ansHash) = @_; return $student->isParallel($correct); }, showCoordinateHints => 0 ) ); ## or: # ANS( $v1->cmp( checker=>sub { # my ($correct, $student, $ansHash) = @_; # return $student.$correct == 0; } ) ); # make a custom answer checker sub parallel_vector_cmp { my ($correct, $student, $ansHash) = @_; return $student->isParallel($correct); } ANS( $v3->cmp( checker=>~~¶llel_vector_cmp, showCoordinateHints => 0 ) ); |
We can then use the vectors to check the answers that are given. Note that we have used custom answer checkers for the latter answer evaluators here, taking advantage of the built in dot product and Other properties of MathObjects vectors are given in the MathObjects reference table.
The components of the vectors are available as an array from @v3comp = $v3->value; |