## DESCRIPTION ## Multivariable differential calculus: creating a contour plot ## ENDDESCRIPTION ## KEYWORDS('multivariable differential calculus', 'contour plot') ## DBsubject('WeBWorK') ## DBchapter('WeBWorK Tutorial') ## DBsection('Fort Lewis Tutorial 2011') ## Date('01/30/2011') ## Author('Paul Pearson') ## Institution('Fort Lewis College') ## TitleText1('') ## EditionText1('') ## AuthorText1('') ## Section1('') ## Problem1('') #################################### # Initialization DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "PGgraphmacros.pl", "unionTables.pl", "parserPopUp.pl", ); TEXT(beginproblem()); $refreshCachedImages=1; ################################## # Set-up Context("Numeric")->variables->are(t=>"Real",x=>"Real",y=>"Real"); # # Create some graph canvases # $gr = init_graph(-5,-5,5,5,axes=>[0,0],pixels=>[300,300]); $gr->lb('reset'); $gr->lb( new Label(4.7,0.2,'x','black','center','middle')); $gr->lb( new Label(0.2,4.7,'y','black','center','middle')); # # A subroutine for adding the color gradient to the graph object # sub makegradient # ($graph, $steps, $r0, $g0, $b0, $r1, $g1, $b1) { my ($graph, $steps, $r0, $g0, $b0, $r1, $g1, $b1) = @_; my $dr = ($r1 - $r0) / $steps; my $dg = ($g1 - $g0) / $steps; my $db = ($b1 - $b0) / $steps; my $r = $r0; my $g = $g0; my $b = $b0; for my $i (0..$steps-1) { $graph->new_color("gradient$i",$r,$g,$b); $r += $dr; $g += $dg; $b += $db; } return $graph; } # # Add to $gr a 10 step color gradient # $gr = &makegradient($gr, 10, 0,0,225, # RGB blue 255,255,255 # RGB white ); # # Circular contours as parametrized curves # foreach my $k (5,10,15,20,25,30,35,40,45) { my $a = sqrt($k); $fn = new Fun( Formula("$a*cos(t)")->perlFunction, Formula("$a*sin(t)")->perlFunction, $gr ); $fn->domain(0,6.3); $fn->color("gray"); $fn->steps(60); $fn->weight(1); } # # Fill with gradient colors between contours # foreach my $i (0..9) { my $a = sqrt(2)/2 * sqrt(5*$i) - 0.1; $gr->fillRegion([ $a, $a, "gradient$i"]); $gr->fillRegion([-$a, $a, "gradient$i"]); $gr->fillRegion([-$a,-$a, "gradient$i"]); $gr->fillRegion([ $a,-$a, "gradient$i"]); } # # Label the contours # foreach my $k (5,15,25,35,45) { $gr->lb( new Label(0.707*sqrt($k),0.707*sqrt($k),$k,'black','center','middle')); } $pop = PopUp(["Choose","True","False"],"False"); #################################### # Main text Context()->texStrings; BEGIN_TEXT \{ $pop->menu() \} This could be a contour plot for \( f(x,y) = x^2 - y^2 \). $BR $BCENTER \{ image(insertGraph($gr),width=>300,height=>300,tex_size=>450) \} $ECENTER END_TEXT Context()->normalStrings; ##################################### # Answer evaluation $showPartialCorrectAnswers = 0; ANS( $pop->cmp() ); ##################################### # Solution Context()->texStrings; BEGIN_SOLUTION ${PAR}SOLUTION:${PAR} Solution explanation goes here. END_SOLUTION Context()->normalStrings; COMMENT("MathObject version."); ENDDOCUMENT();