Difference between revisions of "DynamicImages3"
Jump to navigation
Jump to search
(New page: <h2>Dynamic Graphic Images, with Filled Regions</h2> <!-- Header for these sections -- no modification needed --> <p style="background-color:#eeeeee;border:black solid 1px;padding:3px...) |
|||
Line 24: | Line 24: | ||
<pre> |
<pre> |
||
DOCUMENT(); |
DOCUMENT(); |
||
− | loadMacros( |
+ | loadMacros( |
− | + | "PGstandard.pl", |
|
− | + | "PGgraphmacros.pl", |
|
− | + | # "PGnumericalmacros.pl", # might be useful |
|
− | + | ); |
|
− | "extraAnswerEvaluators.pl", |
||
− | "weightedGrader.pl" |
||
− | ); |
||
TEXT(beginproblem()); |
TEXT(beginproblem()); |
||
− | |||
− | install_weighted_grader(); |
||
− | |||
− | $showPartialCorrectAnswers = 1; |
||
</pre> |
</pre> |
||
</td> |
</td> |
||
Line 52: | Line 48: | ||
<td style="background-color:#ffffdd;border:black 1px dashed;"> |
<td style="background-color:#ffffdd;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | # Construct a graph for the left endpoint Riemann sum, |
||
− | # define the function to be graphed, and add it to the graph |
||
− | $graphL = init_graph(-1,-1,9,9,ticks=>[10,10],axes=>[0,0],pixels=>[400,400]); |
||
− | $c = random(8,12,1); # a constant for scaling the function |
||
− | $f = FEQ("x**2/$c for x in <-1,9> using color:blue and weight:2"); |
||
− | $ftex = "\frac{x^2}{$c}"; |
||
− | # the parentheses around $fRefL are necessary |
||
− | ($fRefL) = plot_functions( $graphL, $f ); |
||
+ | $xmin = random(-3,-1,1); |
||
+ | $xmax = random(1,3,1); |
||
− | # Generate arrays of x and y values for the Riemann sum. |
||
+ | $ymin = random(-3,-1,1); |
||
− | # There are n+1 entries in each array so that we can use |
||
+ | $ymax = random(1,3,1); |
||
− | # only one pair of arrays for both the left and the right |
||
− | # endpoint Riemann sums. |
||
− | $a = random(2,4,1); # left endpoint of interval |
||
− | $b = $a+4; # right endpoint of interval |
||
− | $n = 8; # number of rectangles |
||
− | $deltax = ($b - $a)/$n; |
||
− | foreach $k (0..$n) { $x[$k] = $a + $k * $deltax; } |
||
− | foreach $k (0..$n) { $y[$k] = &{$fRefL->rule}($x[$k]); } |
||
+ | # filled triangle with dark border |
||
+ | $gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]); |
||
+ | $gr1->new_color("lightgreen",156,215,151); # RGB |
||
+ | $gr1->new_color("darkgreen", 0, 86, 34); |
||
+ | $gr1->moveTo($xmin,$ymin); |
||
+ | $gr1->lineTo($xmax,$ymin,"darkgreen",2); # bottom edge |
||
+ | $gr1->lineTo($xmin,$ymax,"darkgreen",2); # hypotenuse |
||
+ | $gr1->lineTo($xmin,$ymin,"darkgreen",2); # left edge |
||
+ | $gr1->fillRegion([$xmin+0.1,$ymin+0.1,"lightgreen"]); |
||
− | # Graph the left endpoint Riemann sum |
||
+ | # filled rectangle with dark border |
||
− | $lightblue = $graphL->im->colorAllocate(148,201,255); |
||
+ | $gr2 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]); |
||
− | $darkblue = $graphL->im->colorAllocate(100,100,255); |
||
+ | $gr2->new_color("lightblue",148,201,255); |
||
− | # Create arrays of pixel references for x and y values |
||
+ | $gr2->new_color("darkblue", 100,100,255); |
||
− | foreach $k (0..8) { |
||
+ | $gr2->im->filledRectangle($xmin,$ymin,$xmax,$ymax,"lightblue"); |
||
− | $xpixL[$k] = $graphL->ii($x[$k]); |
||
+ | $gr2->im->rectangle($xmin,$ymin,$xmax,$ymax,"darkblue"); |
||
− | $ypixL[$k] = $graphL->jj($y[$k]); |
||
− | } |
||
− | $xaxisL = $graphL->jj(0); |
||
− | # Plot the rectangles in the Riemann sum |
||
− | foreach $k (0..$n-1) { |
||
− | $graphL->im->filledRectangle($xpixL[$k],$ypixL[$k],$xpixL[$k+1],$xaxisL,$lightblue); |
||
− | $graphL->im->rectangle($xpixL[$k],$ypixL[$k],$xpixL[$k+1],$xaxisL,$darkblue); |
||
− | } |
||
− | $graphL->lb(new Label ( 8.5,0,'x','black','right','top')); |
||
− | $graphL->lb(new Label ( -0.25,8.5,'y','black','right','top')); |
||
− | |||
− | |||
− | # Construct a graph for the right endpoint Riemann sum |
||
− | $graphR = init_graph(-1,-1,9,9,ticks=>[10,10],axes=>[0,0],pixels=>[400,400]); |
||
− | # the parentheses around $fRefR are necessary |
||
− | ($fRefR) = plot_functions( $graphR, $f ); |
||
− | |||
− | |||
− | # Graph the right endpoint Riemann sum |
||
− | $lightblue = $graphR->im->colorAllocate(148,201,255); |
||
− | $darkblue = $graphR->im->colorAllocate(100,100,255); |
||
− | # Create arrays of pixel references for x and y values |
||
− | foreach $k (0..8) { |
||
− | $xpixR[$k] = $graphR->ii($x[$k]); |
||
− | $ypixR[$k] = $graphR->jj($y[$k]); |
||
− | } |
||
− | $xaxisR = $graphR->jj(0); |
||
− | # Plot the rectangles in the Riemann sum |
||
− | foreach $k (1..$n) { |
||
− | $graphR->im->filledRectangle($xpixR[$k-1],$ypixR[$k],$xpixR[$k],$xaxisR,$lightblue); |
||
− | $graphR->im->rectangle($xpixR[$k-1],$ypixR[$k],$xpixR[$k],$xaxisR,$darkblue); |
||
− | } |
||
− | $graphR->lb(new Label ( 8.5,0,'x','black','right','top')); |
||
− | $graphR->lb(new Label ( -0.25,8.5,'y','black','right','top')); |
||
</pre> |
</pre> |
||
</td> |
</td> |
||
Line 134: | Line 91: | ||
<pre> |
<pre> |
||
BEGIN_TEXT |
BEGIN_TEXT |
||
− | |||
− | The rectangles in the graph below illustrate a left endpoint Riemann sum for \( \displaystyle f(x) = $ftex \) on the interval \( \lbrack $a, $b \rbrack \). |
||
− | $BR |
||
− | The value of this left endpoint Riemann sum is \{NAMED_ANS_RULE('optional1',30)\}, |
||
− | and this Riemann sum is an \{ NAMED_POP_UP_LIST('optional2',['?','overestimate |
||
− | of','equal to','underestimate of','there is ambiguity']) \} the area of the region enclosed by \(\displaystyle y = f(x) \), the x-axis, and the vertical lines x = $a and x = $b. |
||
− | |||
− | $BR |
||
− | $BR |
||
− | |||
$BCENTER |
$BCENTER |
||
− | \{ begintable(1) \} |
||
+ | \{ image( insertGraph($gr1), height=>300, width=>300, tex_size=>800 ) \} |
||
− | \{ row( image( insertGraph($graphL), height=>400, width=>400, tex_size=>800 ) ) \} |
||
− | \{ row("Left endpoint Riemann sum for \( y = $ftex \) on \( \lbrack $a, $b \rbrack \)") \} |
||
− | \{ endtable() \} |
||
$ECENTER |
$ECENTER |
||
− | |||
+ | $PAR |
||
− | $BR |
||
− | $HR |
||
− | $BR |
||
− | |||
− | The rectangles in the graph below illustrate a right endpoint Riemann sum for \( \displaystyle f(x) = $ftex \) on the interval \( \lbrack $a, $b \rbrack \). |
||
− | $BR |
||
− | The value of this right endpoint Riemann sum is \{NAMED_ANS_RULE('optional3',30)\}, |
||
− | and this Riemann sum is an \{ NAMED_POP_UP_LIST('optional4',['?','overestimate of','equal to','underestimate of','there is ambiguity']) \} the area of the region enclosed by \(\displaystyle y = f(x) \), the x-axis, and the vertical lines x = $a and x = $b. |
||
− | $BR |
||
− | $BR |
||
− | |||
$BCENTER |
$BCENTER |
||
− | \{ begintable(1) \} |
||
+ | \{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \} |
||
− | \{ row( image( insertGraph($graphR), height=>400, width=>400, tex_size=>800 ) ) \} |
||
− | \{ row("Right endpoint Riemann sum for \( y = $ftex \) on \( \lbrack $a, $b \rbrack \)") \} |
||
− | \{ endtable() \} |
||
$ECENTER |
$ECENTER |
||
− | |||
END_TEXT |
END_TEXT |
||
</pre> |
</pre> |
||
Line 184: | Line 113: | ||
<td style="background-color:#eeddff;border:black 1px dashed;"> |
<td style="background-color:#eeddff;border:black 1px dashed;"> |
||
<pre> |
<pre> |
||
− | $LeftRiemannSum = 0; |
||
− | foreach $k (0..$n-1) { $LeftRiemannSum = $LeftRiemannSum + $y[$k]; } |
||
− | $LeftRiemannSum = $deltax * $LeftRiemannSum; |
||
− | NAMED_WEIGHTED_ANS('optional1',num_cmp($LeftRiemannSum),45); |
||
− | NAMED_WEIGHTED_ANS('optional2',str_cmp("underestimate of"),5); |
||
+ | $showPartialCorrectAnswers = 1; |
||
− | |||
− | $RightRiemannSum = 0; |
||
− | foreach $k (1..$n) { $RightRiemannSum = $RightRiemannSum + $y[$k]; } |
||
− | $RightRiemannSum = $deltax * $RightRiemannSum; |
||
− | NAMED_WEIGHTED_ANS('optional3',num_cmp($RightRiemannSum),45); |
||
− | |||
− | NAMED_WEIGHTED_ANS('optional4',str_cmp("overestimate of"),5); |
||
ENDDOCUMENT(); |
ENDDOCUMENT(); |
||
− | |||
− | |||
</pre> |
</pre> |
||
<td style="background-color:#eeccff;padding:7px;"> |
<td style="background-color:#eeccff;padding:7px;"> |
Revision as of 19:50, 22 February 2010
Dynamic Graphic Images, with Filled Regions
This code snippet shows the essential PG code to check student answers that are equations. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "PGgraphmacros.pl", # "PGnumericalmacros.pl", # might be useful ); TEXT(beginproblem()); |
Initialization:
To do ..(what you are doing)........., we don't have to change the
tagging and documentation section of the problem file.
In the initialization section, we need to include the macros file |
$xmin = random(-3,-1,1); $xmax = random(1,3,1); $ymin = random(-3,-1,1); $ymax = random(1,3,1); # filled triangle with dark border $gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]); $gr1->new_color("lightgreen",156,215,151); # RGB $gr1->new_color("darkgreen", 0, 86, 34); $gr1->moveTo($xmin,$ymin); $gr1->lineTo($xmax,$ymin,"darkgreen",2); # bottom edge $gr1->lineTo($xmin,$ymax,"darkgreen",2); # hypotenuse $gr1->lineTo($xmin,$ymin,"darkgreen",2); # left edge $gr1->fillRegion([$xmin+0.1,$ymin+0.1,"lightgreen"]); # filled rectangle with dark border $gr2 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]); $gr2->new_color("lightblue",148,201,255); $gr2->new_color("darkblue", 100,100,255); $gr2->im->filledRectangle($xmin,$ymin,$xmax,$ymax,"lightblue"); $gr2->im->rectangle($xmin,$ymin,$xmax,$ymax,"darkblue"); |
Setup:
We specify that the Context should be Notes: on using this and related Contexts. |
BEGIN_TEXT $BCENTER \{ image( insertGraph($gr1), height=>300, width=>300, tex_size=>800 ) \} $ECENTER $PAR $BCENTER \{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \} $ECENTER END_TEXT |
Main Text: The problem text section of the file is as we'd expect. |
$showPartialCorrectAnswers = 1; ENDDOCUMENT(); |
Answer Evaluation: As is the answer. |