add transformation function
This commit is contained in:
46
docs/build/html/_modules/function.html
vendored
46
docs/build/html/_modules/function.html
vendored
@@ -37,7 +37,7 @@
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Mathematical equations.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-11-02</span>
|
||||
<span class="sd">:Date: 2019-11-04</span>
|
||||
|
||||
<span class="sd">.. module:: function</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
@@ -48,6 +48,50 @@
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="k">import</span> <span class="n">lcm</span>
|
||||
|
||||
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../function.html#function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Transform functions.</span>
|
||||
|
||||
<span class="sd"> :param f: function or list of functions</span>
|
||||
<span class="sd"> :type f: function or list</span>
|
||||
<span class="sd"> :param scale_vertical: "a" scale factor in vertical direction (default</span>
|
||||
<span class="sd"> = 1)</span>
|
||||
<span class="sd"> :type height: float</span>
|
||||
<span class="sd"> :param scale_horizontal: "b" scale factor in horizontal direction</span>
|
||||
<span class="sd"> (default = 1)</span>
|
||||
<span class="sd"> :type height: float</span>
|
||||
<span class="sd"> :param shift_horizontal: "c" shift factor in horizontal direction</span>
|
||||
<span class="sd"> (default = 0)</span>
|
||||
<span class="sd"> :type height: float</span>
|
||||
<span class="sd"> :param shift_vertical: "d" shift factor in vertical direction (default</span>
|
||||
<span class="sd"> = 0)</span>
|
||||
<span class="sd"> :type height: float</span>
|
||||
|
||||
<span class="sd"> :returns: transformed function or list of transformed functions</span>
|
||||
<span class="sd"> :rtype: function or list</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> y = a \, f(b\,(x-c)) + d</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># shorter variables</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">scale_vertical</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">scale_horizontal</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="n">shift_horizontal</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="n">shift_vertical</span>
|
||||
|
||||
<span class="c1"># check if f is a function than put it in a list and return only</span>
|
||||
<span class="c1"># the function, not the one element list</span>
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">f</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">function_transformation</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="n">f</span><span class="p">],</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="n">a</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="n">b</span><span class="p">,</span> <span class="n">shift_horizontal</span><span class="o">=</span><span class="n">c</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="n">d</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># otherwise assume list of functions</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">f</span><span class="p">:</span> <span class="c1"># if f is empty. End of the recursive fucntion</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="n">a</span><span class="o">*</span><span class="n">f</span><span class="p">[</span><span class="mi">0</span><span class="p">](</span><span class="n">b</span><span class="o">*</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="n">c</span><span class="p">),</span> <span class="n">t</span><span class="p">)</span><span class="o">+</span><span class="n">d</span><span class="p">]</span> <span class="o">+</span>\
|
||||
<span class="n">function_transformation</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="n">a</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="n">b</span><span class="p">,</span> <span class="n">shift_horizontal</span><span class="o">=</span><span class="n">c</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="n">d</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="sine_wave"><a class="viewcode-back" href="../function.html#function.sine_wave">[docs]</a><span class="k">def</span> <span class="nf">sine_wave</span><span class="p">(</span><span class="n">A</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">f</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">D</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""A sine wave or sinusoid is a mathematical curve that describes a</span>
|
||||
<span class="sd"> smooth periodic oscillation.</span>
|
||||
|
||||
31
docs/build/html/function.html
vendored
31
docs/build/html/function.html
vendored
@@ -37,7 +37,7 @@
|
||||
<p>Mathematical equations.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2019-11-02</p>
|
||||
<dd class="field-odd"><p>2019-11-04</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-function"></span><dl class="function">
|
||||
@@ -232,6 +232,35 @@ linear speed.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="function.transformation">
|
||||
<code class="sig-name descname">transformation</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">scale_vertical=1</em>, <em class="sig-param">scale_horizontal=1</em>, <em class="sig-param">shift_horizontal=0</em>, <em class="sig-param">shift_vertical=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#transformation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.transformation" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Transform functions.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>f</strong> (<em>function</em><em> or </em><em>list</em>) – function or list of functions</p></li>
|
||||
<li><p><strong>scale_vertical</strong> – “a” scale factor in vertical direction (default
|
||||
= 1)</p></li>
|
||||
<li><p><strong>scale_horizontal</strong> – “b” scale factor in horizontal direction
|
||||
(default = 1)</p></li>
|
||||
<li><p><strong>shift_horizontal</strong> – “c” shift factor in horizontal direction
|
||||
(default = 0)</p></li>
|
||||
<li><p><strong>shift_vertical</strong> – “d” shift factor in vertical direction (default
|
||||
= 0)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>transformed function or list of transformed functions</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>function or list</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[y = a \, f(b\,(x-c)) + d\]</div>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
2
docs/build/html/genindex.html
vendored
2
docs/build/html/genindex.html
vendored
@@ -319,6 +319,8 @@
|
||||
<li><a href="time_of_day.html#module-time_of_day">time_of_day (module)</a>, <a href="time_of_day.html#module-time_of_day">[1]</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.transform">transform() (in module time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="function.html#function.transformation">transformation() (in module function)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
|
||||
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
2
docs/build/html/searchindex.js
vendored
2
docs/build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Mathematical equations.
|
||||
|
||||
:Date: 2019-11-02
|
||||
:Date: 2019-11-04
|
||||
|
||||
.. module:: function
|
||||
:platform: *nix, Windows
|
||||
@@ -13,6 +13,50 @@
|
||||
import math
|
||||
from pylib.mathematics import lcm
|
||||
|
||||
def transformation(f, scale_vertical=1, scale_horizontal=1,
|
||||
shift_horizontal=0, shift_vertical=0):
|
||||
r"""Transform functions.
|
||||
|
||||
:param f: function or list of functions
|
||||
:type f: function or list
|
||||
:param scale_vertical: "a" scale factor in vertical direction (default
|
||||
= 1)
|
||||
:type height: float
|
||||
:param scale_horizontal: "b" scale factor in horizontal direction
|
||||
(default = 1)
|
||||
:type height: float
|
||||
:param shift_horizontal: "c" shift factor in horizontal direction
|
||||
(default = 0)
|
||||
:type height: float
|
||||
:param shift_vertical: "d" shift factor in vertical direction (default
|
||||
= 0)
|
||||
:type height: float
|
||||
|
||||
:returns: transformed function or list of transformed functions
|
||||
:rtype: function or list
|
||||
|
||||
.. math::
|
||||
y = a \, f(b\,(x-c)) + d
|
||||
"""
|
||||
# shorter variables
|
||||
a = scale_vertical
|
||||
b = scale_horizontal
|
||||
c = shift_horizontal
|
||||
d = shift_vertical
|
||||
|
||||
# check if f is a function than put it in a list and return only
|
||||
# the function, not the one element list
|
||||
if callable(f):
|
||||
return function_transformation(
|
||||
[f], scale_vertical=a, scale_horizontal=b, shift_horizontal=c, shift_vertical=d)[0]
|
||||
|
||||
# otherwise assume list of functions
|
||||
if not f: # if f is empty. End of the recursive fucntion
|
||||
return []
|
||||
return [lambda x, t: a*f[0](b*(x-c), t)+d] +\
|
||||
function_transformation(
|
||||
f[1:], scale_vertical=a, scale_horizontal=b, shift_horizontal=c, shift_vertical=d)
|
||||
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user