123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- from sympy.core import Basic
- from sympy.vector.operators import gradient, divergence, curl
- class Del(Basic):
- """
- Represents the vector differential operator, usually represented in
- mathematical expressions as the 'nabla' symbol.
- """
- def __new__(cls):
- obj = super().__new__(cls)
- obj._name = "delop"
- return obj
- def gradient(self, scalar_field, doit=False):
- """
- Returns the gradient of the given scalar field, as a
- Vector instance.
- Parameters
- ==========
- scalar_field : SymPy expression
- The scalar field to calculate the gradient of.
- doit : bool
- If True, the result is returned after calling .doit() on
- each component. Else, the returned expression contains
- Derivative instances
- Examples
- ========
- >>> from sympy.vector import CoordSys3D, Del
- >>> C = CoordSys3D('C')
- >>> delop = Del()
- >>> delop.gradient(9)
- 0
- >>> delop(C.x*C.y*C.z).doit()
- C.y*C.z*C.i + C.x*C.z*C.j + C.x*C.y*C.k
- """
- return gradient(scalar_field, doit=doit)
- __call__ = gradient
- __call__.__doc__ = gradient.__doc__
- def dot(self, vect, doit=False):
- """
- Represents the dot product between this operator and a given
- vector - equal to the divergence of the vector field.
- Parameters
- ==========
- vect : Vector
- The vector whose divergence is to be calculated.
- doit : bool
- If True, the result is returned after calling .doit() on
- each component. Else, the returned expression contains
- Derivative instances
- Examples
- ========
- >>> from sympy.vector import CoordSys3D, Del
- >>> delop = Del()
- >>> C = CoordSys3D('C')
- >>> delop.dot(C.x*C.i)
- Derivative(C.x, C.x)
- >>> v = C.x*C.y*C.z * (C.i + C.j + C.k)
- >>> (delop & v).doit()
- C.x*C.y + C.x*C.z + C.y*C.z
- """
- return divergence(vect, doit=doit)
- __and__ = dot
- __and__.__doc__ = dot.__doc__
- def cross(self, vect, doit=False):
- """
- Represents the cross product between this operator and a given
- vector - equal to the curl of the vector field.
- Parameters
- ==========
- vect : Vector
- The vector whose curl is to be calculated.
- doit : bool
- If True, the result is returned after calling .doit() on
- each component. Else, the returned expression contains
- Derivative instances
- Examples
- ========
- >>> from sympy.vector import CoordSys3D, Del
- >>> C = CoordSys3D('C')
- >>> delop = Del()
- >>> v = C.x*C.y*C.z * (C.i + C.j + C.k)
- >>> delop.cross(v, doit = True)
- (-C.x*C.y + C.x*C.z)*C.i + (C.x*C.y - C.y*C.z)*C.j +
- (-C.x*C.z + C.y*C.z)*C.k
- >>> (delop ^ C.i).doit()
- 0
- """
- return curl(vect, doit=doit)
- __xor__ = cross
- __xor__.__doc__ = cross.__doc__
- def _sympystr(self, printer):
- return self._name
|