Difference between revisions of "ShiftingScalingGraphs"

From WeBWorK_wiki
Jump to navigation Jump to search
m (2 revisions: import all default namespace pages from old wiki)
(Update documentation links)
Line 152: Line 152:
   
 
[[Category:Problem Techniques]]
 
[[Category:Problem Techniques]]
  +
   
   
 
<ul>
 
<ul>
<li>POD documentation: [http://webwork.maa.org/doc/cvs/pg_CURRENT/ nameOfMacro.pl.html]</li>
+
<li>POD documentation: [http://webwork.maa.org/pod/pg_TRUNK/macros/parserFunction.pl.html parserFunction.pl.html]</li>
<li>PG macro: [http://cvs.webwork.rochester.edu/viewcvs.cgi/pg/macros/#dirlist nameOfMacro.pl]</li>
+
<li>PG macro: [http://webwork.maa.org/viewvc/system/trunk/pg/macros/parserFunction.pl?view=log parserFunction.pl]</li>
 
</ul>
 
</ul>

Revision as of 02:13, 27 November 2010

Shifting and Scaling Graphs or Graph Transformations


This PG code shows how to check a student answer that is a shifted and scaled version of a named function.

Problem Techniques Index

PG problem file Explanation
DOCUMENT();

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGgraphmacros.pl",
"parserFunction.pl",
"unionTables.pl",
);

TEXT(beginproblem());

Initialization: We need to include the macros file parserFunction.pl.

Context("Numeric");
parserFunction("f(x)" => "e^(x/pi)+sin(e*x)");

$answer = Formula("-f(-2x)+1");

foreach my $i (0..1) {
 $gr[$i] = init_graph(-5,-5,5,5,axes=>[0,0],grid=>[10,10],size=>[400,400]);
 $gr[$i]->lb('reset');
 $gr[$i]->lb( new Label(4.5,0.25,'x','black','center','middle'));
 $gr[$i]->lb( new Label(0.25,4.5,'y','black','center','middle'));

 foreach my $j (1..4) {
  $gr[$i]->lb( new Label(-4.5, $j, $j,'black','center','middle'));
  $gr[$i]->lb( new Label(-4.5,-$j,-$j,'black','center','middle'));
  $gr[$i]->lb( new Label($j, -4.5, $j,'black','center','middle'));
  $gr[$i]->lb( new Label(-$j,-4.5,-$j,'black','center','middle'));
 }

}

$gr[0]->moveTo(-4, 3);
$gr[0]->lineTo(-2, 3,'blue',3);
$gr[0]->lineTo( 0, 0,'blue',3);
$gr[0]->lineTo( 2, 1,'blue',3);

$gr[1]->moveTo(-1, 0);
$gr[1]->lineTo( 0, 1,'red',3);
$gr[1]->lineTo( 1,-2,'red',3);
$gr[1]->lineTo( 2,-2,'red',3);

foreach my $i (0..1) {
  $fig[$i] = image(insertGraph($gr[$i]),width=>400,height=>400,tex_size=>450);
}

Setup: First, we define a named function f and add it to the context so that students will be able to enter answers of the form a f(b(x-c)) + d. We intentionally choose a formula for f that students are unlikely to guess. Also, we make sure that f as a function that is defined everywhere and has moderately sized values so that the answer checker doesn't have any problems.

Second, we graph some piecewise functions for which students will be unable to enter an explicit formula. To make this example easier to follow, we did not randomize this question.

BEGIN_TEXT
The graph of a function \( y = f(x) \) is given in the figure on the left.
The graph of the function \( g(x) \) on the right can be obtained from the 
graph of \( f \) by horizontal and vertical scaling and shifting.  
What is a formula for \( g(x) \) in terms of \( f(x) \)?
$BR
$BR
\( g(x) \) = \{ ans_rule(20) \}
$BR
$BR
\{
BeginTable().
AlignedRow([$fig[0],$fig[1]]).
TableSpace(5,0).
AlignedRow(["Graph of \( f(x) \)","Shifted and scaled graph \( g(x) \)"]).
EndTable()
\}
END_TEXT

Main Text: We use a table to display the graphs nicely.

$showPartialCorrectAnswers = 1;

ANS( $answer->cmp() );

ENDDOCUMENT();

Answer Evaluation: Standard.

Problem Techniques Index