var('x,y,t') F=vector([-y,x]) #F=vector([2*x+y,-x+2*y]) #Uncomment this line for a different field. r=vector([5*cos(t), 5*sin(t)]) tstart=0 tend=2*pi vector_field_bounds = ((x,-6,6), (y,-6,6)) # Let's make a function right off to evaluate an integral over this curve. def line_integral(integrand): return RR(numerical_integral((integrand).subs(x=r[0], y=r[1]), tstart, tend)[0]) dr=diff(r,t) dW=F(x=r[0], y=r[1])*dr # Multiplying two vectors together gives the dot product W=line_integral(dW) nds(t) = (dr[1], -dr[0]) dFlux=F(x=r[0], y=r[1])*nds Flux=line_integral(dFlux) # TABLE show(table([ [r"$\vec F(x,y)$", F], [r"$\vec r(t)$", r], [r"$t$ range", (t, tstart, tend)], [r"$d\vec r$", dr], [r"$\vec F(\vec r(t))$", F(x=r[0], y=r[1])], [r"$dW=\vec F \cdot d\vec r$", dW], [r"$W=\int dW=\int \vec F \cdot d\vec r$", W], [r"$\vec n ds$", nds(t)], [r"$dFlux=F\cdot n ds = M dy - N dx$", dFlux(t)], [r"Flux=$\int dFlux=\int F\cdot n ds = \int Mdy-Ndx$", Flux] ])) # PLOT @interact def _(state=["flow","flux"]): p=plot_vector_field(F, *vector_field_bounds) p+= parametric_plot(r, (t, tstart, tend),thickness=3) if state=="flow": for i in srange(tstart, tend, (tend-tstart)/18): p += arrow(r(t=i), (r+ .5*dr)(t=i),color='red') elif state=="flux": for i in srange(tstart, tend, (tend-tstart)/18): p += arrow(r(t=i), (r+ .5*nds)(t=i),color='green') show(p, aspect_ratio=1)