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>
|
||||
|
||||
Reference in New Issue
Block a user