Curl of a vector field
Aim of task
- Student knows how to calculate partial derivatives, vector products and curls of 3D vector fields (Handling mathematical symbols and formalism)
- Student understands, how a vector field and its curl are connected graphically (Representing mathematical entities)
- Using a visualization of vector field and its curl the student can graphically check whether his calculations are correct (Making use of aids and tools)
First impression of the question |
Question description
A 3D vector field is plotted. 3 different options for its curl are presented and the student needs to pick what they believe to be correct.
Student perspective
The student sees a plot of the 3D vector field. They can rotate their point of view using the sliders and get a better idea of the vector field.
When the student solves the problem |
Teacher perspective
The teacher can remove entries from or add entries to the list Vlist
that contains the vector fields. Possible vector fields need to contain only the variables x
, y
and z
. The coordinates are saved in the shape [x-component, y-component, z-component]. Each of the components can be dependent on all variables.
The rest of the Question variables should not be altered.
The above image shows which values the teacher may wish to change |
Question code
Question Variables
- Vlist is a list of 3D vector fields dependent on x,y,z and constants given in format [f_x,f_y,f_z] to randomly select from
- Select one of the vector fields by randomizing the index Vindex of the list and evaluating Vlist via Vselected: Vlist[Vindex]
- Define Variables Vx, Vy, Vz as the vector field components in order to plot it in Question text
- Save the curls of all of the vector fields with attribute false to a list in order to access it in Question text
- Set attribute of curl of selected vector field to true in order to be able to check answer
Question variable code
/* define the list of vector fields */
Vlist:[[z,x,y],[y,-x,0],[x,y,z]];
/* select one of the vector fields */
lv:length(Vlist);
Vindex:rand(lv)+1;
Vselected:Vlist[Vindex];
/* compute the curl of all vector fields in the list */
Vcurlop(Vinp):=[diff(Vinp[3],y)-diff(Vinp[2],z),diff(Vinp[1],z)-diff(Vinp[3],x),diff(Vinp[2],x)-diff(Vinp[1],y)];
for iv:1 step 1 thru lv do
(Vlistcurl[iv]:Vcurlop(Vlist[iv]));
/* define Vx, Vy, Vz for rendering the vector field*/
Vx:Vselected[1];
Vy:Vselected[2];
Vz:Vselected[3];
/* build option list for selection */
iv:0;
/* ta out of for loop does not work, create the list manualy */
ta:[[Vlistcurl[1],if Vindex=1 then true else false]];
for iv:2 step 1 thru lv do ta:append(ta,[[Vlistcurl[iv],if Vindex=iv then true else false]]);
/* ta:[[Vlistcurl[1],false],[Vlistcurl[2],false],[Vlistcurl[3],false]];*/
/* set the selected vector field to 'true' */
ta[Vindex][2]:true;
tans:Vlistcurl[Vindex];
Question Text
-
Given is a vector field $V:\mathbb{R}^3\to\mathbb{R}^3$ by $V(x,y,z):=\begin{pmatrix}{@Vx@}\{@Vy@}\{@Vz@}\end{pmatrix}$ as shown in the diagram. Select the vector fields $\hat V$, so that $\hat V = \nabla \times V$ is valid.
- JSXGraph applet using the functions and variables defined in Question variables plotting the 3D vector field and its curl in a projected plane, the angle of projection can be changed such that the vector fields can be viewed from multiple directions
[[input:ans1]]
at the end of JSXGraph code to allow input of an answer of the student[[validation:ans1]]
checking of answer
Question text code
<p>Given is a vector field \(V:\mathbb{R}^3\to\mathbb{R}^3\) by \( V(x,y,z) := \begin{pmatrix}{@Vx@} \\ {@Vy@} \\ {@Vz@}\end{pmatrix} \) as shown in the diagram.</p>
<p>Select the vector fields \(\hat V\), so that \(\hat V = \nabla \times V\) is valid.</p>
[[jsxgraph width="500px" height="500px" input-ref-ans1='ans1Ref']]
var board = JXG.JSXGraph.initBoard(divid,{boundingbox : [0, 10, 10,0], axis:false, shownavigation : false});
var box = [-3,3]
var view = board.create('view3d',
[[2,2.5], [6, 6],
[box, box, box]],
{});
// Transform components of the vector function
var TF1 = board.jc.snippet('{#Vx#}', true, 'x,y,z');
var TF2 = board.jc.snippet('{#Vy#}', true, 'x,y,z');
var TF3 = board.jc.snippet('{#Vz#}', true, 'x,y,z');
var vector=[];
var scaleVec = 0.5;
/* Funktionen zum Plotten der Vektorfelder */
function clearVectorField(){
board.removeObject(vector);
vector=[];
}
function vectorField(){
clearVectorField();
board.suspendUpdate();
var i,j,k,vx,vy;
var pout=[];
for(k=-2; k<2; k+=1){
for(i=-2; i<2; i+=1){
for(j=-2;j<2; j+=1){
//var norm = Math.max((i*i+ j*j ),0.001);
var norm =1;
vector.push(view.create('line3d',[[i, j,k ],
[TF1(i,j,k),TF2(i,j,k),TF3(i,j,k)],[0,scaleVec]],
{point: { withLabel: false},
point1: {visible: true, size: 1, color: '#EE442F',strokeColor: '#EE442F', withLabel: false},
point2: {visible: false, withLabel: false},
lastArrow:true, fixed: true, strokeColor:'#EE442F', highlight:false})
);
}
}
}
board.unsuspendUpdate();
}
/* end helper functions */
vectorField();
board.update();
/* axis labels*/
var xlabel=view.create('point3d',[0.9*box[1],0,(0.6*box[0]+0.4*box[1])], {size:0,name:"x"});
var ylabel=view.create('point3d',[0,0.9*box[1],(0.6*box[0]+0.4*box[1])], {size:0,name:"y"});
var zlabel=view.create('point3d',[
0.7*(0.6*box[0]+0.4*box[1]),
0.7*(0.6*box[0]+0.4*box[1]),
0.9*box[1]],
{size:0,name:"z"});
[[/jsxgraph]]
Select \(\hat V\).
<p>[[input:ans1]] [[validation:ans1]]</p>
Answers
Answer ans 1
property | setting |
---|---|
Input type | Radio |
Model answer | ta defined in Question variables |
Forbidden words | none |
Forbid float | No |
Student must verify | Yes |
Show the validation | Yes, compact |
General feedback
<hr>
<p> The notation \(\nabla \times V\) is describing the application of the curl operator on a vector field \(V\). It is based on the notation of the gradient of a potential \(f\) given as \(\nabla f = \begin{pmatrix} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y}\\ \frac{\partial f}{\partial z} \end{pmatrix}\). </p>
<p> The curl is then defined by the vector product of the nabla operator \(\nabla = \begin{pmatrix} \frac{\partial }{\partial x} \\ \frac{\partial}{\partial y}\\ \frac{\partial}{\partial z} \end{pmatrix}\) and the vector field \(V = \begin{pmatrix} V_x \\ V_y \\V_z \end{pmatrix}\).</p>
<p> We find \(\nabla \times V = \begin{pmatrix}\frac{\partial V_z}{\partial y}- \frac{\partial V_y}{\partial z}\\ \frac{\partial V_x}{\partial z}- \frac{\partial V_z}{\partial x} \\ \frac{\partial V_y }{\partial x}- \frac{\partial V_x}{\partial y} \end{pmatrix} \). </p>
Potential response tree
prt1
Visualization of prt1 |
Feedback variables:
None needed, since ans1
is selected by ticking a button.
Values of node 1 |
Node 1
property | setting |
---|---|
Answer Test | AlgEquiv |
SAns | ans1 |
TAns | tans |
Node 1 true feedback | <p> Well done, you selected the correct vector field. You can now try to calculate the curl of more complicated vector fields. The process is always the same.</p> |
Node 1 false feedback | <p> You did not select the correct vector field. Please compute \(\nabla \times V\) for the given field \(V(x,y,z):=\begin{pmatrix}{@Vx@}\\{@Vy@}\\{@Vz@}\end{pmatrix}\). </p> |