Functions#
All functions support the methods documented below, inherited from
sympy.core.function.Function
.
- class sympy.core.function.Function(*args)[source]
Base class for applied mathematical functions.
It also serves as a constructor for undefined function classes.
Examples
First example shows how to use Function as a constructor for undefined function classes:
>>> from sympy import Function, Symbol >>> x = Symbol('x') >>> f = Function('f') >>> g = Function('g')(x) >>> f f >>> f(x) f(x) >>> g g(x) >>> f(x).diff(x) Derivative(f(x), x) >>> g.diff(x) Derivative(g(x), x)
Assumptions can be passed to Function, and if function is initialized with a Symbol, the function inherits the name and assumptions associated with the Symbol:
>>> f_real = Function('f', real=True) >>> f_real(x).is_real True >>> f_real_inherit = Function(Symbol('f', real=True)) >>> f_real_inherit(x).is_real True
Note that assumptions on a function are unrelated to the assumptions on the variable it is called on. If you want to add a relationship, subclass Function and define the appropriate
_eval_is_assumption
methods.In the following example Function is used as a base class for
my_func
that represents a mathematical function my_func. Suppose that it is well known, that my_func(0) is 1 and my_func at infinity goes to 0, so we want those two simplifications to occur automatically. Suppose also that my_func(x) is real exactly when x is real. Here is an implementation that honours those requirements:>>> from sympy import Function, S, oo, I, sin >>> class my_func(Function): ... ... @classmethod ... def eval(cls, x): ... if x.is_Number: ... if x.is_zero: ... return S.One ... elif x is S.Infinity: ... return S.Zero ... ... def _eval_is_real(self): ... return self.args[0].is_real ... >>> x = S('x') >>> my_func(0) + sin(0) 1 >>> my_func(oo) 0 >>> my_func(3.54).n() # Not yet implemented for my_func. my_func(3.54) >>> my_func(I).is_real False
In order for
my_func
to become useful, several other methods would need to be implemented. See source code of some of the already implemented functions for more complete examples.Also, if the function can take more than one argument, then
nargs
must be defined, e.g. ifmy_func
can take one or two arguments then,>>> class my_func(Function): ... nargs = (1, 2) ... >>>
- as_base_exp()[source]
Returns the method as the 2-tuple (base, exponent).
- fdiff(argindex=1)[source]
Returns the first derivative of the function.
- classmethod is_singular(a)[source]
Tests whether the argument is an essential singularity or a branch point, or the functions is non-holomorphic.
Contents#
- Elementary
- sympy.functions.elementary.complexes
- sympy.functions.elementary.trigonometric
- Trigonometric Functions
- Trigonometric Inverses
- sympy.functions.elementary.hyperbolic
- Hyperbolic Functions
- Hyperbolic Inverses
- sympy.functions.elementary.integers
- sympy.functions.elementary.exponential
- sympy.functions.elementary.piecewise
- sympy.functions.elementary.miscellaneous
- Combinatorial
- Enumeration
- Special
- DiracDelta
- Heaviside
- Singularity Function
- Gamma, Beta and related Functions
- Error Functions and Fresnel Integrals
- Exponential, Logarithmic and Trigonometric Integrals
- Bessel Type Functions
- Airy Functions
- B-Splines
- Riemann Zeta and Related Functions
- Hypergeometric Functions
- Elliptic integrals
- Mathieu Functions
- Orthogonal Polynomials
- Spherical Harmonics
- Tensor Functions