Difference between revisions of "HeavisideStep1"
Line 170: | Line 170: | ||
<p> |
<p> |
||
<b>Setup 2:</b> |
<b>Setup 2:</b> |
||
− | Using <code>parserFunction.pl</code>, we add another function named <code>u( |
+ | Using <code>parserFunction.pl</code>, we add another function named <code>u(t)</code> to the context. The reason for adding this function to the context is that |
* <code>step</code>, which is the Heaviside function, will be used when the answer is a number, and |
* <code>step</code>, which is the Heaviside function, will be used when the answer is a number, and |
Revision as of 02:41, 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: |