Difference between revisions of "VectorFields2D"
Line 81: | Line 81: | ||
ysamples => 10, |
ysamples => 10, |
||
vectorcolor => "blue", |
vectorcolor => "blue", |
||
− | vectorscale => |
+ | vectorscale => 1.5, |
vectorthickness => 2, |
vectorthickness => 2, |
||
xavoid=>0, |
xavoid=>0, |
||
Line 91: | Line 91: | ||
<p> |
<p> |
||
<b>Setup:</b> |
<b>Setup:</b> |
||
− | We create a blank graph canvas and add labels to it. Then, using the <code>VectorField2D()</code> subroutine, we specify the formula for the vector field and its parameters. The values for <code>xsamples</code> and <code>ysamples</code> were chosen so that the tails of the vectors would be on lattice points (this routine automatically adds one to the samples values, which is usually what you want since there are 11 integers between -5 and 5 including endpoints). You can uniformly rescale the length of all the vectors in the vector field by setting <code>vectorscale</code> to a different value. You can avoid one point with coordinates (xavoid,yavoid) where the vector field may be undefined. |
+ | We create a blank graph canvas and add labels to it. Then, using the <code>VectorField2D()</code> subroutine, we specify the formula for the vector field and its parameters. The values for <code>xsamples</code> and <code>ysamples</code> were chosen so that the tails of the vectors would be on lattice points (this routine automatically adds one to the samples values, which is usually what you want since there are 11 integers between -5 and 5 including endpoints). You can uniformly rescale the length of all the vectors in the vector field by setting <code>vectorscale</code> to a different value (natural length is 1). You can avoid one point with coordinates (xavoid,yavoid) where the vector field may be undefined. |
</p> |
</p> |
||
</td> |
</td> |
Revision as of 19:24, 22 April 2010
Vector Field Graphs (in two dimensions)
This PG code shows how to plot a vector field in two dimensions.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "PGgraphmacros.pl", "VectorField2D.pl", ); TEXT(beginproblem()); $refreshCachedImages = 1; |
Initialization:
We need to include the macros file |
Context()->variables->add(y=>"Real"); # # Create a graph canvas # foreach my $i (0) { $gr[$i] = init_graph(-5,-5,5,5,grid=>[10,10],axes=>[0,0],pixels=>[400,400]); $gr[$i]->lb('reset'); foreach my $j (1..4) { $gr[$i]->lb( new Label(-4.7, $j, $j,'black','center','middle')); $gr[$i]->lb( new Label(-4.7, -$j,-$j,'black','center','middle')); $gr[$i]->lb( new Label( $j,-4.7, $j,'black','center','middle')); $gr[$i]->lb( new Label( -$j,-4.7,-$j,'black','center','middle')); } $gr[$i]->lb( new Label(4.7,0.2,'x','black','center','middle')); $gr[$i]->lb( new Label(0.2,4.7,'y','black','center','middle')); } VectorField2D( graphobject => $gr[0], Fx => Formula("x/(x^2+y^2)"), Fy => Formula("y/(x^2+y^2)"), xvar => "x", yvar => "y", xmin => -5, xmax => 5, ymin => -5, ymax => 5, xsamples => 10, ysamples => 10, vectorcolor => "blue", vectorscale => 1.5, vectorthickness => 2, xavoid=>0, yavoid=>0, ); |
Setup:
We create a blank graph canvas and add labels to it. Then, using the |
BEGIN_TEXT This is a velocity vector field for an explosion at the origin that decreases in speed the farther the distance is from the origin. $PAR $BCENTER \{ image(insertGraph($gr[0]),width=>400,height=>400,tex_size=>700) \} $ECENTER END_TEXT |
Main Text: The problem text section of the file is as we'd expect. |
$showPartialCorrectAnswers = 1; ENDDOCUMENT(); |
Answer Evaluation: We didn't ask any questions, so this is uninteresting. |