3.10. Periodic Functions¶
A function  is periodic with period 
:
Then you can shift the integration limits by the period :
If you integrate  from 
 to 
, you can shift 
 in 
 by any
constant 
:
3.11. Polar Coordinates¶
Polar coordinates (radial, azimuth)  are defined by
3.11.1. Example¶
When evaluating integrals of the type:
we write  and 
 using polar coordinates:
and then use the  periodicity of 
:
comparing to:
we can see that because the integral is symmetric, we can just set  and
then replace 
. The above method does everything algebraically, but
you can use this symmetry argument to remember what to do, or even skip the
calculation if you are sure that you didn’t make a mistake in the “symmetry
argument”.
3.12. Spherical Coordinates¶
Spherical coordinates radial (), zenith (
), azimuth (
):
(3.12.1)¶
Note: this meaning of  is mostly used in the USA and in many
books. In Europe people usually use different symbols, like 
,
 and others.
The motivation is to first write  and 
 using polar coordinates:
and then write  and the projection 
 of 
 onto the plane
 using polar coordinates:
so by combining these two we get:
3.12.1. Example I¶
To transform differential operators such as 
into spherical coordinates, we make use of the chain rule:
where , 
 and 
 are functions of 
, 
, 
 to be expressed
by inverting (3.12.1):
At the end, the derivatives are expressed using , 
,
 again. For example
Finally we obtain
(3.12.1.1)¶
These expressions can be combined to obtain more complicated objects such as Laplacian (in spherical coordinates). However straightforward this approach is, it is also rather cumbersome; an alternative is discussed in the Spherical Coordinates section of differential geometry (where it is shown, that the coefficients in (3.12.1.1) are simply the matrix elements of the inverse Jacobian).
3.12.2. Example II¶
When evaluating integrals of the type:
we write  and 
 using polar coordinates:
and simplify:
comparing to:
we can see that because the integral is symmetric, we can just set ,
 and then replace 
.
3.13. Argument function, atan2¶
Argument function  is any 
 such that
Obviously  is unique up to any integer multiple of 
. By taking
the principal value of the 
 function, e.g. fixing 
 to the
interval 
 (so that the branch cut is on the negative 
-axis, as
usual), we get the 
 function:
then , where 
. We can then
use the following formula to easily calculate 
 for any 
 (except
, i.e. 
, where it is not defined):
Finally we define  as:
The angle  is the angle of the point 
 on the unit
circle (assuming the usual conventions), and it works for all quadrants
(
 only works for the first and fourth quadrant, where
, but in the second and third qudrant,
 gives the wrong angles, while 
 gives the
correct angles). So in particular:
This convention () is used for example in Python, C or Fortran.
Some people might interchange 
 with 
 in the definition (i.e. 
), but it is not very common.
The following useful relations hold:
We now prove them. The following works for all  except for 
:
Tangent is infinite for , which corresponds to 
, so the
following works for all 
:
Finally:
In the above, we used the following double angle formulas:
to simplify the following expressions:
Finally, for all  we get:
The symmetry property can be proven by:
To prove the derivatives, we do:
Code:
>>> from sympy import atan, sqrt, var
>>> var("x y")
(x, y)
>>> (2*atan(y/(sqrt(x**2+y**2)+x)).diff(y)).simplify()
x/(x**2 + y**2)
>>> (2*atan(y/(sqrt(x**2+y**2)+x)).diff(x)).simplify()
-y/(x**2 + y**2)
An example of an application:
where
Another application
3.14. Multiple Argument Formulas¶
3.14.1. sin(a x)¶
Systematic way to derive all multiple argument formulas is to use the following relation:
where  are the Chebyshev polynomials of the second kind, first few are:
Code:
>>> from sympy import chebyshevu, var
>>> var("x")
>>> for i in range(7): print "U_%d(x) = %s" % (i, chebyshevu(i, x))
U_0(x) = 1
U_1(x) = 2*x
U_2(x) = -1 + 4*x**2
U_3(x) = -4*x + 8*x**3
U_4(x) = 1 - 12*x**2 + 16*x**4
U_5(x) = 6*x - 32*x**3 + 32*x**5
U_6(x) = -1 + 24*x**2 - 80*x**4 + 64*x**6
One can then use this to calculate:
Code:
>>> from sympy import chebyshevu, var, sin, cos
>>> var("x")
>>> for n in range(1, 7): print "sin(%d*x) = %s" % (n, chebyshevu(n-1, cos(x))*sin(x))
sin(1*x) = sin(x)
sin(2*x) = 2*cos(x)*sin(x)
sin(3*x) = -(1 - 4*cos(x)**2)*sin(x)
sin(4*x) = (-4*cos(x) + 8*cos(x)**3)*sin(x)
sin(5*x) = (1 - 12*cos(x)**2 + 16*cos(x)**4)*sin(x)
sin(6*x) = (6*cos(x) - 32*cos(x)**3 + 32*cos(x)**5)*sin(x)
3.14.2. cos(a x)¶
Similarly as above, we use:
where  are the Chebyshev polynomials of the first kind, first few are:
Code:
>>> from sympy import chebyshevt, var
>>> var("x")
>>> for i in range(7): print "T_%d(x) = %s" % (i, chebyshevt(i, x))
T_0(x) = 1
T_1(x) = x
T_2(x) = -1 + 2*x**2
T_3(x) = -3*x + 4*x**3
T_4(x) = 1 - 8*x**2 + 8*x**4
T_5(x) = 5*x - 20*x**3 + 16*x**5
T_6(x) = -1 + 18*x**2 - 48*x**4 + 32*x**6
One can then use this to calculate:
Code:
>>> from sympy import chebyshevt, var, cos
>>> var("x")
>>> for n in range(7): print "cos(%d*x) = %s" % (n, chebyshevt(n, cos(x)))
cos(0*x) = 1
cos(1*x) = cos(x)
cos(2*x) = -1 + 2*cos(x)**2
cos(3*x) = -3*cos(x) + 4*cos(x)**3
cos(4*x) = 1 - 8*cos(x)**2 + 8*cos(x)**4
cos(5*x) = 5*cos(x) - 20*cos(x)**3 + 16*cos(x)**5
cos(6*x) = -1 + 18*cos(x)**2 - 48*cos(x)**4 + 32*cos(x)**6