# General examples of usage¶

This section details the solution of two basic problems in vector math/calculus using the sympy.vector package.

### The Problem¶

OABC is any quadrilateral in 3D space. P is the midpoint of OA, Q is the midpoint of AB, R is the midpoint of BC and S is the midpoint of OC. Prove that PQ is parallel to SR

### Solution¶

The solution to this problem demonstrates the usage of Point, and basic operations on Vector.

Define a coordinate system

>>> from sympy.vector import CoordSys3D
>>> Sys = CoordSys3D('Sys')


Define point O to be Sys’ origin. We can do this without loss of generality

>>> O = Sys.origin


Define point A with respect to O

>>> from sympy import symbols
>>> a1, a2, a3 = symbols('a1 a2 a3')
>>> A = O.locate_new('A', a1*Sys.i + a2*Sys.j + a3*Sys.k)


Similarly define points B and C

>>> b1, b2, b3 = symbols('b1 b2 b3')
>>> B = O.locate_new('B', b1*Sys.i + b2*Sys.j + b3*Sys.k)
>>> c1, c2, c3 = symbols('c1 c2 c3')
>>> C = O.locate_new('C', c1*Sys.i + c2*Sys.j + c3*Sys.k)


P is the midpoint of OA. Lets locate it with respect to O (you could also define it with respect to A).

>>> P = O.locate_new('P', A.position_wrt(O) + (O.position_wrt(A) / 2))


Similarly define points Q, R and S as per the problem definitions.

>>> Q = A.locate_new('Q', B.position_wrt(A) / 2)
>>> R = B.locate_new('R', C.position_wrt(B) / 2)
>>> S = O.locate_new('R', C.position_wrt(O) / 2)


Now compute the vectors in the directions specified by PQ and SR.

>>> PQ = Q.position_wrt(P)
>>> SR = R.position_wrt(S)


Compute cross product

>>> PQ.cross(SR)
0


Since the cross product is a zero vector, the two vectors have to be parallel, thus proving that PQ || SR.

## Third product rule for Del operator¶

### See¶

 [WikiDel] http://en.wikipedia.org/wiki/Del

### The Problem¶

Prove the third rule - $$\nabla \cdot (f \vec v) = f (\nabla \cdot \vec v) + \vec v \cdot (\nabla f)$$

### Solution¶

>>> from sympy.vector import CoordSys3D, Del
>>> delop = Del()
>>> C = CoordSys3D('C')


The scalar field $$f$$ and the measure numbers of the vector field $$\vec v$$ are all functions of the coordinate variables of the coordinate system in general. Hence, define SymPy functions that way.

>>> from sympy import symbols
>>> v1, v2, v3, f = symbols('v1 v2 v3 f', type="Function")


v1, v2 and v3 are the $$X$$, $$Y$$ and $$Z$$ components of the vector field respectively.

Define the vector field as vfield and the scalar field as sfield.

>>> vfield = v1(C.x, C.y, C.z)*C.i + v2(C.x, C.y, C.z)*C.j + v3(C.x, C.y, C.z)*C.k
>>> ffield = f(C.x, C.y, C.z)


Construct the expression for the LHS of the equation using Del().

>>> lhs = (delop.dot(ffield * vfield)).doit()


Similarly, the RHS would be defined.

>>> rhs = ((vfield.dot(delop(ffield))) + (ffield * (delop.dot(vfield)))).doit()


Now, to prove the product rule, we would just need to equate the expanded and simplified versions of the lhs and the rhs, so that the SymPy expressions match.

>>> lhs.expand().simplify() == rhs.expand().doit().simplify()
True


Thus, the general form of the third product rule mentioned above can be proven using sympy.vector.