Elementary¶
This module implements elementary functions such as trigonometric, hyperbolic, and
sqrt, as well as functions like Abs
, Max
, Min
etc.
sympy.functions.elementary.complexes¶
re¶
-
class
sympy.functions.elementary.complexes.
re
[source]¶ Returns real part of expression. This function performs only elementary analysis and so it will fail to decompose properly more complicated expressions. If completely simplified result is needed then use Basic.as_real_imag() or perform complex expansion on instance of this function.
See also
im
Examples
>>> from sympy import re, im, I, E >>> from sympy.abc import x, y >>> re(2*E) 2*E >>> re(2*I + 17) 17 >>> re(2*I) 0 >>> re(im(x) + x*I + 2) 2
im¶
-
class
sympy.functions.elementary.complexes.
im
[source]¶ Returns imaginary part of expression. This function performs only elementary analysis and so it will fail to decompose properly more complicated expressions. If completely simplified result is needed then use Basic.as_real_imag() or perform complex expansion on instance of this function.
See also
re
Examples
>>> from sympy import re, im, E, I >>> from sympy.abc import x, y >>> im(2*E) 0 >>> re(2*I + 17) 17 >>> im(x*I) re(x) >>> im(re(x) + y) im(y)
sign¶
-
class
sympy.functions.elementary.complexes.
sign
[source]¶ Returns the complex sign of an expression:
If the expresssion is real the sign will be:
- 1 if expression is positive
- 0 if expression is equal to zero
- -1 if expression is negative
If the expresssion is imaginary the sign will be:
- I if im(expression) is positive
- -I if im(expression) is negative
Otherwise an unevaluated expression will be returned. When evaluated, the result (in general) will be
cos(arg(expr)) + I*sin(arg(expr))
.See also
Abs
,conjugate
Examples
>>> from sympy.functions import sign >>> from sympy.core.numbers import I
>>> sign(-1) -1 >>> sign(0) 0 >>> sign(-3*I) -I >>> sign(1 + I) sign(1 + I) >>> _.evalf() 0.707106781186548 + 0.707106781186548*I
Abs¶
-
class
sympy.functions.elementary.complexes.
Abs
[source]¶ Return the absolute value of the argument.
This is an extension of the built-in function abs() to accept symbolic values. If you pass a SymPy expression to the built-in abs(), it will pass it automatically to Abs().
See also
sign
,conjugate
Examples
>>> from sympy import Abs, Symbol, S >>> Abs(-1) 1 >>> x = Symbol('x', real=True) >>> Abs(-x) Abs(x) >>> Abs(x**2) x**2 >>> abs(-x) # The Python built-in Abs(x)
Note that the Python built-in will return either an Expr or int depending on the argument:
>>> type(abs(-1)) <... 'int'> >>> type(abs(S.NegativeOne)) <class 'sympy.core.numbers.One'>
Abs will always return a sympy object.
arg¶
conjugate¶
-
class
sympy.functions.elementary.complexes.
conjugate
[source]¶ Returns the \(complex conjugate\) Ref[1] of an argument. In mathematics, the complex conjugate of a complex number is given by changing the sign of the imaginary part.
Thus, the conjugate of the complex number \(a + ib\) (where a and b are real numbers) is \(a - ib\)
See also
sign
,Abs
References
[R117] http://en.wikipedia.org/wiki/Complex_conjugation Examples
>>> from sympy import conjugate, I >>> conjugate(2) 2 >>> conjugate(I) -I
polar_lift¶
-
class
sympy.functions.elementary.complexes.
polar_lift
[source]¶ Lift argument to the Riemann surface of the logarithm, using the standard branch.
>>> from sympy import Symbol, polar_lift, I >>> p = Symbol('p', polar=True) >>> x = Symbol('x') >>> polar_lift(4) 4*exp_polar(0) >>> polar_lift(-4) 4*exp_polar(I*pi) >>> polar_lift(-I) exp_polar(-I*pi/2) >>> polar_lift(I + 2) polar_lift(2 + I)
>>> polar_lift(4*x) 4*polar_lift(x) >>> polar_lift(4*p) 4*p
See also
sympy.functions.elementary.exponential.exp_polar
,periodic_argument
periodic_argument¶
-
class
sympy.functions.elementary.complexes.
periodic_argument
[source]¶ Represent the argument on a quotient of the Riemann surface of the logarithm. That is, given a period P, always return a value in (-P/2, P/2], by using exp(P*I) == 1.
>>> from sympy import exp, exp_polar, periodic_argument, unbranched_argument >>> from sympy import I, pi >>> unbranched_argument(exp(5*I*pi)) pi >>> unbranched_argument(exp_polar(5*I*pi)) 5*pi >>> periodic_argument(exp_polar(5*I*pi), 2*pi) pi >>> periodic_argument(exp_polar(5*I*pi), 3*pi) -pi >>> periodic_argument(exp_polar(5*I*pi), pi) 0
See also
sympy.functions.elementary.exponential.exp_polar
polar_lift
- Lift argument to the Riemann surface of the logarithm
principal_branch
principal_branch¶
-
class
sympy.functions.elementary.complexes.
principal_branch
[source]¶ Represent a polar number reduced to its principal branch on a quotient of the Riemann surface of the logarithm.
This is a function of two arguments. The first argument is a polar number \(z\), and the second one a positive real number of infinity, \(p\). The result is “z mod exp_polar(I*p)”.
>>> from sympy import exp_polar, principal_branch, oo, I, pi >>> from sympy.abc import z >>> principal_branch(z, oo) z >>> principal_branch(exp_polar(2*pi*I)*3, 2*pi) 3*exp_polar(0) >>> principal_branch(exp_polar(2*pi*I)*3*z, 2*pi) 3*principal_branch(z, 2*pi)
See also
sympy.functions.elementary.exponential.exp_polar
polar_lift
- Lift argument to the Riemann surface of the logarithm
periodic_argument
sympy.functions.elementary.trigonometric¶
Trionometric Functions¶
sin¶
-
class
sympy.functions.elementary.trigonometric.
sin
[source]¶ The sine function.
Returns the sine of x (measured in radians).
See also
csc
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
This function will evaluate automatically in the case x/pi is some rational number [R121]. For example, if x is a multiple of pi, pi/2, pi/3, pi/4 and pi/6.
References
[R118] http://en.wikipedia.org/wiki/Trigonometric_functions [R119] http://dlmf.nist.gov/4.14 [R120] http://functions.wolfram.com/ElementaryFunctions/Sin [R121] (1, 2) http://mathworld.wolfram.com/TrigonometryAngles.html Examples
>>> from sympy import sin, pi >>> from sympy.abc import x >>> sin(x**2).diff(x) 2*x*cos(x**2) >>> sin(1).diff(x) 0 >>> sin(pi) 0 >>> sin(pi/2) 1 >>> sin(pi/6) 1/2 >>> sin(pi/12) -sqrt(2)/4 + sqrt(6)/4
cos¶
-
class
sympy.functions.elementary.trigonometric.
cos
[source]¶ The cosine function.
Returns the cosine of x (measured in radians).
See also
sin
,csc
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
See
sin()
for notes about automatic evaluation.References
[R122] http://en.wikipedia.org/wiki/Trigonometric_functions [R123] http://dlmf.nist.gov/4.14 [R124] http://functions.wolfram.com/ElementaryFunctions/Cos Examples
>>> from sympy import cos, pi >>> from sympy.abc import x >>> cos(x**2).diff(x) -2*x*sin(x**2) >>> cos(1).diff(x) 0 >>> cos(pi) -1 >>> cos(pi/2) 0 >>> cos(2*pi/3) -1/2 >>> cos(pi/12) sqrt(2)/4 + sqrt(6)/4
tan¶
-
class
sympy.functions.elementary.trigonometric.
tan
[source]¶ The tangent function.
Returns the tangent of x (measured in radians).
See also
sin
,csc
,cos
,sec
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
See
sin()
for notes about automatic evaluation.References
[R125] http://en.wikipedia.org/wiki/Trigonometric_functions [R126] http://dlmf.nist.gov/4.14 [R127] http://functions.wolfram.com/ElementaryFunctions/Tan Examples
>>> from sympy import tan, pi >>> from sympy.abc import x >>> tan(x**2).diff(x) 2*x*(tan(x**2)**2 + 1) >>> tan(1).diff(x) 0 >>> tan(pi/8).expand() -1 + sqrt(2)
cot¶
-
class
sympy.functions.elementary.trigonometric.
cot
[source]¶ The cotangent function.
Returns the cotangent of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
See
sin()
for notes about automatic evaluation.References
[R128] http://en.wikipedia.org/wiki/Trigonometric_functions [R129] http://dlmf.nist.gov/4.14 [R130] http://functions.wolfram.com/ElementaryFunctions/Cot Examples
>>> from sympy import cot, pi >>> from sympy.abc import x >>> cot(x**2).diff(x) 2*x*(-cot(x**2)**2 - 1) >>> cot(1).diff(x) 0 >>> cot(pi/12) sqrt(3) + 2
sec¶
-
class
sympy.functions.elementary.trigonometric.
sec
[source]¶ The secant function.
Returns the secant of x (measured in radians).
See also
sin
,csc
,cos
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
See
sin()
for notes about automatic evaluation.References
[R131] http://en.wikipedia.org/wiki/Trigonometric_functions [R132] http://dlmf.nist.gov/4.14 [R133] http://functions.wolfram.com/ElementaryFunctions/Sec Examples
>>> from sympy import sec >>> from sympy.abc import x >>> sec(x**2).diff(x) 2*x*tan(x**2)*sec(x**2) >>> sec(1).diff(x) 0
csc¶
-
class
sympy.functions.elementary.trigonometric.
csc
[source]¶ The cosecant function.
Returns the cosecant of x (measured in radians).
See also
sin
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
See
sin()
for notes about automatic evaluation.References
[R134] http://en.wikipedia.org/wiki/Trigonometric_functions [R135] http://dlmf.nist.gov/4.14 [R136] http://functions.wolfram.com/ElementaryFunctions/Csc Examples
>>> from sympy import csc >>> from sympy.abc import x >>> csc(x**2).diff(x) -2*x*cot(x**2)*csc(x**2) >>> csc(1).diff(x) 0
sinc¶
-
class
sympy.functions.elementary.trigonometric.
sinc
[source]¶ Represents unnormalized sinc function
References
[R137] http://en.wikipedia.org/wiki/Sinc_function Examples
>>> from sympy import sinc, oo, jn, Product, Symbol >>> from sympy.abc import x >>> sinc(x) sinc(x)
- Automated Evaluation
>>> sinc(0) 1 >>> sinc(oo) 0
- Differentiation
>>> sinc(x).diff() (x*cos(x) - sin(x))/x**2
- Series Expansion
>>> sinc(x).series() 1 - x**2/6 + x**4/120 + O(x**6)
- As zero’th order spherical Bessel Function
>>> sinc(x).rewrite(jn) jn(0, x)
Trigonometric Inverses¶
asin¶
-
class
sympy.functions.elementary.trigonometric.
asin
[source]¶ The inverse sine function.
Returns the arcsine of x in radians.
See also
sin
,csc
,cos
,sec
,tan
,cot
,acsc
,acos
,asec
,atan
,acot
,atan2
Notes
asin(x) will evaluate automatically in the cases oo, -oo, 0, 1, -1 and for some instances when the result is a rational multiple of pi (see the eval class method).
References
[R138] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R139] http://dlmf.nist.gov/4.23 [R140] http://functions.wolfram.com/ElementaryFunctions/ArcSin Examples
>>> from sympy import asin, oo, pi >>> asin(1) pi/2 >>> asin(-1) -pi/2
acos¶
-
class
sympy.functions.elementary.trigonometric.
acos
[source]¶ The inverse cosine function.
Returns the arc cosine of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acsc
,asec
,atan
,acot
,atan2
Notes
acos(x)
will evaluate automatically in the casesoo
,-oo
,0
,1
,-1
.acos(zoo)
evaluates tozoo
(see note in :py:class`sympy.functions.elementary.trigonometric.asec`)References
[R141] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R142] http://dlmf.nist.gov/4.23 [R143] http://functions.wolfram.com/ElementaryFunctions/ArcCos Examples
>>> from sympy import acos, oo, pi >>> acos(1) 0 >>> acos(0) pi/2 >>> acos(oo) oo*I
atan¶
-
class
sympy.functions.elementary.trigonometric.
atan
[source]¶ The inverse tangent function.
Returns the arc tangent of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,acot
,atan2
Notes
atan(x) will evaluate automatically in the cases oo, -oo, 0, 1, -1.
References
[R144] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R145] http://dlmf.nist.gov/4.23 [R146] http://functions.wolfram.com/ElementaryFunctions/ArcTan Examples
>>> from sympy import atan, oo, pi >>> atan(0) 0 >>> atan(1) pi/4 >>> atan(oo) pi/2
acot¶
-
class
sympy.functions.elementary.trigonometric.
acot
[source]¶ The inverse cotangent function.
Returns the arc cotangent of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,atan2
References
[R147] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R148] http://dlmf.nist.gov/4.23 [R149] http://functions.wolfram.com/ElementaryFunctions/ArcCot
asec¶
-
class
sympy.functions.elementary.trigonometric.
asec
[source]¶ The inverse secant function.
Returns the arc secant of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,atan
,acot
,atan2
Notes
asec(x)
will evaluate automatically in the casesoo
,-oo
,0
,1
,-1
.asec(x)
has branch cut in the interval [-1, 1]. For complex arguments, it can be defined [R153] as\[sec^{-1}(z) = -i*(log(\sqrt{1 - z^2} + 1) / z)\]At
x = 0
, for positive branch cut, the limit evaluates tozoo
. For negative branch cut, the limit\[\lim_{z o 0}-i*(log(-\sqrt{1 - z^2} + 1) / z)\]simplifies to \(-i*log(z/2 + O(z^3))\) which ultimately evaluates to
zoo
.As
asex(x)
=asec(1/x)
, a similar argument can be given foracos(x)
.References
[R150] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R151] http://dlmf.nist.gov/4.23 [R152] http://functions.wolfram.com/ElementaryFunctions/ArcSec [R153] (1, 2) http://refrence.wolfram.com/language/ref/ArcSec.html Examples
>>> from sympy import asec, oo, pi >>> asec(1) 0 >>> asec(-1) pi
acsc¶
-
class
sympy.functions.elementary.trigonometric.
acsc
[source]¶ The inverse cosecant function.
Returns the arc cosecant of x (measured in radians).
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acos
,asec
,atan
,acot
,atan2
Notes
acsc(x) will evaluate automatically in the cases oo, -oo, 0, 1, -1.
References
[R154] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R155] http://dlmf.nist.gov/4.23 [R156] http://functions.wolfram.com/ElementaryFunctions/ArcCsc Examples
>>> from sympy import acsc, oo, pi >>> acsc(1) pi/2 >>> acsc(-1) -pi/2
atan2¶
-
class
sympy.functions.elementary.trigonometric.
atan2
[source]¶ The function
atan2(y, x)
computes \(\operatorname{atan}(y/x)\) taking two arguments \(y\) and \(x\). Signs of both \(y\) and \(x\) are considered to determine the appropriate quadrant of \(\operatorname{atan}(y/x)\). The range is \((-\pi, \pi]\). The complete definition reads as follows:\[\begin{split}\operatorname{atan2}(y, x) = \begin{cases} \arctan\left(\frac y x\right) & \qquad x > 0 \\ \arctan\left(\frac y x\right) + \pi& \qquad y \ge 0 , x < 0 \\ \arctan\left(\frac y x\right) - \pi& \qquad y < 0 , x < 0 \\ +\frac{\pi}{2} & \qquad y > 0 , x = 0 \\ -\frac{\pi}{2} & \qquad y < 0 , x = 0 \\ \text{undefined} & \qquad y = 0, x = 0 \end{cases}\end{split}\]Attention: Note the role reversal of both arguments. The \(y\)-coordinate is the first argument and the \(x\)-coordinate the second.
See also
sin
,csc
,cos
,sec
,tan
,cot
,asin
,acsc
,acos
,asec
,atan
,acot
References
[R157] http://en.wikipedia.org/wiki/Inverse_trigonometric_functions [R158] http://en.wikipedia.org/wiki/Atan2 [R159] http://functions.wolfram.com/ElementaryFunctions/ArcTan2 Examples
Going counter-clock wise around the origin we find the following angles:
>>> from sympy import atan2 >>> atan2(0, 1) 0 >>> atan2(1, 1) pi/4 >>> atan2(1, 0) pi/2 >>> atan2(1, -1) 3*pi/4 >>> atan2(0, -1) pi >>> atan2(-1, -1) -3*pi/4 >>> atan2(-1, 0) -pi/2 >>> atan2(-1, 1) -pi/4
which are all correct. Compare this to the results of the ordinary \(\operatorname{atan}\) function for the point \((x, y) = (-1, 1)\)
>>> from sympy import atan, S >>> atan(S(1) / -1) -pi/4 >>> atan2(1, -1) 3*pi/4
where only the \(\operatorname{atan2}\) function reurns what we expect. We can differentiate the function with respect to both arguments:
>>> from sympy import diff >>> from sympy.abc import x, y >>> diff(atan2(y, x), x) -y/(x**2 + y**2)
>>> diff(atan2(y, x), y) x/(x**2 + y**2)
We can express the \(\operatorname{atan2}\) function in terms of complex logarithms:
>>> from sympy import log >>> atan2(y, x).rewrite(log) -I*log((x + I*y)/sqrt(x**2 + y**2))
and in terms of \(\operatorname(atan)\):
>>> from sympy import atan >>> atan2(y, x).rewrite(atan) 2*atan(y/(x + sqrt(x**2 + y**2)))
but note that this form is undefined on the negative real axis.
sympy.functions.elementary.hyperbolic¶
Hyperbolic Functions¶
HyperbolicFunction¶
sinh¶
cosh¶
tanh¶
coth¶
sech¶
Hyperbolic Inverses¶
asinh¶
acosh¶
atanh¶
acoth¶
asech¶
-
class
sympy.functions.elementary.hyperbolic.
asech
[source]¶ The inverse hyperbolic secant function.
- asech(x) -> Returns the inverse hyperbolic secant of x
See also
asinh
,atanh
,cosh
,acoth
References
[R160] http://en.wikipedia.org/wiki/Hyperbolic_function [R161] http://dlmf.nist.gov/4.37 [R162] http://functions.wolfram.com/ElementaryFunctions/ArcSech/ Examples
>>> from sympy import asech, sqrt, S >>> from sympy.abc import x >>> asech(x).diff(x) -1/(x*sqrt(-x**2 + 1)) >>> asech(1).diff(x) 0 >>> asech(1) 0 >>> asech(S(2)) I*pi/3 >>> asech(-sqrt(2)) 3*I*pi/4 >>> asech((sqrt(6) - sqrt(2))) I*pi/12
sympy.functions.elementary.integers¶
ceiling¶
-
class
sympy.functions.elementary.integers.
ceiling
[source]¶ Ceiling is a univariate function which returns the smallest integer value not less than its argument. Ceiling function is generalized in this implementation to complex numbers.
References
[R163] “Concrete mathematics” by Graham, pp. 87 [R164] http://mathworld.wolfram.com/CeilingFunction.html Examples
>>> from sympy import ceiling, E, I, Float, Rational >>> ceiling(17) 17 >>> ceiling(Rational(23, 10)) 3 >>> ceiling(2*E) 6 >>> ceiling(-Float(0.567)) 0 >>> ceiling(I/2) I
floor¶
-
class
sympy.functions.elementary.integers.
floor
[source]¶ Floor is a univariate function which returns the largest integer value not greater than its argument. However this implementation generalizes floor to complex numbers.
References
[R165] “Concrete mathematics” by Graham, pp. 87 [R166] http://mathworld.wolfram.com/FloorFunction.html Examples
>>> from sympy import floor, E, I, Float, Rational >>> floor(17) 17 >>> floor(Rational(23, 10)) 2 >>> floor(2*E) 5 >>> floor(-Float(0.567)) -1 >>> floor(-I/2) -I
RoundFunction¶
frac¶
-
class
sympy.functions.elementary.integers.
frac
[source]¶ Represents the fractional part of x
For real numbers it is defined [R167] as
\[x - \lfloor{x}\rfloor\]References
[R167] (1, 2) http://en.wikipedia.org/wiki/Fractional_part [R168] http://mathworld.wolfram.com/FractionalPart.html Examples
>>> from sympy import Symbol, frac, Rational, floor, ceiling, I >>> frac(Rational(4, 3)) 1/3 >>> frac(-Rational(4, 3)) 2/3
returns zero for integer arguments
>>> n = Symbol('n', integer=True) >>> frac(n) 0
rewrite as floor
>>> x = Symbol('x') >>> frac(x).rewrite(floor) x - floor(x)
for complex arguments
>>> r = Symbol('r', real=True) >>> t = Symbol('t', real=True) >>> frac(t + I*r) I*frac(r) + frac(t)
sympy.functions.elementary.exponential¶
exp¶
-
class
sympy.functions.elementary.exponential.
exp
[source]¶ The exponential function, \(e^x\).
See also
log
-
as_real_imag
(deep=True, **hints)[source]¶ Returns this function as a 2-tuple representing a complex number.
Examples
>>> from sympy import I >>> from sympy.abc import x >>> from sympy.functions import exp >>> exp(x).as_real_imag() (exp(re(x))*cos(im(x)), exp(re(x))*sin(im(x))) >>> exp(1).as_real_imag() (E, 0) >>> exp(I).as_real_imag() (cos(1), sin(1)) >>> exp(1+I).as_real_imag() (E*cos(1), E*sin(1))
-
base
¶ Returns the base of the exponential function.
-
LambertW¶
-
class
sympy.functions.elementary.exponential.
LambertW
[source]¶ The Lambert W function \(W(z)\) is defined as the inverse function of \(w \exp(w)\) [R169].
In other words, the value of \(W(z)\) is such that \(z = W(z) \exp(W(z))\) for any complex number \(z\). The Lambert W function is a multivalued function with infinitely many branches \(W_k(z)\), indexed by \(k \in \mathbb{Z}\). Each branch gives a different solution \(w\) of the equation \(z = w \exp(w)\).
The Lambert W function has two partially real branches: the principal branch (\(k = 0\)) is real for real \(z > -1/e\), and the \(k = -1\) branch is real for \(-1/e < z < 0\). All branches except \(k = 0\) have a logarithmic singularity at \(z = 0\).
References
[R169] (1, 2) http://en.wikipedia.org/wiki/Lambert_W_function Examples
>>> from sympy import LambertW >>> LambertW(1.2) 0.635564016364870 >>> LambertW(1.2, -1).n() -1.34747534407696 - 4.41624341514535*I >>> LambertW(-1).is_real False
log¶
-
class
sympy.functions.elementary.exponential.
log
[source]¶ The natural logarithm function \(\ln(x)\) or \(\log(x)\). Logarithms are taken with the natural base, \(e\). To get a logarithm of a different base
b
, uselog(x, b)
, which is essentially short-hand forlog(x)/log(b)
.See also
exp
-
as_real_imag
(deep=True, **hints)[source]¶ Returns this function as a complex coordinate.
Examples
>>> from sympy import I >>> from sympy.abc import x >>> from sympy.functions import log >>> log(x).as_real_imag() (log(Abs(x)), arg(x)) >>> log(I).as_real_imag() (0, pi/2) >>> log(1 + I).as_real_imag() (log(sqrt(2)), pi/4) >>> log(I*x).as_real_imag() (log(Abs(x)), arg(I*x))
-
sympy.functions.elementary.piecewise¶
ExprCondPair¶
Piecewise¶
-
class
sympy.functions.elementary.piecewise.
Piecewise
[source]¶ Represents a piecewise function.
Usage:
- Piecewise( (expr,cond), (expr,cond), ... )
- Each argument is a 2-tuple defining an expression and condition
- The conds are evaluated in turn returning the first that is True. If any of the evaluated conds are not determined explicitly False, e.g. x < 1, the function is returned in symbolic form.
- If the function is evaluated at a place where all conditions are False, a ValueError exception will be raised.
- Pairs where the cond is explicitly False, will be removed.
See also
piecewise_fold
Examples
>>> from sympy import Piecewise, log >>> from sympy.abc import x >>> f = x**2 >>> g = log(x) >>> p = Piecewise( (0, x<-1), (f, x<=1), (g, True)) >>> p.subs(x,1) 1 >>> p.subs(x,5) log(5)
-
sympy.functions.elementary.piecewise.
piecewise_fold
(expr)[source]¶ Takes an expression containing a piecewise function and returns the expression in piecewise form.
See also
Piecewise
Examples
>>> from sympy import Piecewise, piecewise_fold, sympify as S >>> from sympy.abc import x >>> p = Piecewise((x, x < 1), (1, S(1) <= x)) >>> piecewise_fold(x*p) Piecewise((x**2, x < 1), (x, 1 <= x))
sympy.functions.elementary.miscellaneous¶
IdentityFunction¶
Min¶
-
class
sympy.functions.elementary.miscellaneous.
Min
[source]¶ Return, if possible, the minimum value of the list. It is named
Min
and notmin
to avoid conflicts with the built-in functionmin
.See also
Max
- find maximum values
Examples
>>> from sympy import Min, Symbol, oo >>> from sympy.abc import x, y >>> p = Symbol('p', positive=True) >>> n = Symbol('n', negative=True)
>>> Min(x, -2) Min(x, -2) >>> Min(x, -2).subs(x, 3) -2 >>> Min(p, -3) -3 >>> Min(x, y) Min(x, y) >>> Min(n, 8, p, -7, p, oo) Min(n, -7)
Max¶
-
class
sympy.functions.elementary.miscellaneous.
Max
[source]¶ Return, if possible, the maximum value of the list.
When number of arguments is equal one, then return this argument.
When number of arguments is equal two, then return, if possible, the value from (a, b) that is >= the other.
In common case, when the length of list greater than 2, the task is more complicated. Return only the arguments, which are greater than others, if it is possible to determine directional relation.
If is not possible to determine such a relation, return a partially evaluated result.
Assumptions are used to make the decision too.
Also, only comparable arguments are permitted.
It is named
Max
and notmax
to avoid conflicts with the built-in functionmax
.See also
Min
- find minimum values
References
[R170] (1, 2) http://en.wikipedia.org/wiki/Directed_complete_partial_order [R171] http://en.wikipedia.org/wiki/Lattice_%28order%29 Examples
>>> from sympy import Max, Symbol, oo >>> from sympy.abc import x, y >>> p = Symbol('p', positive=True) >>> n = Symbol('n', negative=True)
>>> Max(x, -2) Max(x, -2) >>> Max(x, -2).subs(x, 3) 3 >>> Max(p, -2) p >>> Max(x, y) Max(x, y) >>> Max(x, y) == Max(y, x) True >>> Max(x, Max(y, z)) Max(x, y, z) >>> Max(n, 8, p, 7, -oo) Max(8, p) >>> Max (1, x, oo) oo
- Algorithm
The task can be considered as searching of supremums in the directed complete partial orders [R170].
The source values are sequentially allocated by the isolated subsets in which supremums are searched and result as Max arguments.
If the resulted supremum is single, then it is returned.
The isolated subsets are the sets of values which are only the comparable with each other in the current set. E.g. natural numbers are comparable with each other, but not comparable with the \(x\) symbol. Another example: the symbol \(x\) with negative assumption is comparable with a natural number.
Also there are “least” elements, which are comparable with all others, and have a zero property (maximum or minimum for all elements). E.g. \(oo\). In case of it the allocation operation is terminated and only this value is returned.
- Assumption:
- if A > B > C then A > C
- if A == B then B can be removed
root¶
-
sympy.functions.elementary.miscellaneous.
root
(x, n, k) → Returns the k-th n-th root of x, defaulting to the[source]¶ principle root (k=0).
See also
sympy.polys.rootoftools.rootof
,sympy.core.power.integer_nthroot
,sqrt
,real_root
References
- http://en.wikipedia.org/wiki/Square_root
- http://en.wikipedia.org/wiki/Real_root
- http://en.wikipedia.org/wiki/Root_of_unity
- http://en.wikipedia.org/wiki/Principal_value
- http://mathworld.wolfram.com/CubeRoot.html
Examples
>>> from sympy import root, Rational >>> from sympy.abc import x, n
>>> root(x, 2) sqrt(x)
>>> root(x, 3) x**(1/3)
>>> root(x, n) x**(1/n)
>>> root(x, -Rational(2, 3)) x**(-3/2)
To get the k-th n-th root, specify k:
>>> root(-2, 3, 2) -(-1)**(2/3)*2**(1/3)
To get all n n-th roots you can use the rootof function. The following examples show the roots of unity for n equal 2, 3 and 4:
>>> from sympy import rootof, I
>>> [rootof(x**2 - 1, i) for i in range(2)] [-1, 1]
>>> [rootof(x**3 - 1,i) for i in range(3)] [1, -1/2 - sqrt(3)*I/2, -1/2 + sqrt(3)*I/2]
>>> [rootof(x**4 - 1,i) for i in range(4)] [-1, 1, -I, I]
SymPy, like other symbolic algebra systems, returns the complex root of negative numbers. This is the principal root and differs from the text-book result that one might be expecting. For example, the cube root of -8 does not come back as -2:
>>> root(-8, 3) 2*(-1)**(1/3)
The real_root function can be used to either make the principle result real (or simply to return the real root directly):
>>> from sympy import real_root >>> real_root(_) -2 >>> real_root(-32, 5) -2
Alternatively, the n//2-th n-th root of a negative number can be computed with root:
>>> root(-32, 5, 5//2) -2
sqrt¶
-
sympy.functions.elementary.miscellaneous.
sqrt
(arg)[source]¶ The square root function
sqrt(x) -> Returns the principal square root of x.
See also
sympy.polys.rootoftools.rootof
,root
,real_root
References
[R172] http://en.wikipedia.org/wiki/Square_root [R173] http://en.wikipedia.org/wiki/Principal_value Examples
>>> from sympy import sqrt, Symbol >>> x = Symbol('x')
>>> sqrt(x) sqrt(x)
>>> sqrt(x)**2 x
Note that sqrt(x**2) does not simplify to x.
>>> sqrt(x**2) sqrt(x**2)
This is because the two are not equal to each other in general. For example, consider x == -1:
>>> from sympy import Eq >>> Eq(sqrt(x**2), x).subs(x, -1) False
This is because sqrt computes the principal square root, so the square may put the argument in a different branch. This identity does hold if x is positive:
>>> y = Symbol('y', positive=True) >>> sqrt(y**2) y
You can force this simplification by using the powdenest() function with the force option set to True:
>>> from sympy import powdenest >>> sqrt(x**2) sqrt(x**2) >>> powdenest(sqrt(x**2), force=True) x
To get both branches of the square root you can use the rootof function:
>>> from sympy import rootof
>>> [rootof(x**2-3,i) for i in (0,1)] [-sqrt(3), sqrt(3)]