Spaces:
Sleeping
Sleeping
| 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 | |