Difference between revisions of "RecursivelyDefinedFunctions"

From WeBWorK_wiki
Jump to navigation Jump to search
m (6 revisions: import all default namespace pages from old wiki)
(add historical tag and give links to newer problems.)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
{{historical}}
  +
  +
<p style="font-size: 120%;font-weight:bold">This problem has been replaced with [https://openwebwork.github.io/pg-docs/sample-problems/Sequences/RecursiveSequence.html a newer version of this problem]</p>
  +
  +
 
<h2>Recursively Defined Functions (Sequences)</h2>
 
<h2>Recursively Defined Functions (Sequences)</h2>
   
Line 66: Line 71:
 
<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
Line 74: Line 80:
 
\( 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 112: Line 119:
   
 
<ul>
 
<ul>
<li>POD documentation: [http://webwork.maa.org/doc/cvs/pg_CURRENT/macros/parserFunction.pl.html parserFunction.pl.html]</li>
+
<li>POD documentation: [http://webwork.maa.org/pod/pg/macros/parserFunction.html parserFunction.pl]</li>
<li>PG macro: [http://cvs.webwork.rochester.edu/viewcvs.cgi/pg/macros/parserFunction.pl parserFunction.pl]</li>
+
<li>PG macro: [http://webwork.maa.org/viewvc/system/trunk/pg/macros/parserFunction.pl?view=log parserFunction.pl]</li>
 
</ul>
 
</ul>

Latest revision as of 13:48, 16 July 2023

This article has been retained as a historical document. It is not up-to-date and the formatting may be lacking. Use the information herein with caution.

This problem has been replaced with a newer version of this problem


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