Difference between revisions of "HeavisideStep1"
Line 161: | Line 161: | ||
num_points=>10, |
num_points=>10, |
||
); |
); |
||
− | parserFunction("u(t)" => "1.5*sin(e*t)+ |
+ | parserFunction("u(t)" => "1.5*sin(e*t)+5*pi/e+arctan(t)"); |
Line 176: | Line 176: | ||
</p> |
</p> |
||
<p> |
<p> |
||
− | Notice that the function <code>u(t)</code> is never zero, is not constant, is differentiable, and takes moderately sized values, which makes its answer checking very robust. |
+ | Notice that the function <code>u(t)</code> is never zero, is not constant, is differentiable, and takes moderately sized values, which makes its answer checking very robust. Further, because of the arctangent, it is not periodic and so <code>u(t)-u(t-a)</code> should never be identically zero. The formula for <code>u(t)</code> is not something students are likely to input as an answer out of nowhere. The function <code>u(t)</code> is great as a named function that stands in for the Heaviside function when the answer is a function. However, if the answer is a number obtained by evaluating the Heaviside function, then <code>step(t)</code> should be used instead of <code>u(t)</code> for obvious reasons. |
</p> |
</p> |
||
<p> |
<p> |
Revision as of 02:40, 6 December 2010
Using the Heaviside Step Function
This PG code shows how to add a the Heaviside step function step(x)
, which takes the value 1 if x > 0, and the value 0 if x ≤ 0, to the context. It also shows how to add a named function u(x)
to the context that has a reliable answer checker and can stand in for the Heaviside step function when the student answer is a function.
- Download file: File:HeavisideStep1.txt (change the file extension from txt to pg when you save it)
- File location in NPL:
FortLewis/Authoring/Templates/DiffEq/HeavisideStep1.pg
PG problem file | Explanation |
---|---|
Problem tagging: |
|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "AnswerFormatHelp.pl", "parserFunction.pl", ); TEXT(beginproblem()); |
Initialization:
We load |
$ftex = "5 u(t-3)"; Context("Numeric"); Context()->variables->are(t=>"Real"); Context()->functions->add( step => { class => 'Parser::Legacy::Numeric', perl => 'Parser::Legacy::Numeric::do_step' }, ); $f = Formula("5*step(t-3)"); $answer1 = List($f->eval(t=>2),$f->eval(t=>3),$f->eval(t=>4)); |
Setup 1:
We add the step function to the context with the name
We will not use the function |
Context()->texStrings; BEGIN_TEXT Let \( u(t) \) be the Heaviside step function defined by \( \displaystyle u(t) = \left\lbrace \begin{array}{lcl} 0 && \mbox{ if } x > 0, \\ 1 && \mbox{ if } x \leq 0. \end{array} \right. \) $BR $BR (a) Evaluate the function \( $ftex \) when \( t \) is 2, 3, and 4 and enter your answer as a comma separated list. $BR \{ ans_rule(20) \} \{ AnswerFormatHelp("numbers") \} END_TEXT Context()->normalStrings; |
Main Text 1: |
$showPartialCorrectAnswers=1; ANS( $answer1->cmp(ordered=>1) ); |
Answer Evaluation 1: |
Context("Numeric"); Context()->variables->are(t=>"Real"); Context()->flags->set( limits=>[-5,5], num_points=>10, ); parserFunction("u(t)" => "1.5*sin(e*t)+5*pi/e+arctan(t)"); $answer2 = Formula("5 u(t-3)"); |
Setup 2:
Using
Notice that the function
Note: Currently, functions that are added to the context do not work with |
Context()->texStrings; BEGIN_TEXT $BR $BR (b) Enter the function \( $ftex \). $BR \{ ans_rule(20) \} \{ AnswerFormatHelp("formulas") \} END_TEXT Context()->normalStrings; |
Main Text 2: |
ANS( $answer2->cmp() ); |
Answer Evaluation 2: |
Context()->texStrings; BEGIN_SOLUTION ${PAR}SOLUTION:${PAR} Solution explanation goes here. END_SOLUTION Context()->normalStrings; COMMENT('MathObject version.'); ENDDOCUMENT(); |
Solution: |