var('t','x','y') #Define your variables r(t) = (t,4-t^2) #State your parametrization bounds = (t,-1,2) #Give bounds for the parametrization F(x,y) = (2*x+y,-x) #State the vector field xbounds = (x,-1,2) #These bounds are useful if you want to make a good plot. ybounds = (y,0,4) #These bounds are useful if you want to make a good plot. dr = r.diff(t) #Compute the derivative dW=F(*r(t)).dot_product(dr(t)) #Find a little bit of work. The code r[0] gives the first component, and r[1] gives the second. W=integrate(dW,bounds) pretty_print(html("""The work done by $F=%s$ along the curve r=$%s$ over the bounds $%s$ is $%s$"""%tuple(map(latex, [F(x,y), r(t), bounds, W])))) show(table([ [r"$\vec r(t)$", "$(x,y)$", r(t)], [r"$d\vec r$", "$(dx,dy)$", dr(t)], ["$F(x,y)$", F(x,y), F(*r(t))], ["$M$", F(x,y)[0], F(*r(t))[0]], ["$N$", F(x,y)[1], F(*r(t))[1]], [r"$dW=F\cdot d\vec r$", "$Mdx+Ndy$", dW], [r"$W=\int_C F\cdot d\vec r$",W,W] ] )) p=parametric_plot(r(t),bounds) p+=plot_vector_field(F,xbounds,ybounds) show(p)