Difference between revisions of "RecursivelyDefinedFunctions"

From WeBWorK_wiki
Jump to navigation Jump to search
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<h2>Recursively Defined Functions</h2>
+
<h2>Recursively Defined Functions (Sequences)</h2>
   
 
<!-- Header for these sections -- no modification needed -->
 
<!-- Header for these sections -- no modification needed -->
Line 66: Line 66:
 
<td style="background-color:#ffdddd;border:black 1px dashed;">
 
<td style="background-color:#ffdddd;border:black 1px dashed;">
 
<pre>
 
<pre>
  +
Context()->texStrings;
 
BEGIN_TEXT
 
BEGIN_TEXT
 
The current value \( f(n) \) is three
 
The current value \( f(n) \) is three
times the previous value plus two. Find
+
times the previous value, plus two. Find
 
a recursive definition for \( f(n) \).
 
a recursive definition for \( f(n) \).
 
Enter \( f_{n-1} \) as \( f(n-1) \).
 
Enter \( f_{n-1} \) as \( f(n-1) \).
Line 74: Line 75:
 
\( f(n) \) = \{ ans_rule(20) \}
 
\( f(n) \) = \{ ans_rule(20) \}
 
END_TEXT
 
END_TEXT
  +
Context()->normalStrings;
 
</pre>
 
</pre>
 
<td style="background-color:#ffcccc;padding:7px;">
 
<td style="background-color:#ffcccc;padding:7px;">
Line 108: Line 110:
   
 
[[Category:Problem Techniques]]
 
[[Category:Problem Techniques]]
  +
  +
  +
  +
<ul>
  +
<li>POD documentation: [http://webwork.maa.org/pod/pg/macros/parserFunction.html parserFunction.pl]</li>
  +
<li>PG macro: [http://webwork.maa.org/viewvc/system/trunk/pg/macros/parserFunction.pl?view=log parserFunction.pl]</li>
  +
</ul>

Revision as of 18:01, 7 April 2021

Recursively Defined Functions (Sequences)


This PG code shows how to check student answers that are recursively defined functions.

Problem Techniques Index

PG problem file Explanation
DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"parserFunction.pl",
);
TEXT(beginproblem());

Initialization: We will be defining a new named function and adding it to the context, and the easiest way to do this is using parserFunction.pl. There is a more basic way to add functions to the context, which is explained in example 2 at AddingFunctions

Context("Numeric")->variables->are(n=>"Real");
parserFunction(f => "sin(pi^n)+e");

$fn = Formula("3 f(n-1) + 2");

Setup: We define a new named function f as something the student is unlikely to guess. The named function f is, in some sense, just a placeholder since the student will enter expressions involving f(n-1), WeBWorK will interpret it internally as sin(pi^(n-1))+e, and the only thing the student sees is f(n-1). If the recursion has an closed-form solution (e.g., the Fibonacci numbers are given by f(n) = (a^n - (1-a)^n)/sqrt(5) where a = (1+sqrt(5))/2) and you want to allows students to enter the closed-form solution, it would be good to define f using that explicit solution in case the student tries to answer the question by writing out the explicit solution (a^n - (1-a)^n)/sqrt(5) instead of using the shorthand f(n).

Context()->texStrings;
BEGIN_TEXT
The current value \( f(n) \) is three 
times the previous value, plus two.  Find
a recursive definition for \( f(n) \).  
Enter \( f_{n-1} \) as \( f(n-1) \).
$BR
\( f(n) \) = \{ ans_rule(20) \} 
END_TEXT
Context()->normalStrings;

Main Text: The problem text section of the file is as we'd expect. We should tell students to use function notation rather than subscript notation so that they aren't confused about syntax.

$showPartialCorrectAnswers=1;

ANS( $fn->cmp() );

ENDDOCUMENT();

Answer Evaluation: As is the answer.

Problem Techniques Index