Source code for function

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Mathematical functions.

:Date: 2019-10-27

.. module:: function
  :platform: *nix, Windows
  :synopsis: Mathematical functions.

.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
"""
import math

[docs]def sine_wave(A=1, k=1, f=1, phi=0, D=0, degree=False): r"""A sine wave or sinusoid is a mathematical curve that describes a smooth periodic oscillation. :param A: amplitude :type A: float or int :param k: (angular) wave number :type k: float or int :param f: ordinary frequency :type f: float or int :param phi: phase :type phi: float or int :param D: non-zero center amplitude :type D: float or int :param degree: boolean to switch between radians and degree. If False phi is interpreted in radians and if True then phi is interpreted in degrees. In general, the function is: .. math:: y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D \\ y(x,t) = A\sin(kx + \omega t + \varphi) + D where: * A, amplitude, the peak deviation of the function from zero. * f, ordinary frequency, the number of oscillations (cycles) that occur each second of time. * ω = 2πf, angular frequency, the rate of change of the function argument in units of radians per second. If ω < 0 the wave is moving to the right, if ω > 0 the wave is moving to the left. * φ, phase, specifies (in radians) where in its cycle the oscillation is at t = 0. * x, spatial variable that represents the position on the dimension on which the wave propagates. * k, characteristic parameter called wave number (or angular wave number), which represents the proportionality between the angular frequency ω and the linear speed (speed of propagation) ν. * D, non-zero center amplitude. The wavenumber is related to the angular frequency by: .. math:: k={\omega \over v}={2\pi f \over v}={2\pi \over \lambda } where λ (lambda) is the wavelength, f is the frequency, and v is the linear speed. .. seealso:: :meth:`function_cosine_wave_degree` """ if degree: phi = math.radians(phi) return lambda x, t=0: A*math.sin(k*x + 2*math.pi*f*t + phi) + D
[docs]def cosine_wave(A=1, k=1, f=1, phi=0, D=0, degree=False): r"""A cosine wave is said to be sinusoidal, because, :math:`\cos(x) = \sin(x + \pi/2)`, which is also a sine wave with a phase-shift of π/2 radians. Because of this head start, it is often said that the cosine function leads the sine function or the sine lags the cosine. :param A: amplitude :type A: float or int :param k: (angular) wave number :type k: float or int :param f: ordinary frequency :type f: float or int :param phi: phase :type phi: float or int :param D: non-zero center amplitude :type D: float or int :param degree: boolean to switch between radians and degree. If False phi is interpreted in radians and if True then phi is interpreted in degrees. .. seealso:: :meth:`function_sine_wave_degree` """ if degree: phi = phi + 90 else: phi = phi + math.pi/2 return sine_wave(A=A, k=k, f=f, phi=phi, D=D, degree=degree)