>>> from sympy import *
>>> x,y=var('x,y')
>>> f=[x+y,y]
>>> g=[y,x]
>>> h=[x*x,y*y]
>>> div = lambda pq: diff(pq[0],x)+diff(pq[1],y)
>>> curl = lambda pq: diff(pq[1],x)-diff(pq[0],y)
>>> [[op(k) for op in [div, curl]] for k in [f,g,h]]
[[2, -1], [0, 0], [2*x + 2*y, 0]]
>>> r,th,ph=var('r,theta,phi')
>>> integrate(2*r*r*(cos(th)+sin(th)),(th,0,pi),(r,0,5))
500/3
>>> div3 = lambda pqr: diff(pqr[0],x)+diff(pqr[1],y)+diff(pqr[2],z)
>>> curl3 = lambda pqr: [diff(pqr[2],y)-diff(pqr[1],z),
...                      diff(pqr[0],z)-diff(pqr[2],x),
...                      diff(pqr[1],x)-diff(pqr[0],y)]
>>> F=[y*y,z*z,x*x]
>>> G=[x+2*y,3*y+4*z,5*z+6*x]
>>> r4=(x*x+y*y+z*z)**2
>>> H=[x/r4,y/r4,z/r4]
>>> [[simplify(op(k)) for op in [div3, curl3]] for k in [F,G,H]]
[[0, [-2*z, -2*x, -2*y]], [9, [-4, -6, -2]], [-1/(x**2 + y**2 + z**2)**2, [0, 0, 0]]]
>>> u,v=var('u,v')
>>> s=[[u,v,u*u-v*v],
...    [(7+3*cos(u))*cos(v),(7+3*cos(u))*sin(v),3*sin(u)],
...    [u-v,u*u-v*v,u**3-v**3]]
>>> cross = lambda a,b: [a[1]*b[2]-a[2]*b[1],
...                      a[2]*b[0]-a[0]*b[2],
...                      a[0]*b[1]-a[1]*b[0]]
>>> mag = lambda r: sqrt(sum([w*w for w in r]))
>>> nda = lambda xyz: cross([diff(w,u) for w in xyz],
...                         [diff(w,v) for w in xyz])
>>> da = lambda xyz: mag(nda(xyz))
>>> a = [da(r) for r in s]
>>> a
[sqrt(4*u**2 + 4*v**2 + 1), sqrt((-3*(3*cos(u) + 7)*sin(u)*sin(v)**2 - 3*(3*cos(u) + 7)*sin(u)*cos(v)**2)**2 + 9*(3*cos(u) + 7)**2*sin(v)**2*cos(u)**2 + 9*(3*cos(u) + 7)**2*cos(u)**2*cos(v)**2), sqrt((2*u - 2*v)**2 + (-3*u**2 + 3*v**2)**2 + (6*u**2*v - 6*u*v**2)**2)]
>>> from scipy.integrate import dblquad
>>> dblquad(lambdify([u,v],a[0]),-1,1,lambda u :-1,lambda u:1)[0]
7.446256723012359
>>> dblquad(lambdify([u,v],a[1]),0,2*pi,lambda u : 0,lambda u:2*pi)[0]
829.0467696915061
>>> N(7*3*(2*pi)**2)
829.046769691506
>>> dblquad(lambdify([u,v],a[2]),0,2,lambda u : 0,lambda u:2-u)[0]
7.177273749258157
>>> r55=[4*sin(u)*cos(v),4*sin(u)*sin(v),4*cos(u)]
>>> nda55=nda(r55)
>>> nda55
[16*sin(u)**2*cos(v), 16*sin(u)**2*sin(v), 16*sin(u)*sin(v)**2*cos(u) + 16*sin(u)*cos(u)*cos(v)**2]
>>> x55,y55,z55 = tuple(r55)
>>> f55=[z55,0,x55**2]
>>> f55
4*sin(ph)*cos(th), 4*sin(ph)*sin(th), 4*cos(ph)
>>> dot = lambda p,q: sum(i*j for i,j in zip(p,q))
>>> fnda55=simplify(dot(f55,nda55))
>>> fnda55
64*(4*sin(u)*cos(v) + 1)*sin(u)**2*cos(u)*cos(v)
>>> integrate(fnda55,(u,0,pi/2),(v,0,2*pi))
64*pi
>>> N(64*pi)
201.061929829747
>>> x56,y56,z56=u*cos(v),u*sin(v),4-u*u
>>> f56=[z-y,x,2]
>>> c56=curl3(f56)
>>> c56
[0, 1, 2]
>>> nda56=nda([x56,y56,z56])
>>> cfnda=simplify(dot(c56,nda56))
>>> cfnda
2*u*(u*sin(v) + 1)
>>> integrate(cfnda,(u,0,1),(v,0,2*pi))
2*pi
>>> r56b=[cos(th),sin(th),3]
>>> f56b=[sympify(c).subs(zip([x,y,z],r56b)) for c in f56]
>>> f56b
[-sin(theta) + 3, cos(theta), 2]
>>> dr=[diff(c,th) for c in r56b]
>>> dr
[-sin(theta), cos(theta), 0]
>>> fdr=simplify(dot(f56b,dr))
>>> fdr
-3*sin(theta) + 1
>>> integrate(fdr,(th,0,2*pi))
2*pi
