add mathematical function to string function for braille and block characters
This commit is contained in:
15
docs/build/html/_modules/data.html
vendored
15
docs/build/html/_modules/data.html
vendored
@@ -174,6 +174,19 @@
|
||||
<span class="sd"> :returns: arithmetic bounded sequence</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># example of seq(4, 0, -0.4)</span>
|
||||
<span class="c1"># without round:</span>
|
||||
<span class="c1"># [4.0, 3.6, 3.2, 2.8, 2.4, 2.0, 1.5999999999999996,</span>
|
||||
<span class="c1"># 1.1999999999999997, 0.7999999999999998, 0.3999999999999999]</span>
|
||||
<span class="c1"># with round:</span>
|
||||
<span class="c1"># [4.0, 3.6, 3.2, 2.8, 2.4, 2.0, 1.6, 1.2, 0.8, 0.4]</span>
|
||||
<span class="c1"># example of seq(4, 0, -0.41)</span>
|
||||
<span class="c1"># without round:</span>
|
||||
<span class="c1"># [4.0, 3.59, 3.18, 2.77, 2.3600000000000003,</span>
|
||||
<span class="c1"># 1.9500000000000002, 1.54, 1.1300000000000003,</span>
|
||||
<span class="c1"># 0.7200000000000002, 0.31000000000000005]</span>
|
||||
<span class="c1"># with round:</span>
|
||||
<span class="c1"># [4.0, 3.59, 3.18, 2.77, 2.36, 1.95, 1.54, 1.13, 0.72, 0.31]</span>
|
||||
<span class="k">if</span> <span class="n">stop</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">seq</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
|
||||
|
||||
@@ -280,7 +293,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/date.html
vendored
2
docs/build/html/_modules/date.html
vendored
@@ -209,7 +209,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
166
docs/build/html/_modules/function.html
vendored
166
docs/build/html/_modules/function.html
vendored
@@ -147,7 +147,7 @@
|
||||
<span class="sd"> linear speed.</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`function_cosine_wave_degree`</span>
|
||||
<span class="sd"> :meth:`cosine_wave`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">degree</span><span class="p">:</span>
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">radians</span><span class="p">(</span><span class="n">phi</span><span class="p">)</span>
|
||||
@@ -179,7 +179,7 @@
|
||||
<span class="sd"> time t</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`function_sine_wave_degree`</span>
|
||||
<span class="sd"> :meth:`sine_wave`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">degree</span><span class="p">:</span>
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">phi</span> <span class="o">+</span> <span class="mi">90</span>
|
||||
@@ -285,6 +285,166 @@
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
|
||||
|
||||
<div class="viewcode-block" id="to_str"><a class="viewcode-back" href="../function.html#function.to_str">[docs]</a><span class="k">def</span> <span class="nf">to_str</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">x_0</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">x_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">w</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">density</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">char_set</span><span class="o">=</span><span class="s2">"line"</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent functions as string frame with a specific character set.</span>
|
||||
<span class="sd"> which are normed to the range of [0, 1] to</span>
|
||||
|
||||
<span class="sd"> :param f: function or list of functions normed to the range of [0, 1]</span>
|
||||
<span class="sd"> :type f: function or list</span>
|
||||
<span class="sd"> :param h: number of chars in vertical direction</span>
|
||||
<span class="sd"> :type h: int</span>
|
||||
<span class="sd"> :param w: number of chars in horizontal direction</span>
|
||||
<span class="sd"> :type w: int</span>
|
||||
|
||||
<span class="sd"> :param char_set: either "braille" or "block". "braille" uses Unicode</span>
|
||||
<span class="sd"> Characters in the Braille Patterns Block (fisrt index U+2800, last</span>
|
||||
<span class="sd"> index U+28FF [CUDB]_) and the "block" uses part of the Unicode</span>
|
||||
<span class="sd"> Characters in the Block Elements Block (fisrt index U+2580, last</span>
|
||||
<span class="sd"> index U+259F [CUDB]_). Alias for braille is line and alias for</span>
|
||||
<span class="sd"> block is histogram</span>
|
||||
<span class="sd"> :type char_set: str</span>
|
||||
|
||||
<span class="sd"> Usage:</span>
|
||||
<span class="sd"> * case dependent arguments</span>
|
||||
|
||||
<span class="sd"> * 1 quasi line plot (braille characters)</span>
|
||||
<span class="sd"> f = lambda function (lambda x, t=0: ...)</span>
|
||||
<span class="sd"> x_1 = max x value</span>
|
||||
<span class="sd"> x_0 = min x value</span>
|
||||
<span class="sd"> t = time (animation)</span>
|
||||
<span class="sd"> * 2 histogram (block characters)</span>
|
||||
<span class="sd"> f = lambda function (lambda x, t=0: ...)</span>
|
||||
<span class="sd"> x_1 = max x value</span>
|
||||
<span class="sd"> x_0 = min x value</span>
|
||||
<span class="sd"> t = time (animation)</span>
|
||||
<span class="sd"> chart="histogram"</span>
|
||||
|
||||
<span class="sd"> * general arguments</span>
|
||||
<span class="sd"> w = window width in number of chars</span>
|
||||
<span class="sd"> density = number of data point per pixel (for line chart higher density makes thicker lines)</span>
|
||||
<span class="sd"> chart = either "line" or "histogram"</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: Braille Patterns Block</span>
|
||||
|
||||
<span class="sd"> * Dots or pixels per character in vertical direction: 6</span>
|
||||
<span class="sd"> * Dots or pixels per character in horizontal direction: 2</span>
|
||||
|
||||
<span class="sd"> First dot (bottom left) is the zero (0) position of the</span>
|
||||
<span class="sd"> function. So, a function value of zero does not mean to have zero</span>
|
||||
<span class="sd"> dots but one.</span>
|
||||
<span class="sd"> Example of 3 columns and 3 rows (upside down view of 'normal' braille/drawille position)</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> | ^ y axis</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> | ,_____,,_____,,_____,</span>
|
||||
<span class="sd"> 7 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 6 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 5 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 4 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> 3 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 2 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 1 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 0 + - | * *|| * *|| * *| ---> x axis</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> -1 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -2 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -3 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -4 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> | `````````````````````</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> `-----+--+---+--+---+--+-------------</span>
|
||||
<span class="sd"> -2 -1 0 1 2 3</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: Block Elements Block</span>
|
||||
|
||||
<span class="sd"> * Dots or pixels per character in vertical direction: 8</span>
|
||||
<span class="sd"> * Dots or pixels per character in horizontal direction: 1</span>
|
||||
|
||||
<span class="sd"> Example of 3 columns and 3 rows</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> | ^ y axis</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> | ,_____,,_____,,_____,</span>
|
||||
<span class="sd"> 15 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 14 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 13 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 12 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 11 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 10 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 9 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 8 + | --- || --- || --- |</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> 7 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 6 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 5 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 4 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 3 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 2 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 1 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 0 + - | --- || --- || --- | ---> x axis</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> -1 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -2 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -3 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -4 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -5 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -6 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -7 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -8 + | --- || --- || --- |</span>
|
||||
<span class="sd"> | `````````````````````</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> `------+------+------+---------------</span>
|
||||
<span class="sd"> -1 0 1</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: References</span>
|
||||
|
||||
<span class="sd"> .. [CUDB] `Unicode Database - Blocks <ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt>`_</span>
|
||||
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`pylib.function.transformation`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># scale function to used chars and dots/pixel in y direction (4 for braille characters): from [0, 1] to [0, chars*4-1]</span>
|
||||
<span class="c1"># negate the function because the y axis is pointing downwards: from [0, 1] to [-1, 0] or from [0, chars*4-1] to [-(chars*4-1), 0]</span>
|
||||
<span class="c1"># and becasue of the negation shift the function by one dot/pixel, otherwise the function would need another char, because the 0 is on an another char on the "positive side".</span>
|
||||
<span class="c1"># devide the time by the number of dots/pixel in x direction (2 for braille characters)</span>
|
||||
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">pixels_horizontal</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">canvas</span> <span class="o">=</span> <span class="n">drawille</span><span class="o">.</span><span class="n">Canvas</span><span class="p">()</span>
|
||||
<span class="c1"># divide step width of the sequence by 2 (double density, 2 dots/pixel per char)</span>
|
||||
<span class="c1"># multiplicate x by 2 (2 dots/pixel per char)</span>
|
||||
<span class="k">for</span> <span class="n">x_i</span> <span class="ow">in</span> <span class="n">seq</span><span class="p">(</span><span class="n">x_0</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="n">x_1</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="n">density</span><span class="p">):</span>
|
||||
<span class="n">canvas</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">f</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">t</span><span class="p">))</span>
|
||||
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="n">density</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">density</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1"># density max 1!</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">seq</span><span class="p">(</span><span class="n">x_0</span><span class="o">*</span><span class="n">window_factor</span><span class="p">,</span> <span class="n">x_1</span><span class="o">*</span><span class="n">window_factor</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="n">pixels_horizontal</span><span class="o">/</span><span class="n">density</span><span class="p">)</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span><span class="p">(</span><span class="n">xi</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">drawblock</span><span class="o">.</span><span class="n">histogram</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">frame</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
@@ -339,7 +499,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/geometry.html
vendored
2
docs/build/html/_modules/geometry.html
vendored
@@ -598,7 +598,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/geometry_plot.html
vendored
2
docs/build/html/_modules/geometry_plot.html
vendored
@@ -173,7 +173,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
13
docs/build/html/_modules/index.html
vendored
13
docs/build/html/_modules/index.html
vendored
@@ -43,6 +43,17 @@
|
||||
<li><a href="numerical/integration.html">numerical.integration</a></li>
|
||||
<li><a href="numerical/ode.html">numerical.ode</a></li>
|
||||
<li><a href="numerical/ode_model.html">numerical.ode_model</a></li>
|
||||
<li><a href="pylib/data.html">pylib.data</a></li>
|
||||
<li><a href="pylib/date.html">pylib.date</a></li>
|
||||
<li><a href="pylib/function.html">pylib.function</a></li>
|
||||
<li><a href="pylib/geometry.html">pylib.geometry</a></li>
|
||||
<li><a href="pylib/geometry_plot.html">pylib.geometry_plot</a></li>
|
||||
<li><a href="pylib/mathematics.html">pylib.mathematics</a></li>
|
||||
<li><a href="pylib/numerical/fit.html">pylib.numerical.fit</a></li>
|
||||
<li><a href="pylib/numerical/integration.html">pylib.numerical.integration</a></li>
|
||||
<li><a href="pylib/numerical/ode.html">pylib.numerical.ode</a></li>
|
||||
<li><a href="pylib/numerical/ode_model.html">pylib.numerical.ode_model</a></li>
|
||||
<li><a href="pylib/time_of_day.html">pylib.time_of_day</a></li>
|
||||
<li><a href="time_of_day.html">time_of_day</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -96,7 +107,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/mathematics.html
vendored
2
docs/build/html/_modules/mathematics.html
vendored
@@ -104,7 +104,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/numerical/fit.html
vendored
2
docs/build/html/_modules/numerical/fit.html
vendored
@@ -184,7 +184,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
2
docs/build/html/_modules/numerical/ode.html
vendored
2
docs/build/html/_modules/numerical/ode.html
vendored
@@ -528,7 +528,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
305
docs/build/html/_modules/pylib/data.html
vendored
Normal file
305
docs/build/html/_modules/pylib/data.html
vendored
Normal file
@@ -0,0 +1,305 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.data — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.data</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Read and write data to or from file and manipulate data structures.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-10-11</span>
|
||||
|
||||
<span class="sd">.. module:: data</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Handle data files and structures.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">pickle</span>
|
||||
|
||||
<div class="viewcode-block" id="read"><a class="viewcode-back" href="../../pylib.html#pylib.data.read">[docs]</a><span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">x_column</span><span class="p">,</span> <span class="n">y_column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""Read ascii data file.</span>
|
||||
|
||||
<span class="sd"> :param filename: file to read</span>
|
||||
<span class="sd"> :type filename: str</span>
|
||||
<span class="sd"> :param x_column: column index for the x data (first column is 0)</span>
|
||||
<span class="sd"> :type x_column: int</span>
|
||||
<span class="sd"> :param y_column: column index for the y data (first column is 0)</span>
|
||||
<span class="sd"> :type y_column: int</span>
|
||||
<span class="sd"> :param default: return object if data loading fails</span>
|
||||
<span class="sd"> :type default: object</span>
|
||||
<span class="sd"> :param verbose: verbose information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> :returns: x and y</span>
|
||||
<span class="sd"> :rtype: tuple(list, list)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">default</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">default</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'check if data is available'</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">file</span><span class="p">:</span>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="sa">r</span><span class="s1">'\s+'</span><span class="p">,</span> <span class="n">row</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="n">x</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">fields</span><span class="p">[</span><span class="n">x_column</span><span class="p">]))</span>
|
||||
<span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">fields</span><span class="p">[</span><span class="n">y_column</span><span class="p">]))</span>
|
||||
<span class="n">file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'data file not found'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span></div>
|
||||
|
||||
<div class="viewcode-block" id="write"><a class="viewcode-back" href="../../pylib.html#pylib.data.write">[docs]</a><span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="sd">"""Write ascii file.</span>
|
||||
|
||||
<span class="sd"> :param file_name: file to write</span>
|
||||
<span class="sd"> :type file_name: str</span>
|
||||
<span class="sd"> :param data: data to write</span>
|
||||
<span class="sd"> :type data: str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
|
||||
<span class="n">file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="load"><a class="viewcode-back" href="../../pylib.html#pylib.data.load">[docs]</a><span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""Load stored program objects from binary file.</span>
|
||||
|
||||
<span class="sd"> :param file_name: file to load</span>
|
||||
<span class="sd"> :type file_name: str</span>
|
||||
<span class="sd"> :param default: return object if data loading fails</span>
|
||||
<span class="sd"> :type default: object</span>
|
||||
<span class="sd"> :param verbose: verbose information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> :returns: loaded data</span>
|
||||
<span class="sd"> :rtype: object</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'check if data is available'</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="nb">input</span><span class="p">:</span>
|
||||
<span class="c1"># one load for every dump is needed to load all the data</span>
|
||||
<span class="n">object_data</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'found:'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">object_data</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
|
||||
<span class="n">object_data</span> <span class="o">=</span> <span class="n">default</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'no saved datas found'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">object_data</span></div>
|
||||
|
||||
<div class="viewcode-block" id="store"><a class="viewcode-back" href="../../pylib.html#pylib.data.store">[docs]</a><span class="k">def</span> <span class="nf">store</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">object_data</span><span class="p">):</span>
|
||||
<span class="sd">"""Store program objects to binary file.</span>
|
||||
|
||||
<span class="sd"> :param file_name: file to store</span>
|
||||
<span class="sd"> :type file_name: str</span>
|
||||
<span class="sd"> :param object_data: data to store</span>
|
||||
<span class="sd"> :type object_data: object</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">output</span><span class="p">:</span>
|
||||
<span class="c1"># every dump needs a load</span>
|
||||
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">object_data</span><span class="p">,</span> <span class="n">output</span><span class="p">,</span> <span class="n">pickle</span><span class="o">.</span><span class="n">HIGHEST_PROTOCOL</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="fold_list"><a class="viewcode-back" href="../../pylib.html#pylib.data.fold_list">[docs]</a><span class="k">def</span> <span class="nf">fold_list</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
|
||||
<span class="sd">"""Convert one-dimensional kx1 array (list) to two-dimensional mxn</span>
|
||||
<span class="sd"> array. m = k / n</span>
|
||||
|
||||
<span class="sd"> :param lst: list to convert</span>
|
||||
<span class="sd"> :type lst: list</span>
|
||||
<span class="sd"> :param n: length of the second dimenson</span>
|
||||
<span class="sd"> :type n: int</span>
|
||||
|
||||
<span class="sd"> :returns: two-dimensional array (list of lists)</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">k</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lst</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">k</span> <span class="o">%</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">k</span><span class="o">/</span><span class="n">n</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">lst</span><span class="p">[</span><span class="n">i</span><span class="o">*</span><span class="n">n</span><span class="p">:</span><span class="n">i</span><span class="o">*</span><span class="n">n</span><span class="o">+</span><span class="n">n</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">)]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="seq"><a class="viewcode-back" href="../../pylib.html#pylib.data.seq">[docs]</a><span class="k">def</span> <span class="nf">seq</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Create an arithmetic bounded sequence.</span>
|
||||
|
||||
<span class="sd"> The sequence is one of the following;</span>
|
||||
|
||||
<span class="sd"> - empty :math:`\{\}=\emptyset`, if start and stop are the same</span>
|
||||
<span class="sd"> - degenerate :math:`\{a\}`, if the sequence has only one element.</span>
|
||||
<span class="sd"> - left-close and right-open :math:`[a, b)`</span>
|
||||
|
||||
<span class="sd"> :param start: start of the sequence, the lower bound. If only start</span>
|
||||
<span class="sd"> is given than it is interpreted as stop and start will be 0.</span>
|
||||
<span class="sd"> :type start: int or float</span>
|
||||
<span class="sd"> :param stop: stop of sequence, the upper bound.</span>
|
||||
<span class="sd"> :type stop: int or float</span>
|
||||
<span class="sd"> :param step: step size, the common difference (constant difference</span>
|
||||
<span class="sd"> between consecutive terms).</span>
|
||||
<span class="sd"> :type step: int or float</span>
|
||||
<span class="sd"> :returns: arithmetic bounded sequence</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># example of seq(4, 0, -0.4)</span>
|
||||
<span class="c1"># without round:</span>
|
||||
<span class="c1"># [4.0, 3.6, 3.2, 2.8, 2.4, 2.0, 1.5999999999999996,</span>
|
||||
<span class="c1"># 1.1999999999999997, 0.7999999999999998, 0.3999999999999999]</span>
|
||||
<span class="c1"># with round:</span>
|
||||
<span class="c1"># [4.0, 3.6, 3.2, 2.8, 2.4, 2.0, 1.6, 1.2, 0.8, 0.4]</span>
|
||||
<span class="c1"># example of seq(4, 0, -0.41)</span>
|
||||
<span class="c1"># without round:</span>
|
||||
<span class="c1"># [4.0, 3.59, 3.18, 2.77, 2.3600000000000003,</span>
|
||||
<span class="c1"># 1.9500000000000002, 1.54, 1.1300000000000003,</span>
|
||||
<span class="c1"># 0.7200000000000002, 0.31000000000000005]</span>
|
||||
<span class="c1"># with round:</span>
|
||||
<span class="c1"># [4.0, 3.59, 3.18, 2.77, 2.36, 1.95, 1.54, 1.13, 0.72, 0.31]</span>
|
||||
<span class="k">if</span> <span class="n">stop</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">seq</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span>
|
||||
|
||||
<span class="n">start_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">start</span><span class="p">)</span>
|
||||
<span class="n">start_exp</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="n">start_str</span><span class="p">:</span>
|
||||
<span class="n">start_exp</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">start_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="n">step_str</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">step</span><span class="p">)</span>
|
||||
<span class="n">step_exp</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="n">step_str</span><span class="p">:</span>
|
||||
<span class="n">step_exp</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">step_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="n">exponent</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">start_exp</span><span class="p">,</span> <span class="n">step_exp</span><span class="p">)</span> <span class="c1"># no stop because it is an open bound</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">((</span><span class="n">stop</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span><span class="o">/</span><span class="nb">float</span><span class="p">(</span><span class="n">step</span><span class="p">)))</span>
|
||||
<span class="n">lst</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">n</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">lst</span> <span class="o">=</span> <span class="p">[</span><span class="nb">round</span><span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">step</span><span class="o">*</span><span class="n">i</span><span class="p">,</span> <span class="n">exponent</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
|
||||
<span class="k">return</span> <span class="n">lst</span></div>
|
||||
|
||||
<div class="viewcode-block" id="unique_ending"><a class="viewcode-back" href="../../pylib.html#pylib.data.unique_ending">[docs]</a><span class="k">def</span> <span class="nf">unique_ending</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="sd">"""From id list get list with unique ending.</span>
|
||||
|
||||
<span class="sd"> :param ids: ids</span>
|
||||
<span class="sd"> :type ids: list</span>
|
||||
<span class="sd"> :param n: minumum chars or ints</span>
|
||||
<span class="sd"> :type n: int</span>
|
||||
|
||||
<span class="sd"> :returns: unique ending of ids</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">ids</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">idi</span><span class="p">[</span><span class="o">-</span><span class="n">n</span><span class="p">:]</span> <span class="k">for</span> <span class="n">idi</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">unique_ending</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
|
||||
<div class="viewcode-block" id="get_id"><a class="viewcode-back" href="../../pylib.html#pylib.data.get_id">[docs]</a><span class="k">def</span> <span class="nf">get_id</span><span class="p">(</span><span class="n">ids</span><span class="p">,</span> <span class="n">uide</span><span class="p">):</span>
|
||||
<span class="sd">"""Get full id from unique id ending.</span>
|
||||
|
||||
<span class="sd"> :param ids: ids</span>
|
||||
<span class="sd"> :type ids: list</span>
|
||||
<span class="sd"> :param uide: unique id ending</span>
|
||||
<span class="sd"> :type uide: str</span>
|
||||
|
||||
<span class="sd"> :returns: full id</span>
|
||||
<span class="sd"> :rtype: str or int</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># take first element, because we know it is a unique ending</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">idi</span> <span class="k">for</span> <span class="n">idi</span> <span class="ow">in</span> <span class="n">ids</span> <span class="k">if</span> <span class="n">idi</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">uide</span><span class="p">)][</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
221
docs/build/html/_modules/pylib/date.html
vendored
Normal file
221
docs/build/html/_modules/pylib/date.html
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.date — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.date</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Calculate spacial dates.</span>
|
||||
|
||||
<span class="sd">:Date: 2018-01-15</span>
|
||||
|
||||
<span class="sd">.. module:: date</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Special dates.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<div class="viewcode-block" id="gaußsche_osterformel"><a class="viewcode-back" href="../../pylib.html#pylib.date.gaußsche_osterformel">[docs]</a><span class="k">def</span> <span class="nf">gaußsche_osterformel</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Gaußsche Osterformel.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the Easter Sunday</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of Easter Sunday as a day in march.</span>
|
||||
<span class="sd"> :rtype: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :ivar X: Das Jahr / year</span>
|
||||
<span class="sd"> :vartype X: int</span>
|
||||
<span class="sd"> :ivar K(X): Die Säkularzahl</span>
|
||||
<span class="sd"> :vartype K(X): int</span>
|
||||
<span class="sd"> :ivar M(X): Die säkulare Mondschaltung</span>
|
||||
<span class="sd"> :vartype M(X): int</span>
|
||||
<span class="sd"> :ivar S(K): Die säkulare Sonnenschaltung</span>
|
||||
<span class="sd"> :vartype S(K): int</span>
|
||||
<span class="sd"> :ivar A(X): Den Mondparameter</span>
|
||||
<span class="sd"> :vartype A(X): int</span>
|
||||
<span class="sd"> :ivar D(A,M): Den Keim für den ersten Vollmond im Frühling</span>
|
||||
<span class="sd"> :vartype D(A,M): int</span>
|
||||
<span class="sd"> :ivar R(D,A): Die kalendarische Korrekturgröße</span>
|
||||
<span class="sd"> :vartype R(D,A): int</span>
|
||||
<span class="sd"> :ivar OG(D,R): Die Ostergrenze</span>
|
||||
<span class="sd"> :vartype OG(D,R): int</span>
|
||||
<span class="sd"> :ivar SZ(X,S): Den ersten Sonntag im März</span>
|
||||
<span class="sd"> :vartype SZ(X,S): int</span>
|
||||
<span class="sd"> :ivar OE(OG,SZ): Die Entfernung des Ostersonntags von der Ostergrenze (Osterentfernung in Tagen)</span>
|
||||
<span class="sd"> :vartype OE(OG,SZ): int</span>
|
||||
<span class="sd"> :ivar OS(OG,OE): Das Datum des Ostersonntags als Märzdatum (32. März = 1. April usw.)</span>
|
||||
<span class="sd"> :vartype OS(OG,OE): int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Algorithmus gilt für den Gregorianischen Kalender.</span>
|
||||
|
||||
<span class="sd"> source: https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">year</span>
|
||||
<span class="n">k</span> <span class="o">=</span> <span class="n">x</span> <span class="o">//</span> <span class="mi">100</span>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="mi">15</span> <span class="o">+</span> <span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="n">k</span> <span class="o">+</span> <span class="mi">3</span><span class="p">)</span> <span class="o">//</span> <span class="mi">4</span> <span class="o">-</span> <span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">k</span> <span class="o">+</span> <span class="mi">13</span><span class="p">)</span> <span class="o">//</span> <span class="mi">25</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">-</span> <span class="p">(</span><span class="mi">3</span><span class="o">*</span><span class="n">k</span> <span class="o">+</span> <span class="mi">3</span><span class="p">)</span> <span class="o">//</span> <span class="mi">4</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">x</span> <span class="o">%</span> <span class="mi">19</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="p">(</span><span class="mi">19</span><span class="o">*</span><span class="n">a</span> <span class="o">+</span> <span class="n">m</span><span class="p">)</span> <span class="o">%</span> <span class="mi">30</span>
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span> <span class="o">+</span> <span class="n">a</span> <span class="o">//</span> <span class="mi">11</span><span class="p">)</span> <span class="o">//</span> <span class="mi">29</span>
|
||||
<span class="n">og</span> <span class="o">=</span> <span class="mi">21</span> <span class="o">+</span> <span class="n">d</span> <span class="o">-</span> <span class="n">r</span>
|
||||
<span class="n">sz</span> <span class="o">=</span> <span class="mi">7</span> <span class="o">-</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">x</span> <span class="o">//</span> <span class="mi">4</span> <span class="o">+</span> <span class="n">s</span><span class="p">)</span> <span class="o">%</span> <span class="mi">7</span>
|
||||
<span class="n">oe</span> <span class="o">=</span> <span class="mi">7</span> <span class="o">-</span> <span class="p">(</span><span class="n">og</span> <span class="o">-</span> <span class="n">sz</span><span class="p">)</span> <span class="o">%</span> <span class="mi">7</span>
|
||||
<span class="n">os</span> <span class="o">=</span> <span class="n">og</span> <span class="o">+</span> <span class="n">oe</span>
|
||||
<span class="k">return</span> <span class="n">os</span></div>
|
||||
|
||||
<div class="viewcode-block" id="easter_sunday"><a class="viewcode-back" href="../../pylib.html#pylib.date.easter_sunday">[docs]</a><span class="k">def</span> <span class="nf">easter_sunday</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Easter Sunday.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the Easter Sunday</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of Easter Sunday</span>
|
||||
<span class="sd"> :rtype: datetime.date"""</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="n">march</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="n">year</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">day</span> <span class="o">=</span> <span class="n">march</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="n">gaußsche_osterformel</span><span class="p">(</span><span class="n">year</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">day</span></div>
|
||||
|
||||
<div class="viewcode-block" id="easter_friday"><a class="viewcode-back" href="../../pylib.html#pylib.date.easter_friday">[docs]</a><span class="k">def</span> <span class="nf">easter_friday</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Easter Friday.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the Easter Friday</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of Easter Friday</span>
|
||||
<span class="sd"> :rtype: datetime.date"""</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="n">day</span> <span class="o">=</span> <span class="n">easter_sunday</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">day</span></div>
|
||||
|
||||
<div class="viewcode-block" id="easter_monday"><a class="viewcode-back" href="../../pylib.html#pylib.date.easter_monday">[docs]</a><span class="k">def</span> <span class="nf">easter_monday</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Easter Monday.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the Easter Monday</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of Easter Monday</span>
|
||||
<span class="sd"> :rtype: datetime.date"""</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="n">day</span> <span class="o">=</span> <span class="n">easter_sunday</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">day</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ascension_of_jesus"><a class="viewcode-back" href="../../pylib.html#pylib.date.ascension_of_jesus">[docs]</a><span class="k">def</span> <span class="nf">ascension_of_jesus</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Ascension of Jesus.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the ascension of Jesus</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of ascension of Jesus</span>
|
||||
<span class="sd"> :rtype: datetime.date"""</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="n">day</span> <span class="o">=</span> <span class="n">easter_sunday</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=+</span><span class="mi">39</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">day</span></div>
|
||||
|
||||
<div class="viewcode-block" id="pentecost"><a class="viewcode-back" href="../../pylib.html#pylib.date.pentecost">[docs]</a><span class="k">def</span> <span class="nf">pentecost</span><span class="p">(</span><span class="n">year</span><span class="p">):</span>
|
||||
<span class="sd">"""Pentecost.</span>
|
||||
|
||||
<span class="sd"> :param year: the year to calculate the Pentecost</span>
|
||||
<span class="sd"> :type year: int</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the day of Pentecost</span>
|
||||
<span class="sd"> :rtype: datetime.date"""</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="n">day</span> <span class="o">=</span> <span class="n">easter_sunday</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=+</span><span class="mi">49</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">day</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
511
docs/build/html/_modules/pylib/function.html
vendored
Normal file
511
docs/build/html/_modules/pylib/function.html
vendored
Normal file
@@ -0,0 +1,511 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.function — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.function</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Mathematical equations.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-11-04</span>
|
||||
|
||||
<span class="sd">.. module:: function</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Mathematical equations.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<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="../../pylib.html#pylib.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">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">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="../../pylib.html#pylib.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>
|
||||
|
||||
<span class="sd"> :param A: amplitude</span>
|
||||
<span class="sd"> :type A: float or int</span>
|
||||
<span class="sd"> :param k: (angular) wave number</span>
|
||||
<span class="sd"> :type k: float or int</span>
|
||||
<span class="sd"> :param f: ordinary frequency</span>
|
||||
<span class="sd"> :type f: float or int</span>
|
||||
<span class="sd"> :param phi: phase</span>
|
||||
<span class="sd"> :type phi: float or int</span>
|
||||
<span class="sd"> :param D: non-zero center amplitude</span>
|
||||
<span class="sd"> :type D: float or int</span>
|
||||
<span class="sd"> :param degree: boolean to switch between radians and degree. If</span>
|
||||
<span class="sd"> False phi is interpreted in radians and if True then phi is</span>
|
||||
<span class="sd"> interpreted in degrees.</span>
|
||||
<span class="sd"> :type degree: bool</span>
|
||||
|
||||
<span class="sd"> :results: sine wave function of spatial variable x and optional</span>
|
||||
<span class="sd"> time t</span>
|
||||
|
||||
<span class="sd"> In general, the function is:</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + 2\pi f t + \varphi) + D \\</span>
|
||||
<span class="sd"> y(x,t) = A\sin(kx + \omega t + \varphi) + D</span>
|
||||
|
||||
<span class="sd"> where:</span>
|
||||
|
||||
<span class="sd"> * A, amplitude, the peak deviation of the function from zero.</span>
|
||||
<span class="sd"> * f, ordinary frequency, the number of oscillations (cycles) that</span>
|
||||
<span class="sd"> occur each second of time.</span>
|
||||
<span class="sd"> * ω = 2πf, angular frequency, the rate of change of the function</span>
|
||||
<span class="sd"> argument in units of radians per second. If ω < 0 the wave is</span>
|
||||
<span class="sd"> moving to the right, if ω > 0 the wave is moving to the left.</span>
|
||||
<span class="sd"> * φ, phase, specifies (in radians) where in its cycle the</span>
|
||||
<span class="sd"> oscillation is at t = 0.</span>
|
||||
<span class="sd"> * x, spatial variable that represents the position on the</span>
|
||||
<span class="sd"> dimension on which the wave propagates.</span>
|
||||
<span class="sd"> * k, characteristic parameter called wave number (or angular wave</span>
|
||||
<span class="sd"> number), which represents the proportionality between the</span>
|
||||
<span class="sd"> angular frequency ω and the linear speed (speed of propagation)</span>
|
||||
<span class="sd"> ν.</span>
|
||||
<span class="sd"> * D, non-zero center amplitude.</span>
|
||||
|
||||
<span class="sd"> The wavenumber is related to the angular frequency by:</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> k={\omega \over v}={2\pi f \over v}={2\pi \over \lambda }</span>
|
||||
|
||||
<span class="sd"> where λ (lambda) is the wavelength, f is the frequency, and v is the</span>
|
||||
<span class="sd"> linear speed.</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`cosine_wave`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">degree</span><span class="p">:</span>
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">radians</span><span class="p">(</span><span class="n">phi</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="mi">0</span><span class="p">:</span> <span class="n">A</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">k</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">f</span><span class="o">*</span><span class="n">t</span> <span class="o">+</span> <span class="n">phi</span><span class="p">)</span> <span class="o">+</span> <span class="n">D</span></div>
|
||||
|
||||
<div class="viewcode-block" id="cosine_wave"><a class="viewcode-back" href="../../pylib.html#pylib.function.cosine_wave">[docs]</a><span class="k">def</span> <span class="nf">cosine_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 cosine wave is said to be sinusoidal, because,</span>
|
||||
<span class="sd"> :math:`\cos(x) = \sin(x + \pi/2)`, which is also a sine wave with a</span>
|
||||
<span class="sd"> phase-shift of π/2 radians. Because of this head start, it is often</span>
|
||||
<span class="sd"> said that the cosine function leads the sine function or the sine</span>
|
||||
<span class="sd"> lags the cosine.</span>
|
||||
|
||||
<span class="sd"> :param A: amplitude</span>
|
||||
<span class="sd"> :type A: float or int</span>
|
||||
<span class="sd"> :param k: (angular) wave number</span>
|
||||
<span class="sd"> :type k: float or int</span>
|
||||
<span class="sd"> :param f: ordinary frequency</span>
|
||||
<span class="sd"> :type f: float or int</span>
|
||||
<span class="sd"> :param phi: phase</span>
|
||||
<span class="sd"> :type phi: float or int</span>
|
||||
<span class="sd"> :param D: non-zero center amplitude</span>
|
||||
<span class="sd"> :type D: float or int</span>
|
||||
<span class="sd"> :param degree: boolean to switch between radians and degree. If</span>
|
||||
<span class="sd"> False phi is interpreted in radians and if True then phi is</span>
|
||||
<span class="sd"> interpreted in degrees.</span>
|
||||
<span class="sd"> :type degree: bool</span>
|
||||
|
||||
<span class="sd"> :results: sine wave function of spatial variable x and optional</span>
|
||||
<span class="sd"> time t</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`sine_wave`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">degree</span><span class="p">:</span>
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">phi</span> <span class="o">+</span> <span class="mi">90</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">phi</span> <span class="o">=</span> <span class="n">phi</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span>
|
||||
<span class="k">return</span> <span class="n">sine_wave</span><span class="p">(</span><span class="n">A</span><span class="o">=</span><span class="n">A</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">f</span><span class="o">=</span><span class="n">f</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="n">phi</span><span class="p">,</span> <span class="n">D</span><span class="o">=</span><span class="n">D</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="n">degree</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Parametric equations</span>
|
||||
<span class="c1"># roulette</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<div class="viewcode-block" id="hypotrochoid"><a class="viewcode-back" href="../../pylib.html#pylib.function.hypotrochoid">[docs]</a><span class="k">def</span> <span class="nf">hypotrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Hypotrochoid</span>
|
||||
|
||||
<span class="sd"> A point is attached with a distance d from the center of a circle</span>
|
||||
<span class="sd"> of radius r. The circle is rolling around the inside of a fixed</span>
|
||||
<span class="sd"> circle of radius R.</span>
|
||||
|
||||
<span class="sd"> :param R: radius of the fixed exterior circle</span>
|
||||
<span class="sd"> :type R: float</span>
|
||||
<span class="sd"> :param r: radius of the rolling circle inside of the fixed circle</span>
|
||||
<span class="sd"> :typre r: float</span>
|
||||
<span class="sd"> :param d: distance from the center of the interior circle</span>
|
||||
<span class="sd"> :type d: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> x(\theta) = (R - r)\cos\theta + d\cos\left(\frac{R-r}{r}\theta\right) \\</span>
|
||||
<span class="sd"> y(\theta) = (R - r)\sin\theta - d\sin\left(\frac{R-r}{r}\theta\right) \\</span>
|
||||
<span class="sd"> \theta = \left[0, 2\pi\frac{\mathrm{lcm}(r, R)}{R}\right]</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> * * *</span>
|
||||
<span class="sd"> * R *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * r **</span>
|
||||
<span class="sd"> * * .... *</span>
|
||||
<span class="sd"> * * d *</span>
|
||||
<span class="sd"> * * **</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = hyotrochoid(20, 6, 6)[:1]</span>
|
||||
<span class="sd"> >>> x, y, theta_end = hyotrochoid(20, 6, 6)</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`mathematics.lcm`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">((</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">-</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">lcm</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">R</span><span class="p">)</span><span class="o">/</span><span class="n">R</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
|
||||
|
||||
<div class="viewcode-block" id="epitrochoid"><a class="viewcode-back" href="../../pylib.html#pylib.function.epitrochoid">[docs]</a><span class="k">def</span> <span class="nf">epitrochoid</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Epitrochoid</span>
|
||||
|
||||
<span class="sd"> A point is attached with a distance d from the center of a circle</span>
|
||||
<span class="sd"> of radius r. The circle is rolling around the outside of a fixed</span>
|
||||
<span class="sd"> circle of radius R.</span>
|
||||
|
||||
<span class="sd"> :param R: radius of the fixed interior circle</span>
|
||||
<span class="sd"> :type R: float</span>
|
||||
<span class="sd"> :param r: radius of the rolling circle outside of the fixed circle</span>
|
||||
<span class="sd"> :typre r: float</span>
|
||||
<span class="sd"> :param d: distance from the center of the exterior circle</span>
|
||||
<span class="sd"> :type d: float</span>
|
||||
|
||||
<span class="sd"> :results: functions for x of theta and y of theta</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> x(\theta) = (R + r)\cos\theta - d\cos\left(\frac{R+r}{r}\theta\right) \\</span>
|
||||
<span class="sd"> y(\theta) = (R + r)\sin\theta - d\sin\left(\frac{R+r}{r}\theta\right) \\</span>
|
||||
<span class="sd"> \theta = \left[0, 2\pi\right]</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> * * *</span>
|
||||
<span class="sd"> * R *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * * r *</span>
|
||||
<span class="sd"> * ** .... *</span>
|
||||
<span class="sd"> * ** d *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * * * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * *</span>
|
||||
<span class="sd"> * * *</span>
|
||||
|
||||
<span class="sd"> >>> x, y = epitrochoid(3, 1, 0.5)[:1]</span>
|
||||
<span class="sd"> >>> x, y, theta_end = epitrochoid(3, 1, 0.5)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">theta</span><span class="p">:</span> <span class="p">(</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">-</span> <span class="n">d</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">((</span><span class="n">R</span><span class="o">+</span><span class="n">r</span><span class="p">)</span><span class="o">/</span><span class="n">r</span> <span class="o">*</span> <span class="n">theta</span><span class="p">)</span>
|
||||
<span class="n">theta_end</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">theta_end</span></div>
|
||||
|
||||
<div class="viewcode-block" id="to_str"><a class="viewcode-back" href="../../pylib.html#pylib.function.to_str">[docs]</a><span class="k">def</span> <span class="nf">to_str</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">x_0</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">x_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">w</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">density</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">char_set</span><span class="o">=</span><span class="s2">"line"</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent functions as string frame with a specific character set.</span>
|
||||
<span class="sd"> which are normed to the range of [0, 1] to</span>
|
||||
|
||||
<span class="sd"> :param f: function or list of functions normed to the range of [0, 1]</span>
|
||||
<span class="sd"> :type f: function or list</span>
|
||||
<span class="sd"> :param h: number of chars in vertical direction</span>
|
||||
<span class="sd"> :type h: int</span>
|
||||
<span class="sd"> :param w: number of chars in horizontal direction</span>
|
||||
<span class="sd"> :type w: int</span>
|
||||
|
||||
<span class="sd"> :param char_set: either "braille" or "block". "braille" uses Unicode</span>
|
||||
<span class="sd"> Characters in the Braille Patterns Block (fisrt index U+2800, last</span>
|
||||
<span class="sd"> index U+28FF [CUDB]_) and the "block" uses part of the Unicode</span>
|
||||
<span class="sd"> Characters in the Block Elements Block (fisrt index U+2580, last</span>
|
||||
<span class="sd"> index U+259F [CUDB]_). Alias for braille is line and alias for</span>
|
||||
<span class="sd"> block is histogram</span>
|
||||
<span class="sd"> :type char_set: str</span>
|
||||
|
||||
<span class="sd"> Usage:</span>
|
||||
<span class="sd"> * case dependent arguments</span>
|
||||
|
||||
<span class="sd"> * 1 quasi line plot (braille characters)</span>
|
||||
<span class="sd"> f = lambda function (lambda x, t=0: ...)</span>
|
||||
<span class="sd"> x_1 = max x value</span>
|
||||
<span class="sd"> x_0 = min x value</span>
|
||||
<span class="sd"> t = time (animation)</span>
|
||||
<span class="sd"> * 2 histogram (block characters)</span>
|
||||
<span class="sd"> f = lambda function (lambda x, t=0: ...)</span>
|
||||
<span class="sd"> x_1 = max x value</span>
|
||||
<span class="sd"> x_0 = min x value</span>
|
||||
<span class="sd"> t = time (animation)</span>
|
||||
<span class="sd"> chart="histogram"</span>
|
||||
|
||||
<span class="sd"> * general arguments</span>
|
||||
<span class="sd"> w = window width in number of chars</span>
|
||||
<span class="sd"> density = number of data point per pixel (for line chart higher density makes thicker lines)</span>
|
||||
<span class="sd"> chart = either "line" or "histogram"</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: Braille Patterns Block</span>
|
||||
|
||||
<span class="sd"> * Dots or pixels per character in vertical direction: 6</span>
|
||||
<span class="sd"> * Dots or pixels per character in horizontal direction: 2</span>
|
||||
|
||||
<span class="sd"> First dot (bottom left) is the zero (0) position of the</span>
|
||||
<span class="sd"> function. So, a function value of zero does not mean to have zero</span>
|
||||
<span class="sd"> dots but one.</span>
|
||||
<span class="sd"> Example of 3 columns and 3 rows (upside down view of 'normal' braille/drawille position)</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> | ^ y axis</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> | ,_____,,_____,,_____,</span>
|
||||
<span class="sd"> 7 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 6 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 5 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 4 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> 3 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 2 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 1 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> 0 + - | * *|| * *|| * *| ---> x axis</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> -1 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -2 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -3 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> -4 + | * *|| * *|| * *|</span>
|
||||
<span class="sd"> | `````````````````````</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> `-----+--+---+--+---+--+-------------</span>
|
||||
<span class="sd"> -2 -1 0 1 2 3</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: Block Elements Block</span>
|
||||
|
||||
<span class="sd"> * Dots or pixels per character in vertical direction: 8</span>
|
||||
<span class="sd"> * Dots or pixels per character in horizontal direction: 1</span>
|
||||
|
||||
<span class="sd"> Example of 3 columns and 3 rows</span>
|
||||
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> | ^ y axis</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> | ,_____,,_____,,_____,</span>
|
||||
<span class="sd"> 15 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 14 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 13 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 12 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 11 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 10 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 9 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 8 + | --- || --- || --- |</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> 7 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 6 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 5 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 4 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 3 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 2 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 1 + | --- || --- || --- |</span>
|
||||
<span class="sd"> 0 + - | --- || --- || --- | ---> x axis</span>
|
||||
<span class="sd"> | ;=====;;=====;;=====;</span>
|
||||
<span class="sd"> -1 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -2 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -3 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -4 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -5 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -6 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -7 + | --- || --- || --- |</span>
|
||||
<span class="sd"> -8 + | --- || --- || --- |</span>
|
||||
<span class="sd"> | `````````````````````</span>
|
||||
<span class="sd"> | |</span>
|
||||
<span class="sd"> `------+------+------+---------------</span>
|
||||
<span class="sd"> -1 0 1</span>
|
||||
|
||||
|
||||
<span class="sd"> .. rubric:: References</span>
|
||||
|
||||
<span class="sd"> .. [CUDB] `Unicode Database - Blocks <ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt>`_</span>
|
||||
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`pylib.function.transformation`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># scale function to used chars and dots/pixel in y direction (4 for braille characters): from [0, 1] to [0, chars*4-1]</span>
|
||||
<span class="c1"># negate the function because the y axis is pointing downwards: from [0, 1] to [-1, 0] or from [0, chars*4-1] to [-(chars*4-1), 0]</span>
|
||||
<span class="c1"># and becasue of the negation shift the function by one dot/pixel, otherwise the function would need another char, because the 0 is on an another char on the "positive side".</span>
|
||||
<span class="c1"># devide the time by the number of dots/pixel in x direction (2 for braille characters)</span>
|
||||
<span class="n">window_factor</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="p">(</span><span class="n">x_1</span><span class="o">-</span><span class="n">x_0</span><span class="p">)</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"line"</span><span class="p">,</span> <span class="s2">"braille"</span><span class="p">]:</span>
|
||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">pixels_horizontal</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">canvas</span> <span class="o">=</span> <span class="n">drawille</span><span class="o">.</span><span class="n">Canvas</span><span class="p">()</span>
|
||||
<span class="c1"># divide step width of the sequence by 2 (double density, 2 dots/pixel per char)</span>
|
||||
<span class="c1"># multiplicate x by 2 (2 dots/pixel per char)</span>
|
||||
<span class="k">for</span> <span class="n">x_i</span> <span class="ow">in</span> <span class="n">seq</span><span class="p">(</span><span class="n">x_0</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="n">x_1</span><span class="o">*</span><span class="n">window_factor</span><span class="o">*</span><span class="n">pixels_horizontal</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="n">density</span><span class="p">):</span>
|
||||
<span class="n">canvas</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">f</span><span class="p">(</span><span class="n">x_i</span><span class="p">,</span> <span class="n">t</span><span class="p">))</span>
|
||||
<span class="c1">#frame = canvas.frame(min_x=a*pixel_per_char, min_y=1, max_x=b*pixel_per_char, max_y=21)</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">frame</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"histogram"</span><span class="p">,</span> <span class="s2">"block"</span><span class="p">]:</span>
|
||||
<span class="n">pixels_horizontal</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">pixels_vertical</span> <span class="o">=</span> <span class="mi">8</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">h</span><span class="o">*</span><span class="n">pixels_vertical</span><span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="n">density</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">density</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1"># density max 1!</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">seq</span><span class="p">(</span><span class="n">x_0</span><span class="o">*</span><span class="n">window_factor</span><span class="p">,</span> <span class="n">x_1</span><span class="o">*</span><span class="n">window_factor</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="n">pixels_horizontal</span><span class="o">/</span><span class="n">density</span><span class="p">)</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span><span class="p">(</span><span class="n">xi</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">drawblock</span><span class="o">.</span><span class="n">histogram</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">frame</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
610
docs/build/html/_modules/pylib/geometry.html
vendored
Normal file
610
docs/build/html/_modules/pylib/geometry.html
vendored
Normal file
@@ -0,0 +1,610 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.geometry — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.geometry</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""2D geometry objects.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-08-28</span>
|
||||
|
||||
<span class="sd">.. module:: geometry</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Geometry objects.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="distance"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.distance">[docs]</a><span class="k">def</span> <span class="nf">distance</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="p">):</span>
|
||||
<span class="sd">"""Distance between two points (or length of a straight line).</span>
|
||||
|
||||
<span class="sd"> :param point1: first point (first end point of straight line)</span>
|
||||
<span class="sd"> :type point1: tuple</span>
|
||||
<span class="sd"> :param point2: second point (second end point of straight line)</span>
|
||||
<span class="sd"> :type point2: tuple</span>
|
||||
|
||||
<span class="sd"> :returns: distance between the two points</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">point2</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">-</span><span class="n">point1</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="p">(</span><span class="n">point2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">point1</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="angle"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.angle">[docs]</a><span class="k">def</span> <span class="nf">angle</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Angle of point or between two points.</span>
|
||||
|
||||
<span class="sd"> :param point1: (first) point</span>
|
||||
<span class="sd"> :type point1: tuple</span>
|
||||
<span class="sd"> :param point2: second point (default = None)</span>
|
||||
<span class="sd"> :type point2: tuple</span>
|
||||
|
||||
<span class="sd"> :returns: angle of point or between two points</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">point2</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">point1</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">point1</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">point2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">point1</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">point2</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">-</span><span class="n">point1</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="translate"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.translate">[docs]</a><span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="n">vec</span><span class="p">,</span> <span class="o">*</span><span class="n">pts</span><span class="p">):</span>
|
||||
<span class="sd">"""Translate a point or polygon by a given vector.</span>
|
||||
|
||||
<span class="sd"> :param vec: translation vector</span>
|
||||
<span class="sd"> :type vec: tuple</span>
|
||||
<span class="sd"> :param `*pts`: points to translate</span>
|
||||
|
||||
<span class="sd"> :returns: (point_x, point_y) or (point1, point2, ...)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`translate_xy`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">vx</span><span class="p">,</span> <span class="n">vy</span> <span class="o">=</span> <span class="n">vec</span>
|
||||
<span class="k">return</span> <span class="nb">tuple</span><span class="p">([(</span><span class="n">x</span><span class="o">+</span><span class="n">vx</span><span class="p">,</span> <span class="n">y</span><span class="o">+</span><span class="n">vy</span><span class="p">)</span> <span class="k">for</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">])</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="translate_xy"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.translate_xy">[docs]</a><span class="k">def</span> <span class="nf">translate_xy</span><span class="p">(</span><span class="n">vec</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="sd">"""Translate a point or polygon by a given vector.</span>
|
||||
|
||||
<span class="sd"> :param vec: translation vector</span>
|
||||
<span class="sd"> :type vec: tuple</span>
|
||||
<span class="sd"> :param x: points to translate</span>
|
||||
<span class="sd"> :type x: int or float or list</span>
|
||||
<span class="sd"> :param y: points to translate</span>
|
||||
<span class="sd"> :type y: int or float or list</span>
|
||||
|
||||
<span class="sd"> :returns: (x', y')</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`translate`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">vx</span><span class="p">,</span> <span class="n">vy</span> <span class="o">=</span> <span class="n">vec</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">"__len__"</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="s2">"__len__"</span><span class="p">):</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="n">y</span><span class="p">]</span>
|
||||
|
||||
<span class="n">xp</span> <span class="o">=</span> <span class="p">[</span><span class="n">xi</span><span class="o">+</span><span class="n">vx</span> <span class="k">for</span> <span class="n">xi</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]</span>
|
||||
<span class="n">yp</span> <span class="o">=</span> <span class="p">[</span><span class="n">yi</span><span class="o">+</span><span class="n">vy</span> <span class="k">for</span> <span class="n">yi</span> <span class="ow">in</span> <span class="n">y</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># no list if it is only one value</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">xp</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">xp</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">yp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">xp</span><span class="p">,</span> <span class="n">yp</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="rotate"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.rotate">[docs]</a><span class="k">def</span> <span class="nf">rotate</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="o">*</span><span class="n">pts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotate a point or polygon counterclockwise by a given angle</span>
|
||||
<span class="sd"> around a given origin. The angle should be given in radians.</span>
|
||||
|
||||
<span class="sd"> :param origin: the center of rotation</span>
|
||||
<span class="sd"> :type origin: tuple</span>
|
||||
<span class="sd"> :param angle: the rotation angle</span>
|
||||
<span class="sd"> :type angle: int or float</span>
|
||||
<span class="sd"> :param `*pts`: points to rotate</span>
|
||||
<span class="sd"> :param `**kwargs`: options</span>
|
||||
|
||||
<span class="sd"> :returns: (point_x, point_y) or (point1, point2, ...)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`rotate_xy`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">ox</span><span class="p">,</span> <span class="n">oy</span> <span class="o">=</span> <span class="n">origin</span>
|
||||
|
||||
<span class="c1"># add first point to the end</span>
|
||||
<span class="k">if</span> <span class="s2">"closed"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"closed"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
<span class="n">pts</span> <span class="o">+=</span> <span class="p">(</span><span class="n">pts</span><span class="p">[</span><span class="mi">0</span><span class="p">],)</span>
|
||||
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">([(</span><span class="n">ox</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">px</span> <span class="o">-</span> <span class="n">ox</span><span class="p">)</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">py</span> <span class="o">-</span> <span class="n">oy</span><span class="p">),</span>
|
||||
<span class="n">oy</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">px</span> <span class="o">-</span> <span class="n">ox</span><span class="p">)</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">py</span> <span class="o">-</span> <span class="n">oy</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">px</span><span class="p">,</span> <span class="n">py</span><span class="p">)</span> <span class="ow">in</span> <span class="n">pts</span><span class="p">])</span>
|
||||
|
||||
<span class="c1"># no tuple in tuple if it is only one point</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="rotate_deg"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.rotate_deg">[docs]</a><span class="k">def</span> <span class="nf">rotate_deg</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="o">*</span><span class="n">pts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotate a point or polygon counterclockwise by a given angle</span>
|
||||
<span class="sd"> around a given origin. The angle should be given in degrees.</span>
|
||||
|
||||
<span class="sd"> :param origin: the center of rotation</span>
|
||||
<span class="sd"> :type origin: tuple</span>
|
||||
<span class="sd"> :param angle: the rotation angle</span>
|
||||
<span class="sd"> :type angle: int or float</span>
|
||||
<span class="sd"> :param `*pts`: points to rotate</span>
|
||||
<span class="sd"> :param `**kwargs`: options</span>
|
||||
|
||||
<span class="sd"> :returns: (point_x, point_y) or (point1, point2, ...)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`rotate`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">rotate</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span> <span class="n">angle</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">180</span><span class="p">,</span> <span class="o">*</span><span class="n">pts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="rotate_xy"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.rotate_xy">[docs]</a><span class="k">def</span> <span class="nf">rotate_xy</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotate x and y coordinates counterclockwise by a given angle</span>
|
||||
<span class="sd"> around a given origin. The angle should be given in radians.</span>
|
||||
|
||||
<span class="sd"> :param origin: the center of rotation</span>
|
||||
<span class="sd"> :type origin: tuple</span>
|
||||
<span class="sd"> :param angle: the rotation angle</span>
|
||||
<span class="sd"> :type angle: int or float</span>
|
||||
<span class="sd"> :param x: x coordinates</span>
|
||||
<span class="sd"> :type x: int or float or list</span>
|
||||
<span class="sd"> :param y: y coordinates</span>
|
||||
<span class="sd"> :type y: int or float or list</span>
|
||||
<span class="sd"> :param `**kwargs`: options</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`rotate`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">ox</span><span class="p">,</span> <span class="n">oy</span> <span class="o">=</span> <span class="n">origin</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">"__len__"</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="s2">"__len__"</span><span class="p">):</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="n">y</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># add first point to the end</span>
|
||||
<span class="k">if</span> <span class="s2">"closed"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"closed"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="n">y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
|
||||
<span class="n">x_result</span> <span class="o">=</span> <span class="p">[</span><span class="n">ox</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">xi</span> <span class="o">-</span> <span class="n">ox</span><span class="p">)</span> <span class="o">-</span> <span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">yi</span> <span class="o">-</span> <span class="n">oy</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">xi</span><span class="p">,</span> <span class="n">yi</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
|
||||
|
||||
<span class="n">y_result</span> <span class="o">=</span> <span class="p">[</span><span class="n">oy</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">xi</span> <span class="o">-</span> <span class="n">ox</span><span class="p">)</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angle</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">yi</span> <span class="o">-</span> <span class="n">oy</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">xi</span><span class="p">,</span> <span class="n">yi</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
|
||||
|
||||
<span class="c1"># no list if it is only one value</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_result</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">x_result</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">y_result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">x_result</span><span class="p">,</span> <span class="n">y_result</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="rectangle"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.rectangle">[docs]</a><span class="k">def</span> <span class="nf">rectangle</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">):</span>
|
||||
<span class="sd">"""\</span>
|
||||
<span class="sd"> :param width: the width of the rectangle</span>
|
||||
<span class="sd"> :type width: int or float</span>
|
||||
<span class="sd"> :param height: the height of the rectangle</span>
|
||||
<span class="sd"> :type height: int or float</span>
|
||||
|
||||
<span class="sd"> :returns: (point1, point2, point3, point4)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">pt1</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">pt2</span> <span class="o">=</span> <span class="p">(</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">pt3</span> <span class="o">=</span> <span class="p">(</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">pt4</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">pt1</span><span class="p">,</span> <span class="n">pt2</span><span class="p">,</span> <span class="n">pt3</span><span class="p">,</span> <span class="n">pt4</span><span class="p">,</span> <span class="n">pt1</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="square"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.square">[docs]</a><span class="k">def</span> <span class="nf">square</span><span class="p">(</span><span class="n">width</span><span class="p">):</span>
|
||||
<span class="sd">"""\</span>
|
||||
<span class="sd"> :param width: the edge size of the square</span>
|
||||
<span class="sd"> :type width: int or float</span>
|
||||
|
||||
<span class="sd"> :returns: (point1, point2, point3, point4)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`rectangle`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">rectangle</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="lines"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.lines">[docs]</a><span class="k">def</span> <span class="nf">lines</span><span class="p">(</span><span class="n">pts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Lines defined by a list of end points.</span>
|
||||
|
||||
<span class="sd"> :param pts: list of points in absolute global coordinate system. If</span>
|
||||
<span class="sd"> keyword inc is given than the inc decides what the left and the</span>
|
||||
<span class="sd"> right end point of the line is, otherwise it is assumed that the</span>
|
||||
<span class="sd"> points build a solid line, that is lines between the given points</span>
|
||||
<span class="sd"> in given order.</span>
|
||||
<span class="sd"> :type pts: list</span>
|
||||
|
||||
<span class="sd"> :param `**kwargs`: options:</span>
|
||||
|
||||
<span class="sd"> * deformation -- list of points. Additional deformation</span>
|
||||
<span class="sd"> (translation) at point.</span>
|
||||
<span class="sd"> * factor -- factor of the deformation (default = 1).</span>
|
||||
<span class="sd"> * inc -- the incidence table, a list of 2 element lists. The inc</span>
|
||||
<span class="sd"> decides what the left and the right end point of the line is.</span>
|
||||
<span class="sd"> * index_offset -- starting index of lists (default = 0).</span>
|
||||
|
||||
<span class="sd"> :returns: list of endpoints for each line;</span>
|
||||
<span class="sd"> [((point1_x, point1_y), (point2_x, point2_y)),</span>
|
||||
<span class="sd"> (p1, p2),</span>
|
||||
<span class="sd"> ...]</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`~geometry_plot.plot_lines` of the :mod:`geometry_plot`</span>
|
||||
<span class="sd"> module to plot the lines</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s1">'index_offset'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="s1">'deformation'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s1">'factor'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">pts</span> <span class="o">=</span> <span class="p">[(</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">d</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">])</span> <span class="k">for</span>
|
||||
<span class="n">p</span><span class="p">,</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">pts</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'deformation'</span><span class="p">])]</span>
|
||||
<span class="k">if</span> <span class="s1">'inc'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[(</span><span class="n">pts</span><span class="p">[</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]],</span>
|
||||
<span class="n">pts</span><span class="p">[</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]])</span> <span class="k">for</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'inc'</span><span class="p">]]</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">pts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">pts</span><span class="p">[</span><span class="mi">1</span><span class="p">:]))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="cubics"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.cubics">[docs]</a><span class="k">def</span> <span class="nf">cubics</span><span class="p">(</span><span class="n">pts</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Cubic lines defined by a list of two end points. The deformation</span>
|
||||
<span class="sd"> as displacement and rotation (radians) is defined element wise as</span>
|
||||
<span class="sd"> keyword argument deformation or global node wise as</span>
|
||||
<span class="sd"> global_deformation. The global coordinate system is xy. x in the</span>
|
||||
<span class="sd"> right direction and y in the top direction.</span>
|
||||
|
||||
<span class="sd"> :param pts: list of points in absolute global coordinate system. If</span>
|
||||
<span class="sd"> keyword inc is given than the inc decides what the left and the</span>
|
||||
<span class="sd"> right end point of the line is, otherwise it is assumed that the</span>
|
||||
<span class="sd"> points build a solid line, that is lines between the given points</span>
|
||||
<span class="sd"> in given order.</span>
|
||||
<span class="sd"> :type pts_rot: list</span>
|
||||
|
||||
<span class="sd"> :param `**kwargs`: options:</span>
|
||||
|
||||
<span class="sd"> * deformation -- list of deformation element wise. Additional</span>
|
||||
<span class="sd"> deformation (translation and rotation in radians) at element</span>
|
||||
<span class="sd"> left and right node.</span>
|
||||
<span class="sd"> * rotation_plane -- rotation plane of the element wise</span>
|
||||
<span class="sd"> deformation defined by a string; either 'xy' or 'xz' (default</span>
|
||||
<span class="sd"> = 'xy'). x in the right direction and y in the top direction</span>
|
||||
<span class="sd"> or z in the bottom direction.</span>
|
||||
<span class="sd"> * global_deformation -- list of deformation global node wise.</span>
|
||||
<span class="sd"> Additional deformation (horizontal translation, vertical</span>
|
||||
<span class="sd"> translation and rotation in radians) at node.</span>
|
||||
<span class="sd"> * factor -- factor of the derformation (default = 1).</span>
|
||||
<span class="sd"> * inc -- the incidence table, a list of 2 element lists. The inc</span>
|
||||
<span class="sd"> decides what the left and the right end point of the line is.</span>
|
||||
<span class="sd"> * index_offset -- starting index of lists (default = 0).</span>
|
||||
|
||||
<span class="sd"> :returns: list of endpoints for each line;</span>
|
||||
<span class="sd"> [(((point1_x, point1_y) angle1), ((point2_x, point2_y), angle2),</span>
|
||||
<span class="sd"> (p1, angle1, p2, angle2),</span>
|
||||
<span class="sd"> ...]</span>
|
||||
<span class="sd"> :rtype: list</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s1">'index_offset'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="s1">'deformation'</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="s1">'global_deformation'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s1">'factor'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="s1">'inc'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s1">'global_deformation'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">lr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">pts</span><span class="p">[</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]],</span>
|
||||
<span class="n">pts</span><span class="p">[</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]])</span> <span class="k">for</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'inc'</span><span class="p">]]</span>
|
||||
<span class="n">ang</span> <span class="o">=</span> <span class="p">[</span><span class="n">angle</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">lr</span><span class="p">]</span>
|
||||
<span class="c1"># system deformation</span>
|
||||
<span class="n">U</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'global_deformation'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s1">'rotation_plane'</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="s1">'xz'</span> <span class="o">==</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'rotation_plane'</span><span class="p">]:</span>
|
||||
<span class="c1"># system deformation left X Z RY right X Z RY element wise</span>
|
||||
<span class="c1"># Z downwards -> convert to X Y RZ</span>
|
||||
<span class="n">Ue</span> <span class="o">=</span> <span class="p">[[</span> <span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="o">-</span><span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="o">-</span><span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">2</span><span class="p">]]</span> <span class="k">for</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'inc'</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># system deformation left X Y RZ right X Y RZ element wise</span>
|
||||
<span class="n">Ue</span> <span class="o">=</span> <span class="p">[[</span><span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">U</span><span class="p">[(</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">])][</span><span class="mi">2</span><span class="p">]]</span> <span class="k">for</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'inc'</span><span class="p">]]</span>
|
||||
<span class="c1"># element deformation, X Y RZ to x r rz</span>
|
||||
<span class="c1"># back transformation T^T = [[c, s, 0], [-s, c, 0], [0, 0, 1]]</span>
|
||||
<span class="n">u</span> <span class="o">=</span> <span class="p">[[(</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="p">(</span><span class="o">-</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="n">Uei</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="p">(</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="p">(</span><span class="o">-</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angi</span><span class="p">)</span><span class="o">*</span><span class="n">Uei</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="n">Uei</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]]</span>
|
||||
<span class="k">for</span> <span class="n">Uei</span><span class="p">,</span> <span class="n">angi</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">Ue</span><span class="p">,</span> <span class="n">ang</span><span class="p">)]</span>
|
||||
<span class="k">else</span><span class="p">:</span> <span class="c1"># deformation</span>
|
||||
<span class="c1"># the deformation is in element coordinate system, therefore the angle is needed</span>
|
||||
<span class="k">if</span> <span class="s1">'rotation_plane'</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="s1">'xz'</span> <span class="o">==</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'rotation_plane'</span><span class="p">]:</span>
|
||||
<span class="n">u</span> <span class="o">=</span> <span class="p">[[</span> <span class="n">ue</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="o">-</span><span class="n">ue</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="n">ue</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="n">ue</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="o">-</span><span class="n">ue</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">],</span>
|
||||
<span class="n">ue</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]]</span> <span class="k">for</span> <span class="n">ue</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'deformation'</span><span class="p">]]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">u</span> <span class="o">=</span> <span class="p">[[</span><span class="n">ui</span><span class="o">*</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]</span> <span class="k">for</span> <span class="n">ui</span> <span class="ow">in</span> <span class="n">ue</span><span class="p">]</span> <span class="k">for</span> <span class="n">ue</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'deformation'</span><span class="p">]]</span>
|
||||
<span class="k">return</span> <span class="p">[(</span><span class="n">pts</span><span class="p">[</span><span class="n">l</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]],</span>
|
||||
<span class="n">pts</span><span class="p">[</span><span class="n">r</span><span class="o">-</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'index_offset'</span><span class="p">]],</span>
|
||||
<span class="n">d</span><span class="p">)</span> <span class="k">for</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">),</span> <span class="n">d</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'inc'</span><span class="p">],</span> <span class="n">u</span><span class="p">)]</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">pts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">pts</span><span class="p">[</span><span class="mi">1</span><span class="p">:]))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="interpolate_hermite"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.interpolate_hermite">[docs]</a><span class="k">def</span> <span class="nf">interpolate_hermite</span><span class="p">(</span><span class="n">lvd</span><span class="p">,</span> <span class="n">lr</span><span class="p">,</span> <span class="n">rvd</span><span class="p">,</span> <span class="n">rr</span><span class="p">,</span> <span class="n">lhd</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">rhd</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">scale_x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_y</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Interpolate cubic line with hermite boundary conditions.</span>
|
||||
|
||||
<span class="sd"> :param lvd: left vertcal deflection</span>
|
||||
<span class="sd"> :type lvd: int or float</span>
|
||||
<span class="sd"> :param lr: left rotation</span>
|
||||
<span class="sd"> :type lr: int or float</span>
|
||||
<span class="sd"> :param rvd: right vertical deflection</span>
|
||||
<span class="sd"> :type rvd: int or float</span>
|
||||
<span class="sd"> :param rr: right rotation</span>
|
||||
<span class="sd"> :type rr: int or float</span>
|
||||
<span class="sd"> :param lhd: left horizontal deformation (default = 0)</span>
|
||||
<span class="sd"> :type lhd: int or float</span>
|
||||
<span class="sd"> :param rhd: right horizontal deformation (default = 0)</span>
|
||||
<span class="sd"> :type rhd: int or float</span>
|
||||
<span class="sd"> :param scale_x: length of element (default = 1)</span>
|
||||
<span class="sd"> :type scale_x: int or float</span>
|
||||
<span class="sd"> :param scale_y: factor of the deformation (default = 1).</span>
|
||||
<span class="sd"> This does not change the length.</span>
|
||||
<span class="sd"> :type scale_y: int or float</span>
|
||||
<span class="sd"> :param samples: number of sampling points (default = 10)</span>
|
||||
<span class="sd"> :type samples: int</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> s = \frac{x - x_1}{L} \\</span>
|
||||
<span class="sd"> x = s\,L + x_1</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">L</span> <span class="o">=</span> <span class="n">scale_x</span>
|
||||
<span class="n">Lp</span> <span class="o">=</span> <span class="n">L</span> <span class="o">+</span> <span class="n">rhd</span> <span class="o">-</span> <span class="n">lhd</span>
|
||||
|
||||
<span class="c1"># x=[0,1] in non-dimensional coordinates</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="n">samples</span><span class="p">)</span>
|
||||
<span class="n">N1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">3</span>
|
||||
<span class="n">N2</span> <span class="o">=</span> <span class="p">(</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="n">Lp</span>
|
||||
<span class="n">N3</span> <span class="o">=</span> <span class="mi">3</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">3</span>
|
||||
<span class="n">N4</span> <span class="o">=</span> <span class="p">(</span> <span class="o">-</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="n">Lp</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">*</span><span class="n">Lp</span>
|
||||
|
||||
|
||||
<span class="c1"># x=[0,L] in global coordinates</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Lp</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="n">samples</span><span class="p">)</span>
|
||||
<span class="n">N1</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">3</span>
|
||||
<span class="n">N2</span> <span class="o">=</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">Lp</span> <span class="o">+</span> <span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">2</span>
|
||||
<span class="n">N3</span> <span class="o">=</span> <span class="mi">3</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">3</span>
|
||||
<span class="n">N4</span> <span class="o">=</span> <span class="o">-</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">Lp</span> <span class="o">+</span> <span class="n">x</span><span class="o">**</span><span class="mi">3</span><span class="o">/</span><span class="n">Lp</span><span class="o">**</span><span class="mi">2</span>
|
||||
|
||||
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">N1</span><span class="o">*</span><span class="n">lvd</span> <span class="o">+</span> <span class="n">N2</span><span class="o">*</span><span class="n">lr</span> <span class="o">+</span> <span class="n">N3</span><span class="o">*</span><span class="n">rvd</span> <span class="o">+</span> <span class="n">N4</span><span class="o">*</span><span class="n">rr</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">lhd</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">v</span><span class="o">*</span><span class="n">scale_y</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># matplotlib format, return lists for x and y</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<div class="viewcode-block" id="line"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.line">[docs]</a><span class="k">def</span> <span class="nf">line</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
|
||||
<span class="sd">"""Line defined by two end points.</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> y = \\frac{y_2-y_1}{x_2-x_1}(x-x_1) + y_1</span>
|
||||
|
||||
<span class="sd"> :param point1: one end point</span>
|
||||
<span class="sd"> :type point1: tuple</span>
|
||||
<span class="sd"> :param point2: other end point</span>
|
||||
<span class="sd"> :type point2: tuple</span>
|
||||
<span class="sd"> :param samples: number of sampling points (default = 2)</span>
|
||||
<span class="sd"> :type samples: int</span>
|
||||
|
||||
<span class="sd"> :returns: ((point1_x, point2_x), (points1_y, point2_y)) or</span>
|
||||
<span class="sd"> ([sample_point1_x, sample_point2_x, ...],</span>
|
||||
<span class="sd"> [sample_points1_y, sample_point2_y, ...])</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> :Example:</span>
|
||||
|
||||
<span class="sd"> >>> x, y = line((0, 0), (1, 0))</span>
|
||||
<span class="sd"> >>> print(x, y)</span>
|
||||
<span class="sd"> ((0, 1), (0, 0))</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">p1x</span><span class="p">,</span> <span class="n">p1y</span> <span class="o">=</span> <span class="n">point1</span>
|
||||
<span class="n">p2x</span><span class="p">,</span> <span class="n">p2y</span> <span class="o">=</span> <span class="n">point2</span>
|
||||
|
||||
<span class="n">denominator</span> <span class="o">=</span> <span class="p">(</span><span class="n">p1x</span> <span class="o">-</span> <span class="n">p2x</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">samples</span> <span class="o">></span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">denominator</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">p1x</span><span class="p">,</span> <span class="n">p2x</span><span class="p">,</span> <span class="n">samples</span><span class="p">)</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="p">(</span><span class="n">p1y</span> <span class="o">-</span> <span class="n">p2y</span><span class="p">)</span> <span class="o">/</span> <span class="n">denominator</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2y</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">*</span><span class="n">p1y</span><span class="p">)</span> <span class="o">/</span> <span class="n">denominator</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">a</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">b</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">p1x</span><span class="p">,</span> <span class="n">p2x</span><span class="p">),</span> <span class="p">(</span><span class="n">p1y</span><span class="p">,</span> <span class="n">p2y</span><span class="p">)</span> <span class="c1"># matplotlib format</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="cubic"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.cubic">[docs]</a><span class="k">def</span> <span class="nf">cubic</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">angle1</span><span class="p">,</span> <span class="n">point2</span><span class="p">,</span> <span class="n">angle2</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
|
||||
<span class="sd">"""Cubic line defined by two end points and the rotation in radians</span>
|
||||
<span class="sd"> at the points.</span>
|
||||
|
||||
<span class="sd"> :param point1: one end point</span>
|
||||
<span class="sd"> :type point1: tuple</span>
|
||||
<span class="sd"> :param angle1: the slope at the one end point</span>
|
||||
<span class="sd"> :type angle1: int or float</span>
|
||||
<span class="sd"> :param point2: other end point</span>
|
||||
<span class="sd"> :type point2: tuple</span>
|
||||
<span class="sd"> :param angle2: the slope at the other end point</span>
|
||||
<span class="sd"> :type angle2: int or float</span>
|
||||
<span class="sd"> :param samples: number of sampling points (default = 10)</span>
|
||||
<span class="sd"> :type samples: int</span>
|
||||
|
||||
<span class="sd"> :returns: ([sample_point1_x, sample_point2_x, ...],</span>
|
||||
<span class="sd"> [sample_points1_y, sample_point2_y, ...])</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">p1x</span><span class="p">,</span> <span class="n">p1y</span> <span class="o">=</span> <span class="n">point1</span>
|
||||
<span class="n">p2x</span><span class="p">,</span> <span class="n">p2y</span> <span class="o">=</span> <span class="n">point2</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">p1x</span><span class="p">,</span> <span class="n">p2x</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="n">samples</span><span class="p">)</span>
|
||||
|
||||
<span class="n">p1ys</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">tan</span><span class="p">(</span><span class="n">angle1</span><span class="p">)</span>
|
||||
<span class="n">p2ys</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">tan</span><span class="p">(</span><span class="n">angle2</span><span class="p">)</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="p">(</span><span class="n">p1x</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">p1y</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">p2y</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">p1x</span><span class="o">**</span><span class="mi">3</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p1y</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2y</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p1y</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2y</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">p1x</span><span class="o">**</span><span class="mi">3</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="p">(</span><span class="n">p1x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">-</span> <span class="mi">2</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="mi">6</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p1y</span> <span class="o">+</span> <span class="mi">6</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2y</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p1ys</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">p1x</span><span class="o">**</span><span class="mi">3</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p2y</span> <span class="o">-</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2ys</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span><span class="o">*</span><span class="n">p2y</span> <span class="o">+</span> <span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p1ys</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p1y</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="o">*</span><span class="n">p1y</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">p1x</span><span class="o">**</span><span class="mi">3</span> <span class="o">-</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">p2x</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">p1x</span><span class="o">*</span><span class="n">p2x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="n">p2x</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">a</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">3</span> <span class="o">+</span> <span class="n">b</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">c</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">d</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="cubic_deg"><a class="viewcode-back" href="../../pylib.html#pylib.geometry.cubic_deg">[docs]</a><span class="k">def</span> <span class="nf">cubic_deg</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">angle1</span><span class="p">,</span> <span class="n">point2</span><span class="p">,</span> <span class="n">angle2</span><span class="p">):</span>
|
||||
<span class="sd">"""Cubic line defined by two end points and the roation in degree</span>
|
||||
<span class="sd"> at the points.</span>
|
||||
|
||||
<span class="sd"> :param point1: one end point</span>
|
||||
<span class="sd"> :type point1: tuple</span>
|
||||
<span class="sd"> :param angle1: the slope at the one end point</span>
|
||||
<span class="sd"> :type angle1: int or float</span>
|
||||
<span class="sd"> :param point2: other end point</span>
|
||||
<span class="sd"> :type point2: tuple</span>
|
||||
<span class="sd"> :param angle2: the slope at the other end point</span>
|
||||
<span class="sd"> :type angle2: int or float</span>
|
||||
|
||||
<span class="sd"> :returns: ([sample_point1_x, sample_point2_x, ...],</span>
|
||||
<span class="sd"> [sample_points1_y, sample_point2_y, ...])</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`cubic`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">cubic</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">angle1</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">180</span><span class="p">,</span> <span class="n">point2</span><span class="p">,</span> <span class="n">angle2</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mi">180</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
185
docs/build/html/_modules/pylib/geometry_plot.html
vendored
Normal file
185
docs/build/html/_modules/pylib/geometry_plot.html
vendored
Normal file
@@ -0,0 +1,185 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.geometry_plot — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.geometry_plot</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""2D geometry plotter using matplotlib (pylab).</span>
|
||||
|
||||
<span class="sd">:Date: 2019-08-20</span>
|
||||
|
||||
<span class="sd">.. module:: geometry_plot</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Geometry plotting.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">pylab</span>
|
||||
<span class="kn">from</span> <span class="nn">geometry</span> <span class="k">import</span> <span class="p">(</span>
|
||||
<span class="n">distance</span><span class="p">,</span> <span class="n">angle</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">interpolate_hermite</span><span class="p">,</span> <span class="n">rotate_xy</span><span class="p">,</span> <span class="n">translate_xy</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">pylab</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s1">'dark_background'</span><span class="p">)</span>
|
||||
<span class="n">pylab</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'grid.color'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'gray'</span>
|
||||
|
||||
<span class="c1"># The kwargs are Line2D properties:</span>
|
||||
<span class="c1"># https://matplotlib.org/3.1.1/_modules/matplotlib/lines.html#Line2D</span>
|
||||
<span class="c1"># https://matplotlib.org/devdocs/_modules/matplotlib/lines.html#Line2D</span>
|
||||
<span class="n">pylab_Line2D_properties</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s1">'linewidth'</span><span class="p">,</span> <span class="s1">'linestyle'</span><span class="p">,</span> <span class="s1">'color'</span><span class="p">,</span>
|
||||
<span class="s1">'marker'</span><span class="p">,</span> <span class="s1">'markersize'</span><span class="p">,</span> <span class="s1">'markeredgewidth'</span><span class="p">,</span> <span class="s1">'markeredgecolor'</span><span class="p">,</span>
|
||||
<span class="s1">'markerfacecolor'</span><span class="p">,</span> <span class="s1">'markerfacecoloralt'</span><span class="p">,</span>
|
||||
<span class="s1">'fillstyle'</span><span class="p">,</span> <span class="s1">'antialiased'</span><span class="p">,</span>
|
||||
<span class="s1">'dash_capstyle'</span><span class="p">,</span> <span class="s1">'solid_capstyle'</span><span class="p">,</span>
|
||||
<span class="s1">'dash_joinstyle'</span><span class="p">,</span> <span class="s1">'solid_joinstyle'</span><span class="p">,</span>
|
||||
<span class="s1">'pickradius'</span><span class="p">,</span> <span class="s1">'drawstyle'</span><span class="p">,</span> <span class="s1">'markevery'</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="plot_lines"><a class="viewcode-back" href="../../pylib.html#pylib.geometry_plot.plot_lines">[docs]</a><span class="k">def</span> <span class="nf">plot_lines</span><span class="p">(</span><span class="n">lns</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s1">'color'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="c1"># Colors from "tab10" colormap</span>
|
||||
<span class="n">cmap</span> <span class="o">=</span> <span class="n">pylab</span><span class="o">.</span><span class="n">get_cmap</span><span class="p">(</span><span class="s2">"tab10"</span><span class="p">)</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmap</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Colors from color cycle</span>
|
||||
<span class="n">cycle</span> <span class="o">=</span> <span class="n">pylab</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'axes.prop_cycle'</span><span class="p">]</span><span class="o">.</span><span class="n">by_key</span><span class="p">()[</span><span class="s1">'color'</span><span class="p">]</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="n">cycle</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Colors from CN notation (same as the first 10 colors from the color cycle)</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"C0"</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">ln</span> <span class="ow">in</span> <span class="n">lns</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">line</span><span class="p">(</span><span class="o">*</span><span class="n">ln</span><span class="p">)</span>
|
||||
<span class="n">pylab</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="plot_cubic_lines"><a class="viewcode-back" href="../../pylib.html#pylib.geometry_plot.plot_cubic_lines">[docs]</a><span class="k">def</span> <span class="nf">plot_cubic_lines</span><span class="p">(</span><span class="n">lns</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s1">'color'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="c1"># Colors from "tab10" colormap</span>
|
||||
<span class="n">cmap</span> <span class="o">=</span> <span class="n">pylab</span><span class="o">.</span><span class="n">get_cmap</span><span class="p">(</span><span class="s2">"tab10"</span><span class="p">)</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmap</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Colors from color cycle</span>
|
||||
<span class="n">cycle</span> <span class="o">=</span> <span class="n">pylab</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'axes.prop_cycle'</span><span class="p">]</span><span class="o">.</span><span class="n">by_key</span><span class="p">()[</span><span class="s1">'color'</span><span class="p">]</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="n">cycle</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Colors from CN notation (same as the first 10 colors from the color cycle)</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'color'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"C0"</span>
|
||||
|
||||
<span class="n">factor</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="s1">'factor'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">factor</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'factor'</span><span class="p">]</span>
|
||||
|
||||
<span class="n">samples</span> <span class="o">=</span> <span class="mi">10</span>
|
||||
<span class="k">if</span> <span class="s1">'samples'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">samples</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'samples'</span><span class="p">]</span>
|
||||
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">pylab_Line2D_properties</span><span class="p">}</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">ln</span> <span class="ow">in</span> <span class="n">lns</span><span class="p">:</span>
|
||||
<span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">ln</span>
|
||||
<span class="n">L</span> <span class="o">=</span> <span class="n">distance</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span>
|
||||
<span class="n">ang</span> <span class="o">=</span> <span class="n">angle</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">interpolate_hermite</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">d</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
|
||||
<span class="n">scale_x</span><span class="o">=</span><span class="n">L</span><span class="p">,</span> <span class="n">scale_y</span><span class="o">=</span><span class="n">factor</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="n">samples</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">rotate_xy</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">ang</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">translate_xy</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="n">pylab</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
116
docs/build/html/_modules/pylib/mathematics.html
vendored
Normal file
116
docs/build/html/_modules/pylib/mathematics.html
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.mathematics — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.mathematics</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Mathematical functions.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-10-30</span>
|
||||
|
||||
<span class="sd">.. module:: mathematics</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Mathematical functions.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="k">import</span> <span class="n">gcd</span>
|
||||
|
||||
<div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.lcm">[docs]</a><span class="k">def</span> <span class="nf">lcm</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
|
||||
<span class="sd">"""Compute the lowest common multiple of a and b"""</span>
|
||||
<span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">*</span><span class="n">b</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
196
docs/build/html/_modules/pylib/numerical/fit.html
vendored
Normal file
196
docs/build/html/_modules/pylib/numerical/fit.html
vendored
Normal file
@@ -0,0 +1,196 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.numerical.fit — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.numerical.fit</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Function and approximation.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-10-15</span>
|
||||
|
||||
<span class="sd">.. module:: fit</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Function and approximation.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">print_function</span>
|
||||
<span class="kn">from</span> <span class="nn">pylab</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">argmax</span><span class="p">,</span> <span class="n">gradient</span><span class="p">,</span> <span class="n">exp</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">,</span> <span class="n">log</span><span class="p">,</span> <span class="n">linspace</span>
|
||||
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="k">import</span> <span class="n">curve_fit</span>
|
||||
|
||||
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.fit.gauss">[docs]</a><span class="k">def</span> <span class="nf">gauss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||
<span class="sd">"""Gauss distribution function.</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> f(x)=ae^{-(x-b)^{2}/(2c^{2})}</span>
|
||||
|
||||
<span class="sd"> :param x: positions where the gauss function will be calculated</span>
|
||||
<span class="sd"> :type x: int or float or list or numpy.ndarray</span>
|
||||
<span class="sd"> :param p: gauss parameters [a, b, c, d]:</span>
|
||||
|
||||
<span class="sd"> * a -- amplitude (:math:`\\int y \\,\\mathrm{d}x=1 \\Leftrightarrow a=1/(c\\sqrt{2\\pi})` )</span>
|
||||
<span class="sd"> * b -- expected value :math:`\\mu` (position of maximum, default = 0)</span>
|
||||
<span class="sd"> * c -- standard deviation :math:`\\sigma` (variance :math:`\\sigma^2=c^2`)</span>
|
||||
<span class="sd"> * d -- vertical offset (default = 0)</span>
|
||||
<span class="sd"> :type p: list</span>
|
||||
|
||||
<span class="sd"> :returns: gauss values at given positions x</span>
|
||||
<span class="sd"> :rtype: numpy.ndarray</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># cast e. g. list to numpy array</span>
|
||||
<span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">p</span>
|
||||
<span class="k">return</span> <span class="n">a</span><span class="o">*</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">b</span><span class="p">)</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="p">(</span><span class="mf">2.</span> <span class="o">*</span> <span class="n">c</span><span class="o">**</span><span class="mf">2.</span><span class="p">))</span> <span class="o">+</span> <span class="n">d</span></div>
|
||||
|
||||
<div class="viewcode-block" id="gauss_fit"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.fit.gauss_fit">[docs]</a><span class="k">def</span> <span class="nf">gauss_fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">x_fit</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""Fit Gauss distribution function to data.</span>
|
||||
|
||||
<span class="sd"> :param x: positions</span>
|
||||
<span class="sd"> :type x: int or float or list or numpy.ndarray</span>
|
||||
<span class="sd"> :param y: values</span>
|
||||
<span class="sd"> :type y: int or float or list or numpy.ndarray</span>
|
||||
<span class="sd"> :param e: error values (default = None)</span>
|
||||
<span class="sd"> :type e: int or float or list or numpy.ndarray</span>
|
||||
<span class="sd"> :param x_fit: positions of fitted function (default = None, if None then x</span>
|
||||
<span class="sd"> is used)</span>
|
||||
<span class="sd"> :type x_fit: int or float or list or numpy.ndarray</span>
|
||||
<span class="sd"> :param verbose: verbose information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> :returns:</span>
|
||||
<span class="sd"> * numpy.ndarray -- fitted values (y_fit)</span>
|
||||
<span class="sd"> * numpy.ndarray -- parameters of gauss distribution function (popt:</span>
|
||||
<span class="sd"> amplitude a, expected value :math:`\\mu`, standard deviation</span>
|
||||
<span class="sd"> :math:`\\sigma`, vertical offset d)</span>
|
||||
<span class="sd"> * numpy.float64 -- full width at half maximum (FWHM)</span>
|
||||
<span class="sd"> :rtype: tuple</span>
|
||||
|
||||
<span class="sd"> .. seealso::</span>
|
||||
<span class="sd"> :meth:`gauss`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># cast e. g. list to numpy array</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="c1"># cast e. g. list to numpy array</span>
|
||||
<span class="n">y_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">y_max_pos</span> <span class="o">=</span> <span class="n">argmax</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">x_y_max</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">y_max_pos</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># starting parameter</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="p">[</span><span class="n">y_max</span><span class="p">,</span> <span class="n">x_y_max</span><span class="p">,</span> <span class="o">.</span><span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'p0:'</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">p0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">e</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">popt</span><span class="p">,</span> <span class="n">pcov</span> <span class="o">=</span> <span class="n">curve_fit</span><span class="p">(</span><span class="n">gauss</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">p0</span><span class="o">=</span><span class="n">p0</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">popt</span><span class="p">,</span> <span class="n">pcov</span> <span class="o">=</span> <span class="n">curve_fit</span><span class="p">(</span><span class="n">gauss</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">p0</span><span class="o">=</span><span class="n">p0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'popt:'</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">popt</span><span class="p">)</span>
|
||||
<span class="c1">#print(pcov)</span>
|
||||
|
||||
<span class="n">FWHM</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">log</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">*</span><span class="n">popt</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'FWHM'</span><span class="p">,</span> <span class="n">FWHM</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">x_fit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">x_fit</span> <span class="o">=</span> <span class="n">x</span>
|
||||
<span class="n">y_fit</span> <span class="o">=</span> <span class="n">gauss</span><span class="p">(</span><span class="n">x_fit</span><span class="p">,</span> <span class="o">*</span><span class="n">popt</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">y_fit</span><span class="p">,</span> <span class="n">popt</span><span class="p">,</span> <span class="n">FWHM</span></div>
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
250
docs/build/html/_modules/pylib/numerical/integration.html
vendored
Normal file
250
docs/build/html/_modules/pylib/numerical/integration.html
vendored
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.numerical.integration — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.numerical.integration</h1><div class="highlight"><pre>
|
||||
<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Numerical integration, numerical quadrature.</span>
|
||||
|
||||
<span class="sd">de: numerische Integration, numerische Quadratur.</span>
|
||||
|
||||
<span class="sd">:Date: 2015-10-15</span>
|
||||
|
||||
<span class="sd">.. module:: integration</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Numerical integration.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">linspace</span><span class="p">,</span> <span class="n">trapz</span><span class="p">,</span> <span class="n">zeros</span>
|
||||
|
||||
<div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.integration.trapez">[docs]</a><span class="k">def</span> <span class="nf">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">save_values</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""</span>
|
||||
<span class="sd"> Integration of :math:`f(x)` using the trapezoidal rule</span>
|
||||
<span class="sd"> (Simpson's rule, Kepler's rule).</span>
|
||||
|
||||
<span class="sd"> de: Trapezregel, Simpsonregel (Thomas Simpson), Keplersche</span>
|
||||
<span class="sd"> Fassregel (Johannes Kepler)</span>
|
||||
|
||||
<span class="sd"> :param f: function to integrate.</span>
|
||||
<span class="sd"> :type f: function or list</span>
|
||||
<span class="sd"> :param a: lower limit of integration (default = 0).</span>
|
||||
<span class="sd"> :type a: float</span>
|
||||
<span class="sd"> :param b: upper limit of integration (default = 1).</span>
|
||||
<span class="sd"> :type b: float</span>
|
||||
<span class="sd"> :param N: specify the number of subintervals.</span>
|
||||
<span class="sd"> :type N: int</span>
|
||||
<span class="sd"> :param x: variable of integration, necessary if f is a list</span>
|
||||
<span class="sd"> (default = None).</span>
|
||||
<span class="sd"> :type x: list</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> :returns: the definite integral as approximated by trapezoidal</span>
|
||||
<span class="sd"> rule.</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
|
||||
<span class="sd"> The trapezoidal rule approximates the integral by the area of a</span>
|
||||
<span class="sd"> trapezoid with base h=b-a and sides equal to the values of the</span>
|
||||
<span class="sd"> integrand at the two end points.</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> f_n(x) = f(a)+\frac{f(b)-f(a)}{b-a}(x-a)</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> I &= \int\limits_a^b f(x) \,\mathrm{d}x \\</span>
|
||||
<span class="sd"> I &\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\</span>
|
||||
<span class="sd"> &= \int\limits_a^b</span>
|
||||
<span class="sd"> \left( f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \right)</span>
|
||||
<span class="sd"> \mathrm{d}x \\</span>
|
||||
<span class="sd"> &= \left.\left( f(a)-a\frac{f(b)-f(a)}{b-a} \right)</span>
|
||||
<span class="sd"> x \right\vert_a^b +</span>
|
||||
<span class="sd"> \left. \frac{f(b)-f(a)}{b-a} \frac{x^2}{2}</span>
|
||||
<span class="sd"> \right\vert_a^b \\</span>
|
||||
<span class="sd"> &= \frac{b-a}{2}\left[f(a)+f(b)\right]</span>
|
||||
|
||||
<span class="sd"> The composite trapezium rule. If the interval is divided into n</span>
|
||||
<span class="sd"> segments (not necessarily equal)</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> a = x_0 \leq x_1 \leq x_2 \leq \ldots \leq x_n = b</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> I &\approx \sum\limits_{i=0}^{n-1} \frac{1}{2} (x_{i+1}-x_i)</span>
|
||||
<span class="sd"> \left[f(x_{i+1})+f(x_i)\right] \\</span>
|
||||
|
||||
<span class="sd"> Special Case (Equaliy spaced base points)</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> x_{i+1}-x_i = h \quad \forall i</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> I \approx h \left\{ \frac{1}{2} \left[f(x_0)+f(x_n)\right] +</span>
|
||||
<span class="sd"> \sum\limits_{i=1}^{n-1} f(x_i) \right\}</span>
|
||||
|
||||
<span class="sd"> .. rubric:: Example</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> I &= \int\limits_a^b f(x) \,\mathrm{d}x \\</span>
|
||||
<span class="sd"> f(x) &= x^2 \\</span>
|
||||
<span class="sd"> a &= 0 \\</span>
|
||||
<span class="sd"> b &= 1</span>
|
||||
|
||||
<span class="sd"> analytical solution</span>
|
||||
|
||||
<span class="sd"> .. math::</span>
|
||||
<span class="sd"> I = \int\limits_{0}^{1} x^2 \,\mathrm{d}x</span>
|
||||
<span class="sd"> = \left. \frac{1}{3} x^3 \right\vert_0^1</span>
|
||||
<span class="sd"> = \frac{1}{3}</span>
|
||||
|
||||
<span class="sd"> numerical solution</span>
|
||||
|
||||
<span class="sd"> >>> f = lambda(x): x**2</span>
|
||||
<span class="sd"> >>> trapez(f, 0, 1, 1)</span>
|
||||
<span class="sd"> 0.5</span>
|
||||
<span class="sd"> >>> trapez(f, 0, 1, 10)</span>
|
||||
<span class="sd"> 0.3350000000000001</span>
|
||||
<span class="sd"> >>> trapez(f, 0, 1, 100)</span>
|
||||
<span class="sd"> 0.33335000000000004</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
|
||||
<span class="c1"># f is function or 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="c1"># h width of each subinterval</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">/</span><span class="n">N</span>
|
||||
|
||||
<span class="c1"># x variable of integration</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">linspace</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">save_values</span><span class="p">:</span>
|
||||
<span class="c1"># ff contribution from the points</span>
|
||||
<span class="n">ff</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">ff</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">n</span><span class="p">])</span>
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="p">(</span><span class="n">ff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">/</span><span class="mf">2.</span><span class="o">+</span><span class="nb">sum</span><span class="p">(</span><span class="n">ff</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="n">N</span><span class="p">])</span><span class="o">+</span><span class="n">ff</span><span class="p">[</span><span class="n">N</span><span class="p">]</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span><span class="o">*</span><span class="n">h</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">TL</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="n">TR</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">N</span><span class="p">])</span>
|
||||
<span class="n">TI</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
|
||||
<span class="n">TI</span> <span class="o">=</span> <span class="n">TI</span> <span class="o">+</span> <span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">n</span><span class="p">])</span>
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="p">(</span><span class="n">TL</span><span class="o">/</span><span class="mf">2.</span><span class="o">+</span><span class="n">TI</span><span class="o">+</span><span class="n">TR</span><span class="o">/</span><span class="mf">2.</span><span class="p">)</span><span class="o">*</span><span class="n">h</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">f</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">N</span><span class="p">):</span>
|
||||
<span class="n">T</span> <span class="o">=</span> <span class="n">T</span> <span class="o">+</span> <span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="n">n</span><span class="p">])</span><span class="o">/</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">f</span><span class="p">[</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">f</span><span class="p">[</span><span class="n">n</span><span class="p">])</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">T</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">T</span></div>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
<span class="n">func</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span>
|
||||
<span class="n">trapez</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1e6</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1">#print(trapz(func, linspace(0,1,10)))</span>
|
||||
|
||||
<span class="n">trapez</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">9</span><span class="p">],</span> <span class="n">x</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1">#print(trapz([0,1,4,9]))</span>
|
||||
|
||||
<span class="n">trapez</span><span class="p">([</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="n">x</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">trapez</span><span class="p">([</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
540
docs/build/html/_modules/pylib/numerical/ode.html
vendored
Normal file
540
docs/build/html/_modules/pylib/numerical/ode.html
vendored
Normal file
@@ -0,0 +1,540 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.numerical.ode — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.numerical.ode</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Numerical solver of ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">Solves the initial value problem for systems of first order</span>
|
||||
<span class="sd">ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">:Date: 2015-09-21</span>
|
||||
|
||||
<span class="sd">.. module:: ode</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Numerical solver.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">isnan</span><span class="p">,</span> <span class="nb">sum</span><span class="p">,</span> <span class="n">zeros</span><span class="p">,</span> <span class="n">dot</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span>
|
||||
|
||||
<div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.e1">[docs]</a><span class="k">def</span> <span class="nf">e1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Explicit first-order method /</span>
|
||||
<span class="sd"> (standard, or forward) Euler method /</span>
|
||||
<span class="sd"> Runge-Kutta 1st order method.</span>
|
||||
|
||||
<span class="sd"> de:</span>
|
||||
<span class="sd"> Euler'sche Polygonzugverfahren / explizite Euler-Verfahren /</span>
|
||||
<span class="sd"> Euler-Cauchy-Verfahren / Euler-vorwärts-Verfahren</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
|
||||
<span class="sd"> Approximate the solution of the initial value problem</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x} &= f(t,x) \\</span>
|
||||
<span class="sd"> x(t_0) &= x_0</span>
|
||||
|
||||
<span class="sd"> Choose a value h for the size of every step and set</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> t_i = t_0 + i h ~,\quad i=1,2,\ldots,n</span>
|
||||
|
||||
<span class="sd"> The derivative of the solution is approximated as the forward</span>
|
||||
<span class="sd"> difference equation</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x}_i = f(t_i, x_i) = \frac{x_{i+1} - x_i}{t_{i+1}-t_i}</span>
|
||||
|
||||
<span class="sd"> Therefore one step :math:`h` of the Euler method from</span>
|
||||
<span class="sd"> :math:`t_i` to :math:`t_{i+1}` is</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i+1} &= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\</span>
|
||||
<span class="sd"> x_{i+1} &= x_i + h f(t_i, x_i) \\</span>
|
||||
|
||||
<span class="sd"> Example 1:</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> m\ddot{u} + d\dot{u} + ku = f(t) \\</span>
|
||||
<span class="sd"> \ddot{u} = m^{-1}(f(t) - d\dot{u} - ku) \\</span>
|
||||
|
||||
<span class="sd"> with</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_1 &= u &\quad \dot{x}_1 = \dot{u} = x_2 \\</span>
|
||||
<span class="sd"> x_2 &= \dot{u} &\quad \dot{x}_2 = \ddot{u} \\</span>
|
||||
|
||||
<span class="sd"> becomes</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x}_1 &= x_2 \\</span>
|
||||
<span class="sd"> \dot{x}_2 &= m^{-1}(f(t) - d x_2 - k x_1) \\</span>
|
||||
|
||||
<span class="sd"> or</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x} &= f(t,x) \\</span>
|
||||
<span class="sd"> \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &=</span>
|
||||
<span class="sd"> \begin{bmatrix} x_2 \\ m^{-1}(f(t) - d x_2 - k x_1)</span>
|
||||
<span class="sd"> \end{bmatrix} \\</span>
|
||||
<span class="sd"> &=</span>
|
||||
<span class="sd"> \begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +</span>
|
||||
<span class="sd"> \begin{bmatrix} 0 & 1 \\ -m^{-1} k & -m^{-1} d \end{bmatrix}</span>
|
||||
<span class="sd"> \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}</span>
|
||||
|
||||
<span class="sd"> Example 2:</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> m(u)\ddot{u} + d(u,\dot{u})\dot{u} + k(u)u = f(t) \\</span>
|
||||
<span class="sd"> \ddot{u} = m^{-1}(u)(f(t) - d(u,\dot{u})\dot{u} - k(u)u) \\</span>
|
||||
|
||||
<span class="sd"> with</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_1 &= u &\quad \dot{x}_1 = \dot{u} = x_2 \\</span>
|
||||
<span class="sd"> x_2 &= \dot{u} &\quad \dot{x}_2 = \ddot{u} \\</span>
|
||||
|
||||
<span class="sd"> becomes</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x}_1 &= x_2 \\</span>
|
||||
<span class="sd"> \dot{x}_2 &=</span>
|
||||
<span class="sd"> m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1) \\</span>
|
||||
|
||||
<span class="sd"> or</span>
|
||||
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \dot{x} &= f(t,x) \\</span>
|
||||
<span class="sd"> \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &=</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> x_2 \\ m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1)</span>
|
||||
<span class="sd"> \end{bmatrix} \\</span>
|
||||
<span class="sd"> &=</span>
|
||||
<span class="sd"> \begin{bmatrix} 0 \\ m^{-1}(x_1) f(t) \end{bmatrix} +</span>
|
||||
<span class="sd"> \begin{bmatrix}</span>
|
||||
<span class="sd"> 0 & 1 \\ -m^{-1}(x_1) k(x_1) & -m^{-1} d(x_1,x_2)</span>
|
||||
<span class="sd"> \end{bmatrix}</span>
|
||||
<span class="sd"> \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}</span>
|
||||
|
||||
<span class="sd"> The Euler method is a first-order method, which means that the</span>
|
||||
<span class="sd"> local error (error per step) is proportional to the square of</span>
|
||||
<span class="sd"> the step size, and the global error (error at a given time) is</span>
|
||||
<span class="sd"> proportional to the step size.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">dxdt</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span> <span class="o">+</span> <span class="n">dxdt</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicit '</span> <span class="o">+</span>
|
||||
<span class="s1">'first-order method (Euler / Runge-Kutta) was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
|
||||
<div class="viewcode-block" id="e2"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.e2">[docs]</a><span class="k">def</span> <span class="nf">e2</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Explicit second-order method / Runge-Kutta 2nd order method.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">k_1</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="n">k_2</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="o">*</span><span class="n">k_1</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span> <span class="o">+</span> <span class="n">k_2</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicit '</span> <span class="o">+</span>
|
||||
<span class="s1">'2th-order method (Runge-Kutta) was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
|
||||
<div class="viewcode-block" id="e4"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.e4">[docs]</a><span class="k">def</span> <span class="nf">e4</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Explicit fourth-order method / Runge-Kutta 4th order method.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span> <span class="c1"># Calculation loop</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">k_1</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="n">k_2</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="o">*</span><span class="n">k_1</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="n">k_3</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="o">*</span><span class="n">k_2</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">+</span><span class="mf">0.5</span><span class="o">*</span><span class="n">Dt</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="n">k_4</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">+</span><span class="n">k_3</span><span class="o">*</span><span class="n">Dt</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">+</span><span class="n">Dt</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span> <span class="o">+</span> <span class="mf">1.</span><span class="o">/</span><span class="mi">6</span><span class="o">*</span><span class="p">(</span><span class="n">k_1</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">k_2</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">k_3</span><span class="o">+</span><span class="n">k_4</span><span class="p">)</span><span class="o">*</span><span class="n">Dt</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicit '</span> <span class="o">+</span>
|
||||
<span class="s1">'4th-order method (Runge-Kutta) was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div>
|
||||
|
||||
<div class="viewcode-block" id="fpi"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.fpi">[docs]</a><span class="k">def</span> <span class="nf">fpi</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">xi</span><span class="p">,</span> <span class="n">ti</span><span class="p">,</span> <span class="n">ti1</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Fixed-point iteration.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param f: the function to iterate :math:`f = \dot{x}(x,t)`</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param xi: initial condition :math:`x_i`</span>
|
||||
<span class="sd"> :type xi: list</span>
|
||||
<span class="sd"> :param ti: time :math:`t_i`</span>
|
||||
<span class="sd"> :type ti: float</span>
|
||||
<span class="sd"> :param ti1: time :math:`t_{i+1}`</span>
|
||||
<span class="sd"> :type ti1: float</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param max_iterations: maximum number of iterations</span>
|
||||
<span class="sd"> :type max_iterations: int</span>
|
||||
<span class="sd"> :param tol: tolerance against residuum :math:`\varepsilon`</span>
|
||||
<span class="sd"> (default = 1e-9)</span>
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: :math:`x_{i}`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i,j=0} = x_{i}</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i,j+1} = x_i + \dot{x}(x_{i,j}, t_{i+1})\cdot(t_{i+1}-t_i)</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> \text{residuum} = \frac{\lVert x_{i,j+1}-x_{i,j}\rVert}</span>
|
||||
<span class="sd"> {\lVert x_{i,j+1} \rVert} < \varepsilon</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> .. math ::</span>
|
||||
<span class="sd"> x_{i} = x_{i,j=\text{end}}</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">xij</span> <span class="o">=</span> <span class="n">xi</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_iterations</span><span class="p">):</span>
|
||||
<span class="n">dxdt</span> <span class="o">=</span> <span class="n">array</span><span class="p">(</span><span class="n">f</span><span class="p">(</span><span class="n">xij</span><span class="p">,</span> <span class="n">ti1</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="n">xij1</span> <span class="o">=</span> <span class="n">xi</span> <span class="o">+</span> <span class="n">dxdt</span> <span class="o">*</span> <span class="p">(</span><span class="n">ti1</span><span class="o">-</span><span class="n">ti</span><span class="p">)</span>
|
||||
<span class="n">residuum</span> <span class="o">=</span> <span class="n">norm</span><span class="p">(</span><span class="n">xij1</span><span class="o">-</span><span class="n">xij</span><span class="p">)</span><span class="o">/</span><span class="n">norm</span><span class="p">(</span><span class="n">xij1</span><span class="p">)</span>
|
||||
<span class="n">xij</span> <span class="o">=</span> <span class="n">xij1</span>
|
||||
<span class="k">if</span> <span class="n">residuum</span> <span class="o"><</span> <span class="n">tol</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="n">iterations</span> <span class="o">=</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span> <span class="c1"># number beginning with 1 therefore + 1</span>
|
||||
<span class="k">return</span> <span class="n">xij</span><span class="p">,</span> <span class="n">iterations</span></div>
|
||||
|
||||
<div class="viewcode-block" id="i1"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.i1">[docs]</a><span class="k">def</span> <span class="nf">i1</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Implicite first-order method / backward Euler method.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param max_iterations: maximum number of iterations</span>
|
||||
<span class="sd"> :type max_iterations: int</span>
|
||||
<span class="sd"> :param tol: tolerance against residuum (default = 1e-9)</span>
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> The backward Euler method has order one and is A-stable.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">iterations</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="c1"># x(i+1) = x(i) + f(x(i+1), t(i+1)), exact value of</span>
|
||||
<span class="c1"># f(x(i+1), t(i+1)) is not available therefore using</span>
|
||||
<span class="c1"># Newton-Raphson method</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<span class="n">xi</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
|
||||
<span class="n">xi</span><span class="p">,</span> <span class="n">iteration</span> <span class="o">=</span> <span class="n">fpi</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">xi</span><span class="p">,</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">max_iterations</span><span class="p">,</span>
|
||||
<span class="n">tol</span><span class="p">,</span> <span class="n">verbose</span><span class="p">)</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xi</span>
|
||||
<span class="n">iterations</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">iteration</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using implicite '</span> <span class="o">+</span>
|
||||
<span class="s1">'first-order method (Euler) was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">iterations</span></div>
|
||||
|
||||
<div class="viewcode-block" id="newmark_newtonraphson"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson">[docs]</a><span class="k">def</span> <span class="nf">newmark_newtonraphson</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">xp0</span><span class="p">,</span> <span class="n">xpp0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">gamma</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span>
|
||||
<span class="n">beta</span><span class="o">=.</span><span class="mi">25</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Newmark method.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param xp0: initial condition</span>
|
||||
<span class="sd"> :type xp0: list</span>
|
||||
<span class="sd"> :param xpp0: initial condition</span>
|
||||
<span class="sd"> :type xpp0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param gamma: newmark parameter for velocity (default = 0.5)</span>
|
||||
<span class="sd"> :type gamma: float</span>
|
||||
<span class="sd"> :param beta: newmark parameter for displacement (default = 0.25)</span>
|
||||
<span class="sd"> :type beta: float</span>
|
||||
<span class="sd"> :param max_iterations: maximum number of iterations</span>
|
||||
<span class="sd"> :type max_iterations: int</span>
|
||||
<span class="sd"> :param tol: tolerance against residuum (default = 1e-9)</span>
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">iterations</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">xp</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">xp0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">xpp</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">xpp0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xp0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="n">xpp</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xpp0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
|
||||
<span class="n">xi</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">xpi</span> <span class="o">=</span> <span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">xppi</span> <span class="o">=</span> <span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">xi</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">xpi</span>
|
||||
<span class="n">xpp1</span> <span class="o">=</span> <span class="n">xppi</span>
|
||||
<span class="n">j</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_iterations</span><span class="p">):</span> <span class="c1"># Fixed-point iteration</span>
|
||||
<span class="c1">#dxdt = array(f(t[i+1], x1, p))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="c1">#x11 = x[i,:] + dxdt*Dt</span>
|
||||
|
||||
<span class="n">N</span><span class="p">,</span> <span class="n">dN</span><span class="p">,</span> <span class="n">dNp</span><span class="p">,</span> <span class="n">dNpp</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">x1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">(),</span>
|
||||
<span class="n">xp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">(),</span> <span class="n">xpp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">(),</span>
|
||||
<span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">isnan</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">dN</span><span class="p">))</span> <span class="ow">or</span> <span class="n">isnan</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">dNp</span><span class="p">))</span> <span class="ow">or</span> <span class="n">isnan</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">dNpp</span><span class="p">)):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'divergiert'</span><span class="p">)</span>
|
||||
<span class="k">break</span>
|
||||
|
||||
<span class="n">xpp11</span> <span class="o">=</span> <span class="n">xpp1</span> <span class="o">-</span> <span class="n">dot</span><span class="p">(</span><span class="n">inv</span><span class="p">(</span><span class="n">dNpp</span><span class="p">),</span> <span class="p">(</span><span class="n">N</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">dN</span><span class="p">,</span> <span class="p">(</span><span class="n">x1</span><span class="o">-</span><span class="n">xi</span><span class="p">))</span> <span class="o">+</span> \
|
||||
<span class="n">dot</span><span class="p">(</span><span class="n">dNp</span><span class="p">,</span> <span class="p">(</span><span class="n">xp1</span><span class="o">-</span><span class="n">xpi</span><span class="p">))))</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">gamma</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">gamma</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">xi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="n">beta</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">beta</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
|
||||
<span class="n">residuum</span> <span class="o">=</span> <span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="o">-</span><span class="n">xpp1</span><span class="p">)</span><span class="o">/</span><span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="p">)</span>
|
||||
<span class="n">xpp1</span> <span class="o">=</span> <span class="n">xpp11</span>
|
||||
<span class="k">if</span> <span class="n">residuum</span> <span class="o"><</span> <span class="n">tol</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="n">iterations</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span>
|
||||
|
||||
<span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xpp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicite '</span> <span class="o">+</span>
|
||||
<span class="s1">'newmark method was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">xp</span><span class="p">,</span> <span class="n">xpp</span><span class="p">,</span> <span class="n">iterations</span></div>
|
||||
<span class="c1"># x = concatenate((x, xp, xpp), axis=1)</span>
|
||||
|
||||
<div class="viewcode-block" id="newmark_newtonraphson_rdk"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson_rdk">[docs]</a><span class="k">def</span> <span class="nf">newmark_newtonraphson_rdk</span><span class="p">(</span><span class="n">fnm</span><span class="p">,</span> <span class="n">x0</span><span class="p">,</span> <span class="n">xp0</span><span class="p">,</span> <span class="n">xpp0</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="n">gamma</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span>
|
||||
<span class="n">beta</span><span class="o">=.</span><span class="mi">25</span><span class="p">,</span> <span class="n">max_iterations</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">tol</span><span class="o">=</span><span class="mf">1e-9</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sa">r</span><span class="sd">"""Newmark method.</span>
|
||||
|
||||
<span class="sd"> :param f: the function to solve</span>
|
||||
<span class="sd"> :type f: function</span>
|
||||
<span class="sd"> :param x0: initial condition</span>
|
||||
<span class="sd"> :type x0: list</span>
|
||||
<span class="sd"> :param xp0: initial condition</span>
|
||||
<span class="sd"> :type xp0: list</span>
|
||||
<span class="sd"> :param xpp0: initial condition</span>
|
||||
<span class="sd"> :type xpp0: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function (thickness, diameter,</span>
|
||||
<span class="sd"> ...)</span>
|
||||
<span class="sd"> :param gamma: newmark parameter for velocity (default = 0.5)</span>
|
||||
<span class="sd"> :type gamma: float</span>
|
||||
<span class="sd"> :param beta: newmark parameter for displacement (default = 0.25)</span>
|
||||
<span class="sd"> :type beta: float</span>
|
||||
<span class="sd"> :param max_iterations: maximum number of iterations</span>
|
||||
<span class="sd"> :type max_iterations: int</span>
|
||||
<span class="sd"> :param tol: tolerance against residuum (default = 1e-9)</span>
|
||||
<span class="sd"> :type tol: float</span>
|
||||
<span class="sd"> :param verbose: print information (default = False)</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">iterations</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">xp</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">xp0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">xpp</span> <span class="o">=</span> <span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">xpp0</span><span class="p">)))</span> <span class="c1"># Preallocate array</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xp0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="n">xpp</span><span class="p">[</span><span class="mi">0</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xpp0</span> <span class="c1"># Initial condition gives solution at first t</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">Dt</span> <span class="o">=</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
|
||||
<span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span> <span class="o">=</span> <span class="n">fnm</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="p">,:],</span> <span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span>
|
||||
|
||||
<span class="n">xi</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">xpi</span> <span class="o">=</span> <span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">xppi</span> <span class="o">=</span> <span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">xi</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">xpi</span>
|
||||
<span class="n">xpp1</span> <span class="o">=</span> <span class="n">xppi</span>
|
||||
<span class="n">j</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_iterations</span><span class="p">):</span> <span class="c1"># Fixed-point iteration</span>
|
||||
<span class="c1">#dxdt = array(f(t[i+1], x1, p))</span>
|
||||
<span class="c1"># Approximate solution at next value of x</span>
|
||||
<span class="c1">#x11 = x[i,:] + dxdt*Dt</span>
|
||||
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="p">(</span><span class="n">rmx</span><span class="o">+</span><span class="n">rdx</span><span class="o">+</span><span class="n">rkx</span><span class="p">)</span><span class="o">*</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span> <span class="o">+</span> <span class="n">rdxp</span><span class="o">*</span><span class="n">Dt</span><span class="o">/</span><span class="mi">2</span> <span class="o">+</span> <span class="n">rmxpp</span>
|
||||
<span class="n">rp</span> <span class="o">=</span> <span class="n">f</span> <span class="o">-</span> <span class="p">(</span><span class="n">rm</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">rmx</span><span class="p">,</span> <span class="p">(</span><span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span><span class="o">+</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">xppi</span><span class="p">))</span> <span class="o">-</span> \
|
||||
<span class="n">dot</span><span class="p">(</span><span class="n">rmxpp</span><span class="p">,</span> <span class="n">xppi</span><span class="p">)</span> <span class="o">+</span> \
|
||||
<span class="n">rd</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">rdx</span><span class="p">,</span> <span class="p">(</span><span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span><span class="o">+</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">xppi</span><span class="p">))</span> <span class="o">+</span> \
|
||||
<span class="n">dot</span><span class="p">(</span><span class="n">rdxp</span><span class="p">,</span> <span class="n">Dt</span><span class="o">/</span><span class="mi">2</span><span class="o">*</span><span class="n">xppi</span><span class="p">)</span> <span class="o">+</span> \
|
||||
<span class="n">rk</span> <span class="o">+</span> <span class="n">dot</span><span class="p">(</span><span class="n">rkx</span><span class="p">,</span> <span class="p">(</span><span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span><span class="o">+</span><span class="n">Dt</span><span class="o">**</span><span class="mf">2.</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">xppi</span><span class="p">))</span> <span class="p">)</span>
|
||||
<span class="n">xpp11</span> <span class="o">=</span> <span class="n">dot</span><span class="p">(</span><span class="n">inv</span><span class="p">(</span><span class="n">r</span><span class="p">),</span> <span class="n">rp</span><span class="p">)</span>
|
||||
<span class="n">xp1</span> <span class="o">=</span> <span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">gamma</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">gamma</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">xi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">*</span><span class="n">xpi</span> <span class="o">+</span> <span class="n">Dt</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span> <span class="p">(</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="n">beta</span><span class="p">)</span><span class="o">*</span><span class="n">xppi</span> <span class="o">+</span> <span class="n">beta</span><span class="o">*</span><span class="n">xpp11</span> <span class="p">)</span>
|
||||
|
||||
<span class="n">residuum</span> <span class="o">=</span> <span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="o">-</span><span class="n">xpp1</span><span class="p">)</span><span class="o">/</span><span class="n">norm</span><span class="p">(</span><span class="n">xpp11</span><span class="p">)</span>
|
||||
<span class="n">xpp1</span> <span class="o">=</span> <span class="n">xpp11</span>
|
||||
<span class="k">if</span> <span class="n">residuum</span> <span class="o"><</span> <span class="n">tol</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="n">iterations</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span>
|
||||
|
||||
<span class="n">xpp</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xpp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="n">xp</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">xp1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,:]</span> <span class="o">=</span> <span class="n">x1</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Numerical integration of ODE using explicite '</span> <span class="o">+</span>
|
||||
<span class="s1">'newmark method was successful.'</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">xp</span><span class="p">,</span> <span class="n">xpp</span><span class="p">,</span> <span class="n">iterations</span></div>
|
||||
<span class="c1"># x = concatenate((x, xp, xpp), axis=1)</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
219
docs/build/html/_modules/pylib/numerical/ode_model.html
vendored
Normal file
219
docs/build/html/_modules/pylib/numerical/ode_model.html
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.numerical.ode_model — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.numerical.ode_model</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Mathmatical models governed by ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">Describes initial value problems as systems of first order ordinary differential</span>
|
||||
<span class="sd">equations.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-05-25</span>
|
||||
|
||||
<span class="sd">.. module:: ode_model</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Models of ordinary differential equations.</span>
|
||||
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">array</span><span class="p">,</span> <span class="n">cos</span><span class="p">,</span> <span class="n">sin</span><span class="p">,</span> <span class="n">dot</span><span class="p">,</span> <span class="n">square</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="k">import</span> <span class="n">inv</span>
|
||||
|
||||
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode_model.disk">[docs]</a><span class="k">def</span> <span class="nf">disk</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotation of an eccentric disk.</span>
|
||||
|
||||
<span class="sd"> :param x: values of the function</span>
|
||||
<span class="sd"> :type x: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qp1</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<span class="n">qp2</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">qp3</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">M</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> \
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">])]])</span>
|
||||
<span class="n">qp46</span> <span class="o">=</span> <span class="n">dot</span><span class="p">(</span><span class="n">inv</span><span class="p">(</span><span class="n">M</span><span class="p">),</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">qp4</span><span class="p">,</span> <span class="n">qp5</span><span class="p">,</span> <span class="n">qp6</span> <span class="o">=</span> <span class="n">qp46</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,)</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> <span class="c1"># 2d array to 1d array to list</span>
|
||||
<span class="k">return</span> <span class="n">qp1</span><span class="p">,</span> <span class="n">qp2</span><span class="p">,</span> <span class="n">qp3</span><span class="p">,</span> <span class="n">qp4</span><span class="p">,</span> <span class="n">qp5</span><span class="p">,</span> <span class="n">qp6</span></div>
|
||||
|
||||
<div class="viewcode-block" id="disk_nm"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode_model.disk_nm">[docs]</a><span class="k">def</span> <span class="nf">disk_nm</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotation of an eccentric disk.</span>
|
||||
|
||||
<span class="sd"> :param xn: values of the function</span>
|
||||
<span class="sd"> :type xn: list</span>
|
||||
<span class="sd"> :param xpn: first derivative values of the function</span>
|
||||
<span class="sd"> :type xpn: list</span>
|
||||
<span class="sd"> :param xppn: second derivative values of the function</span>
|
||||
<span class="sd"> :type xppn: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">+</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">dN</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">dNp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">dNpp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||
<span class="k">return</span> <span class="n">N</span><span class="p">,</span> <span class="n">dN</span><span class="p">,</span> <span class="n">dNp</span><span class="p">,</span> <span class="n">dNpp</span></div>
|
||||
|
||||
<div class="viewcode-block" id="disk_nmmdk"><a class="viewcode-back" href="../../../pylib.numerical.html#pylib.numerical.ode_model.disk_nmmdk">[docs]</a><span class="k">def</span> <span class="nf">disk_nmmdk</span><span class="p">(</span><span class="n">xn</span><span class="p">,</span> <span class="n">xpn</span><span class="p">,</span> <span class="n">xppn</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="o">*</span><span class="n">p</span><span class="p">):</span>
|
||||
<span class="sd">"""Rotation of an eccentric disk.</span>
|
||||
|
||||
<span class="sd"> :param xn: values of the function</span>
|
||||
<span class="sd"> :type xn: list</span>
|
||||
<span class="sd"> :param xpn: derivative values of the function</span>
|
||||
<span class="sd"> :type xpn: list</span>
|
||||
<span class="sd"> :param xppn: second derivative values of the function</span>
|
||||
<span class="sd"> :type xppn: list</span>
|
||||
<span class="sd"> :param t: time</span>
|
||||
<span class="sd"> :type t: list</span>
|
||||
<span class="sd"> :param `*p`: parameters of the function</span>
|
||||
|
||||
<span class="sd"> * diameter</span>
|
||||
<span class="sd"> * eccentricity</span>
|
||||
<span class="sd"> * torque</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">rm</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="n">rmx</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">xppn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rmxpp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||
<span class="n">rd</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rdx</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">square</span><span class="p">(</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">])],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rdxp</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xpn</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="n">rk</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span>
|
||||
<span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="o">-</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">rkx</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||
<span class="p">[</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
|
||||
<span class="p">[</span><span class="o">-</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">sin</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">cos</span><span class="p">(</span><span class="n">xn</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="o">*</span><span class="n">xn</span><span class="p">[</span><span class="mi">1</span><span class="p">])]])</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]]])</span>
|
||||
<span class="k">return</span> <span class="n">rm</span><span class="p">,</span> <span class="n">rmx</span><span class="p">,</span> <span class="n">rmxpp</span><span class="p">,</span> <span class="n">rd</span><span class="p">,</span> <span class="n">rdx</span><span class="p">,</span> <span class="n">rdxp</span><span class="p">,</span> <span class="n">rk</span><span class="p">,</span> <span class="n">rkx</span><span class="p">,</span> <span class="n">f</span></div>
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
||||
<span class="kc">True</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
253
docs/build/html/_modules/pylib/time_of_day.html
vendored
Normal file
253
docs/build/html/_modules/pylib/time_of_day.html
vendored
Normal file
@@ -0,0 +1,253 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.time_of_day — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for pylib.time_of_day</h1><div class="highlight"><pre>
|
||||
<span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># -*- coding: utf-8 -*-</span>
|
||||
<span class="sd">"""Calculate time.</span>
|
||||
|
||||
<span class="sd">:Date: 2019-06-01</span>
|
||||
|
||||
<span class="sd">.. module:: time_of_day</span>
|
||||
<span class="sd"> :platform: *nix, Windows</span>
|
||||
<span class="sd"> :synopsis: Calculate time.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd">.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de></span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span>
|
||||
|
||||
<div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.in_seconds">[docs]</a><span class="k">def</span> <span class="nf">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""If time is `time.struct_time` convert to float seconds.</span>
|
||||
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the time in seconds</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">time</span><span class="p">,</span> <span class="n">struct_time</span><span class="p">):</span>
|
||||
<span class="n">time</span> <span class="o">=</span> <span class="n">mktime</span><span class="p">(</span><span class="n">time</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">time</span></div>
|
||||
|
||||
<div class="viewcode-block" id="seconds"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.seconds">[docs]</a><span class="k">def</span> <span class="nf">seconds</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The seconds of the time.</span>
|
||||
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: seconds, range [0, 60]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">%</span><span class="mi">60</span></div>
|
||||
|
||||
<div class="viewcode-block" id="seconds_norm"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.seconds_norm">[docs]</a><span class="k">def</span> <span class="nf">seconds_norm</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The seconds normalized to 60 seconds.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the normalized seconds, range [0, 1]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">seconds</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">60</span></div>
|
||||
|
||||
<div class="viewcode-block" id="minutes"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.minutes">[docs]</a><span class="k">def</span> <span class="nf">minutes</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The minutes of the time.</span>
|
||||
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: minutes, range [0, 60]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">60</span><span class="o">%</span><span class="mi">60</span></div>
|
||||
|
||||
<div class="viewcode-block" id="minutes_norm"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.minutes_norm">[docs]</a><span class="k">def</span> <span class="nf">minutes_norm</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The minutes normalized to 60 minutes.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the normalized minutes, range [0, 1]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">minutes</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">60</span></div>
|
||||
|
||||
<div class="viewcode-block" id="hours"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.hours">[docs]</a><span class="k">def</span> <span class="nf">hours</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The hours of the time.</span>
|
||||
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: hours, range [0, 24]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">60</span><span class="o">/</span><span class="mi">60</span><span class="o">%</span><span class="mi">24</span></div>
|
||||
|
||||
<div class="viewcode-block" id="hours_norm"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.hours_norm">[docs]</a><span class="k">def</span> <span class="nf">hours_norm</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The hours normalized to 24 hours.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the normalized hours, range [0, 1]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">hours</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">24</span></div>
|
||||
|
||||
<div class="viewcode-block" id="days"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.days">[docs]</a><span class="k">def</span> <span class="nf">days</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The days of the time (year).</span>
|
||||
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: hours, range [0, 365.2425]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">in_seconds</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mi">60</span><span class="o">/</span><span class="mi">60</span><span class="o">/</span><span class="mi">24</span><span class="o">%</span><span class="mf">365.2425</span></div>
|
||||
|
||||
<div class="viewcode-block" id="days_norm"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.days_norm">[docs]</a><span class="k">def</span> <span class="nf">days_norm</span><span class="p">(</span><span class="n">time</span><span class="p">):</span>
|
||||
<span class="sd">"""The days normalized to 365.2425 (Gregorian, on average) days.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param time: the time in seconds</span>
|
||||
<span class="sd"> :type time: float or `time.struct_time`</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the normalized days, range [0, 1]</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">days</span><span class="p">(</span><span class="n">time</span><span class="p">)</span><span class="o">/</span><span class="mf">365.2425</span></div>
|
||||
|
||||
<div class="viewcode-block" id="transform"><a class="viewcode-back" href="../../pylib.html#pylib.time_of_day.transform">[docs]</a><span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="n">time_norm</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sd">"""Transform normalized time value to new length.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param position_norm: the normalized time value to transform</span>
|
||||
<span class="sd"> :type position_norm: float</span>
|
||||
<span class="sd"> :param length: the transformation</span>
|
||||
<span class="sd"> :type length: float</span>
|
||||
<span class="sd"> :param offset: the offset (default = 0)</span>
|
||||
<span class="sd"> :type offset: float</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :returns: the transformation value</span>
|
||||
<span class="sd"> :rtype: float</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">time_norm</span><span class="o">*</span><span class="n">length</span> <span class="o">+</span> <span class="n">offset</span></div>
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">gmtime</span><span class="p">,</span> <span class="n">localtime</span>
|
||||
<span class="c1"># time in seconds</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
||||
<span class="nb">min</span> <span class="o">=</span> <span class="n">minutes</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">hours</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="n">min_norm</span> <span class="o">=</span> <span class="n">minutes_norm</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="n">h_norm</span> <span class="o">=</span> <span class="n">hours_norm</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'min '</span><span class="p">,</span> <span class="nb">min</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'h '</span><span class="p">,</span> <span class="n">h</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'min_norm '</span><span class="p">,</span> <span class="n">min_norm</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'h_norm '</span><span class="p">,</span> <span class="n">h_norm</span><span class="p">)</span>
|
||||
|
||||
<span class="n">x_len</span> <span class="o">=</span> <span class="mi">30</span>
|
||||
<span class="n">x_offset</span> <span class="o">=</span> <span class="o">-</span><span class="mi">8</span>
|
||||
<span class="n">x_pos</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">min_norm</span><span class="p">,</span> <span class="n">x_len</span><span class="p">,</span> <span class="n">x_offset</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'m[-8,22] '</span><span class="p">,</span> <span class="n">x_pos</span><span class="p">)</span>
|
||||
|
||||
<span class="n">y_len</span> <span class="o">=</span> <span class="mi">20</span>
|
||||
<span class="n">y_offset</span> <span class="o">=</span> <span class="o">-</span><span class="mi">10</span>
|
||||
<span class="n">y_pos</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">h_norm</span><span class="p">,</span> <span class="n">y_len</span><span class="p">,</span> <span class="n">y_offset</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'h[-10,10]'</span><span class="p">,</span> <span class="n">y_pos</span><span class="p">)</span>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../../index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../../index.html">Documentation overview</a><ul>
|
||||
<li><a href="../index.html">Module code</a><ul>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
2
docs/build/html/_modules/time_of_day.html
vendored
2
docs/build/html/_modules/time_of_day.html
vendored
@@ -241,7 +241,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
46
docs/build/html/_sources/pylib.numerical.rst.txt
vendored
Normal file
46
docs/build/html/_sources/pylib.numerical.rst.txt
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
pylib.numerical package
|
||||
=======================
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
pylib.numerical.fit module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.fit
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.integration module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.integration
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.ode module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.ode
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.ode\_model module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.ode_model
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Module contents
|
||||
---------------
|
||||
|
||||
.. automodule:: pylib.numerical
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
77
docs/build/html/_sources/pylib.rst.txt
vendored
Normal file
77
docs/build/html/_sources/pylib.rst.txt
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
pylib package
|
||||
=============
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
pylib.numerical
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
pylib.data module
|
||||
-----------------
|
||||
|
||||
.. automodule:: pylib.data
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.date module
|
||||
-----------------
|
||||
|
||||
.. automodule:: pylib.date
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.function module
|
||||
---------------------
|
||||
|
||||
.. automodule:: pylib.function
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.geometry module
|
||||
---------------------
|
||||
|
||||
.. automodule:: pylib.geometry
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.geometry\_plot module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: pylib.geometry_plot
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.mathematics module
|
||||
------------------------
|
||||
|
||||
.. automodule:: pylib.mathematics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.time\_of\_day module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.time_of_day
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Module contents
|
||||
---------------
|
||||
|
||||
.. automodule:: pylib
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
2
docs/build/html/data.html
vendored
2
docs/build/html/data.html
vendored
@@ -255,7 +255,7 @@ between consecutive terms).</p></li>
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/date.html
vendored
2
docs/build/html/date.html
vendored
@@ -212,7 +212,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
135
docs/build/html/function.html
vendored
135
docs/build/html/function.html
vendored
@@ -68,7 +68,7 @@ time t</p>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><code class="xref py py-meth docutils literal notranslate"><span class="pre">function_sine_wave_degree()</span></code></p>
|
||||
<p><a class="reference internal" href="#function.sine_wave" title="function.sine_wave"><code class="xref py py-meth docutils literal notranslate"><span class="pre">sine_wave()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
@@ -228,7 +228,136 @@ angular frequency ω and the linear speed (speed of propagation)
|
||||
linear speed.</p>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><code class="xref py py-meth docutils literal notranslate"><span class="pre">function_cosine_wave_degree()</span></code></p>
|
||||
<p><a class="reference internal" href="#function.cosine_wave" title="function.cosine_wave"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cosine_wave()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="function.to_str">
|
||||
<code class="sig-name descname">to_str</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x=None</em>, <em class="sig-param">x_0=0</em>, <em class="sig-param">x_1=1</em>, <em class="sig-param">t=None</em>, <em class="sig-param">h=10</em>, <em class="sig-param">w=80</em>, <em class="sig-param">density=1</em>, <em class="sig-param">char_set='line'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#to_str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.to_str" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Represent functions as string frame with a specific character set.
|
||||
which are normed to the range of [0, 1] to</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 normed to the range of [0, 1]</p></li>
|
||||
<li><p><strong>h</strong> (<em>int</em>) – number of chars in vertical direction</p></li>
|
||||
<li><p><strong>w</strong> (<em>int</em>) – number of chars in horizontal direction</p></li>
|
||||
<li><p><strong>char_set</strong> (<em>str</em>) – either “braille” or “block”. “braille” uses Unicode
|
||||
Characters in the Braille Patterns Block (fisrt index U+2800, last
|
||||
index U+28FF <a class="reference internal" href="pylib.html#cudb" id="id1"><span>[CUDB]</span></a>) and the “block” uses part of the Unicode
|
||||
Characters in the Block Elements Block (fisrt index U+2580, last
|
||||
index U+259F <a class="reference internal" href="pylib.html#cudb" id="id2"><span>[CUDB]</span></a>). Alias for braille is line and alias for
|
||||
block is histogram</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="simple">
|
||||
<dt>Usage:</dt><dd><ul class="simple">
|
||||
<li><p>case dependent arguments</p>
|
||||
<ul>
|
||||
<li><p>1 quasi line plot (braille characters)
|
||||
f = lambda function (lambda x, t=0: …)
|
||||
x_1 = max x value
|
||||
x_0 = min x value
|
||||
t = time (animation)</p></li>
|
||||
<li><p>2 histogram (block characters)
|
||||
f = lambda function (lambda x, t=0: …)
|
||||
x_1 = max x value
|
||||
x_0 = min x value
|
||||
t = time (animation)
|
||||
chart=”histogram”</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>general arguments
|
||||
w = window width in number of chars
|
||||
density = number of data point per pixel (for line chart higher density makes thicker lines)
|
||||
chart = either “line” or “histogram”</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p class="rubric">Braille Patterns Block</p>
|
||||
<ul class="simple">
|
||||
<li><p>Dots or pixels per character in vertical direction: 6</p></li>
|
||||
<li><p>Dots or pixels per character in horizontal direction: 2</p></li>
|
||||
</ul>
|
||||
<p>First dot (bottom left) is the zero (0) position of the
|
||||
function. So, a function value of zero does not mean to have zero
|
||||
dots but one.
|
||||
Example of 3 columns and 3 rows (upside down view of ‘normal’ braille/drawille position)</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> | ^ y axis
|
||||
| |
|
||||
| ,_____,,_____,,_____,
|
||||
7 + | * *|| * *|| * *|
|
||||
6 + | * *|| * *|| * *|
|
||||
5 + | * *|| * *|| * *|
|
||||
4 + | * *|| * *|| * *|
|
||||
| ;=====;;=====;;=====;
|
||||
3 + | * *|| * *|| * *|
|
||||
2 + | * *|| * *|| * *|
|
||||
1 + | * *|| * *|| * *|
|
||||
0 + - | * *|| * *|| * *| ---> x axis
|
||||
| ;=====;;=====;;=====;
|
||||
-1 + | * *|| * *|| * *|
|
||||
-2 + | * *|| * *|| * *|
|
||||
-3 + | * *|| * *|| * *|
|
||||
-4 + | * *|| * *|| * *|
|
||||
| `````````````````````
|
||||
| |
|
||||
`-----+--+---+--+---+--+-------------
|
||||
-2 -1 0 1 2 3
|
||||
</pre></div>
|
||||
</div>
|
||||
<p class="rubric">Block Elements Block</p>
|
||||
<ul class="simple">
|
||||
<li><p>Dots or pixels per character in vertical direction: 8</p></li>
|
||||
<li><p>Dots or pixels per character in horizontal direction: 1</p></li>
|
||||
</ul>
|
||||
<p>Example of 3 columns and 3 rows</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> | ^ y axis
|
||||
| |
|
||||
| ,_____,,_____,,_____,
|
||||
15 + | --- || --- || --- |
|
||||
14 + | --- || --- || --- |
|
||||
13 + | --- || --- || --- |
|
||||
12 + | --- || --- || --- |
|
||||
11 + | --- || --- || --- |
|
||||
10 + | --- || --- || --- |
|
||||
9 + | --- || --- || --- |
|
||||
8 + | --- || --- || --- |
|
||||
| ;=====;;=====;;=====;
|
||||
7 + | --- || --- || --- |
|
||||
6 + | --- || --- || --- |
|
||||
5 + | --- || --- || --- |
|
||||
4 + | --- || --- || --- |
|
||||
3 + | --- || --- || --- |
|
||||
2 + | --- || --- || --- |
|
||||
1 + | --- || --- || --- |
|
||||
0 + - | --- || --- || --- | ---> x axis
|
||||
| ;=====;;=====;;=====;
|
||||
-1 + | --- || --- || --- |
|
||||
-2 + | --- || --- || --- |
|
||||
-3 + | --- || --- || --- |
|
||||
-4 + | --- || --- || --- |
|
||||
-5 + | --- || --- || --- |
|
||||
-6 + | --- || --- || --- |
|
||||
-7 + | --- || --- || --- |
|
||||
-8 + | --- || --- || --- |
|
||||
| `````````````````````
|
||||
| |
|
||||
`------+------+------+---------------
|
||||
-1 0 1
|
||||
</pre></div>
|
||||
</div>
|
||||
<p class="rubric">References</p>
|
||||
<dl class="citation">
|
||||
<dt class="label" id="cudb"><span class="brackets">CUDB</span><span class="fn-backref">(<a href="#id1">1</a>,<a href="#id2">2</a>)</span></dt>
|
||||
<dd><p><a class="reference external" href="ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt">Unicode Database - Blocks</a></p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="pylib.html#pylib.function.transformation" title="pylib.function.transformation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">pylib.function.transformation()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
@@ -314,7 +443,7 @@ linear speed.</p>
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
340
docs/build/html/genindex.html
vendored
340
docs/build/html/genindex.html
vendored
@@ -61,11 +61,19 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#geometry.angle">angle() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.angle">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="date.html#date.ascension_of_jesus">ascension_of_jesus() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.ascension_of_jesus">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -73,39 +81,79 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="function.html#function.cosine_wave">cosine_wave() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.cosine_wave">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.cubic">cubic() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.cubic">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#geometry.cubic_deg">cubic_deg() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.cubic_deg">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.cubics">cubics() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.cubics">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="D">D</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="data.html#module-data">data (module)</a>, <a href="data.html#module-data">[1]</a>
|
||||
<li><a href="data.html#module-data">data (module)</a>, <a href="data.html#module-data">[1]</a>, <a href="pylib.html#module-data">[2]</a>
|
||||
</li>
|
||||
<li><a href="date.html#module-date">date (module)</a>, <a href="date.html#module-date">[1]</a>
|
||||
<li><a href="date.html#module-date">date (module)</a>, <a href="date.html#module-date">[1]</a>, <a href="pylib.html#module-date">[2]</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.days">days() (in module time_of_day)</a>
|
||||
<li><a href="pylib.html#pylib.time_of_day.days">days() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.days">(in module time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.days_norm">days_norm() (in module time_of_day)</a>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.days_norm">days_norm() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.days_norm">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.ode_model.disk">disk() (in module numerical.ode_model)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode_model.disk">(in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.ode_model.disk">disk() (in module numerical.ode_model)</a>
|
||||
</li>
|
||||
<li><a href="numerical.html#numerical.ode_model.disk_nm">disk_nm() (in module numerical.ode_model)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode_model.disk_nm">(in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.ode_model.disk_nmmdk">disk_nmmdk() (in module numerical.ode_model)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode_model.disk_nmmdk">(in module pylib.numerical.ode_model)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.distance">distance() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.distance">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -113,36 +161,72 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.ode.e1">e1() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.e1">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.ode.e2">e2() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.e2">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.ode.e4">e4() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.e4">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="date.html#date.easter_friday">easter_friday() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.easter_friday">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="date.html#date.easter_friday">easter_friday() (in module date)</a>
|
||||
</li>
|
||||
<li><a href="date.html#date.easter_monday">easter_monday() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.easter_monday">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="date.html#date.easter_sunday">easter_sunday() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.easter_sunday">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="function.html#function.epitrochoid">epitrochoid() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.epitrochoid">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="F">F</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#module-fit">fit (module)</a>
|
||||
<li><a href="numerical.html#module-fit">fit (module)</a>, <a href="pylib.numerical.html#module-fit">[1]</a>
|
||||
</li>
|
||||
<li><a href="data.html#data.fold_list">fold_list() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.fold_list">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.ode.fpi">fpi() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.fpi">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
<li><a href="function.html#module-function">function (module)</a>, <a href="function.html#module-function">[1]</a>
|
||||
</ul></li>
|
||||
<li><a href="function.html#module-function">function (module)</a>, <a href="function.html#module-function">[1]</a>, <a href="pylib.html#module-function">[2]</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -151,33 +235,61 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.fit.gauss">gauss() (in module numerical.fit)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.fit.gauss">(in module pylib.numerical.fit)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.fit.gauss_fit">gauss_fit() (in module numerical.fit)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.fit.gauss_fit">(in module pylib.numerical.fit)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="date.html#date.gaußsche_osterformel">gaußsche_osterformel() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.gaußsche_osterformel">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#module-geometry">geometry (module)</a>, <a href="geometry.html#module-geometry">[1]</a>
|
||||
<li><a href="geometry.html#module-geometry">geometry (module)</a>, <a href="geometry.html#module-geometry">[1]</a>, <a href="pylib.html#module-geometry">[2]</a>
|
||||
</li>
|
||||
<li><a href="geometry_plot.html#module-geometry_plot">geometry_plot (module)</a>, <a href="geometry_plot.html#module-geometry_plot">[1]</a>
|
||||
<li><a href="geometry_plot.html#module-geometry_plot">geometry_plot (module)</a>, <a href="geometry_plot.html#module-geometry_plot">[1]</a>, <a href="pylib.html#module-geometry_plot">[2]</a>
|
||||
</li>
|
||||
<li><a href="data.html#data.get_id">get_id() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.get_id">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="H">H</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="time_of_day.html#time_of_day.hours">hours() (in module time_of_day)</a>
|
||||
<li><a href="pylib.html#pylib.time_of_day.hours">hours() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.hours">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.hours_norm">hours_norm() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.hours_norm">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="time_of_day.html#time_of_day.hours_norm">hours_norm() (in module time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="function.html#function.hypotrochoid">hypotrochoid() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.hypotrochoid">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -185,15 +297,27 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.ode.i1">i1() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.i1">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.in_seconds">in_seconds() (in module time_of_day)</a>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.in_seconds">in_seconds() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.in_seconds">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#module-integration">integration (module)</a>
|
||||
<li><a href="numerical.html#module-integration">integration (module)</a>, <a href="pylib.numerical.html#module-integration">[1]</a>
|
||||
</li>
|
||||
<li><a href="geometry.html#geometry.interpolate_hermite">interpolate_hermite() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.interpolate_hermite">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -201,29 +325,53 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="mathematics.html#mathematics.lcm">lcm() (in module mathematics)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.mathematics.lcm">(in module pylib.mathematics)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.line">line() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.line">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#geometry.lines">lines() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.lines">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="data.html#data.load">load() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.load">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="M">M</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="mathematics.html#module-mathematics">mathematics (module)</a>, <a href="mathematics.html#module-mathematics">[1]</a>
|
||||
<li><a href="mathematics.html#module-mathematics">mathematics (module)</a>, <a href="mathematics.html#module-mathematics">[1]</a>, <a href="pylib.html#module-mathematics">[2]</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.minutes">minutes() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.minutes">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="time_of_day.html#time_of_day.minutes">minutes() (in module time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.minutes_norm">minutes_norm() (in module time_of_day)</a>
|
||||
<li><a href="pylib.html#pylib.time_of_day.minutes_norm">minutes_norm() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.minutes_norm">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -231,13 +379,21 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#numerical.ode.newmark_newtonraphson">newmark_newtonraphson() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.ode.newmark_newtonraphson_rdk">newmark_newtonraphson_rdk() (in module numerical.ode)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.ode.newmark_newtonraphson_rdk">(in module pylib.numerical.ode)</a>
|
||||
</li>
|
||||
<li><a href="numerical.html#module-numerical">numerical (module)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#module-numerical">numerical (module)</a>
|
||||
</li>
|
||||
<li><a href="numerical.html#module-numerical.fit">numerical.fit (module)</a>
|
||||
</li>
|
||||
<li><a href="numerical.html#module-numerical.integration">numerical.integration (module)</a>
|
||||
@@ -252,11 +408,11 @@
|
||||
<h2 id="O">O</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#module-ode">ode (module)</a>
|
||||
<li><a href="numerical.html#module-ode">ode (module)</a>, <a href="pylib.numerical.html#module-ode">[1]</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="numerical.html#module-ode_model">ode_model (module)</a>
|
||||
<li><a href="numerical.html#module-ode_model">ode_model (module)</a>, <a href="pylib.numerical.html#module-ode_model">[1]</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -265,12 +421,50 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="date.html#date.pentecost">pentecost() (in module date)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.date.pentecost">(in module pylib.date)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry_plot.html#geometry_plot.plot_cubic_lines">plot_cubic_lines() (in module geometry_plot)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry_plot.plot_cubic_lines">(in module pylib.geometry_plot)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry_plot.html#geometry_plot.plot_lines">plot_lines() (in module geometry_plot)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry_plot.plot_lines">(in module pylib.geometry_plot)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#module-pylib">pylib (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib.data">pylib.data (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib.date">pylib.date (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry_plot.html#geometry_plot.plot_cubic_lines">plot_cubic_lines() (in module geometry_plot)</a>
|
||||
<li><a href="pylib.html#module-pylib.function">pylib.function (module)</a>
|
||||
</li>
|
||||
<li><a href="geometry_plot.html#geometry_plot.plot_lines">plot_lines() (in module geometry_plot)</a>
|
||||
<li><a href="pylib.html#module-pylib.geometry">pylib.geometry (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib.geometry_plot">pylib.geometry_plot (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib.mathematics">pylib.mathematics (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.html#module-pylib.numerical">pylib.numerical (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.html#module-pylib.numerical.fit">pylib.numerical.fit (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.html#module-pylib.numerical.integration">pylib.numerical.integration (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.html#module-pylib.numerical.ode">pylib.numerical.ode (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.numerical.html#module-pylib.numerical.ode_model">pylib.numerical.ode_model (module)</a>
|
||||
</li>
|
||||
<li><a href="pylib.html#module-pylib.time_of_day">pylib.time_of_day (module)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
@@ -279,57 +473,127 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="data.html#data.read">read() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.read">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.rectangle">rectangle() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.rectangle">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.rotate">rotate() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.rotate">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#geometry.rotate">rotate() (in module geometry)</a>
|
||||
</li>
|
||||
<li><a href="geometry.html#geometry.rotate_deg">rotate_deg() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.rotate_deg">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.rotate_xy">rotate_xy() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.rotate_xy">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="S">S</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="time_of_day.html#time_of_day.seconds">seconds() (in module time_of_day)</a>
|
||||
<li><a href="pylib.html#pylib.time_of_day.seconds">seconds() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.seconds">(in module time_of_day)</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.seconds_norm">seconds_norm() (in module time_of_day)</a>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.seconds_norm">seconds_norm() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.seconds_norm">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="data.html#data.seq">seq() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.seq">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="function.html#function.sine_wave">sine_wave() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.sine_wave">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.square">square() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.square">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="data.html#data.store">store() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.store">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="T">T</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<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><a href="pylib.html#module-time_of_day">time_of_day (module)</a>, <a href="time_of_day.html#module-time_of_day">[1]</a>, <a href="time_of_day.html#module-time_of_day">[2]</a>
|
||||
</li>
|
||||
<li><a href="time_of_day.html#time_of_day.transform">transform() (in module time_of_day)</a>
|
||||
<li><a href="function.html#function.to_str">to_str() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.to_str">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="pylib.html#pylib.time_of_day.transform">transform() (in module pylib.time_of_day)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="time_of_day.html#time_of_day.transform">(in module time_of_day)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="function.html#function.transformation">transformation() (in module function)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.function.transformation">(in module pylib.function)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="geometry.html#geometry.translate">translate() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.translate">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="geometry.html#geometry.translate_xy">translate_xy() (in module geometry)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.geometry.translate_xy">(in module pylib.geometry)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="numerical.html#numerical.integration.trapez">trapez() (in module numerical.integration)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.numerical.html#pylib.numerical.integration.trapez">(in module pylib.numerical.integration)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -337,7 +601,11 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="data.html#data.unique_ending">unique_ending() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.unique_ending">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -345,7 +613,11 @@
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="data.html#data.write">write() (in module data)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="pylib.html#pylib.data.write">(in module pylib.data)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
@@ -401,7 +673,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
4
docs/build/html/geometry.html
vendored
4
docs/build/html/geometry.html
vendored
@@ -274,7 +274,7 @@ decides what the left and the right end point of the line is.</p></li>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="geometry_plot.html#geometry_plot.plot_lines" title="geometry_plot.plot_lines"><code class="xref py py-meth docutils literal notranslate"><span class="pre">plot_lines()</span></code></a> of the <a class="reference internal" href="geometry_plot.html#module-geometry_plot" title="geometry_plot: Geometry plotting. (*nix, Windows)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">geometry_plot</span></code></a>
|
||||
<p><a class="reference internal" href="geometry_plot.html#geometry_plot.plot_lines" title="geometry_plot.plot_lines"><code class="xref py py-meth docutils literal notranslate"><span class="pre">plot_lines()</span></code></a> of the <a class="reference internal" href="pylib.html#module-geometry_plot" title="geometry_plot: Geometry plotting. (*nix, Windows)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">geometry_plot</span></code></a>
|
||||
module to plot the lines</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
@@ -496,7 +496,7 @@ around a given origin. The angle should be given in radians.</p>
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/geometry_plot.html
vendored
2
docs/build/html/geometry_plot.html
vendored
@@ -103,7 +103,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/index.html
vendored
2
docs/build/html/index.html
vendored
@@ -97,7 +97,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/mathematics.html
vendored
2
docs/build/html/mathematics.html
vendored
@@ -99,7 +99,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/modules.html
vendored
2
docs/build/html/modules.html
vendored
@@ -107,7 +107,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
2
docs/build/html/numerical.html
vendored
2
docs/build/html/numerical.html
vendored
@@ -574,7 +574,7 @@ equations.</p>
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
BIN
docs/build/html/objects.inv
vendored
BIN
docs/build/html/objects.inv
vendored
Binary file not shown.
98
docs/build/html/py-modindex.html
vendored
98
docs/build/html/py-modindex.html
vendored
@@ -24,10 +24,6 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
|
||||
</script>
|
||||
|
||||
|
||||
</head><body>
|
||||
|
||||
@@ -50,6 +46,7 @@
|
||||
<a href="#cap-m"><strong>m</strong></a> |
|
||||
<a href="#cap-n"><strong>n</strong></a> |
|
||||
<a href="#cap-o"><strong>o</strong></a> |
|
||||
<a href="#cap-p"><strong>p</strong></a> |
|
||||
<a href="#cap-t"><strong>t</strong></a>
|
||||
</div>
|
||||
|
||||
@@ -60,12 +57,12 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="data.html#module-data"><code class="xref">data</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-data"><code class="xref">data</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Handle data files and structures.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="date.html#module-date"><code class="xref">date</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-date"><code class="xref">date</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Special dates.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-f"><td></td><td>
|
||||
@@ -73,12 +70,12 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="numerical.html#module-fit"><code class="xref">fit</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.numerical.html#module-fit"><code class="xref">fit</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Function and approximation.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="function.html#module-function"><code class="xref">function</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-function"><code class="xref">function</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Mathematical equations.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-g"><td></td><td>
|
||||
@@ -86,12 +83,12 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="geometry.html#module-geometry"><code class="xref">geometry</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-geometry"><code class="xref">geometry</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Geometry objects.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="geometry_plot.html#module-geometry_plot"><code class="xref">geometry_plot</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-geometry_plot"><code class="xref">geometry_plot</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Geometry plotting.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-i"><td></td><td>
|
||||
@@ -99,7 +96,7 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="numerical.html#module-integration"><code class="xref">integration</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.numerical.html#module-integration"><code class="xref">integration</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Numerical integration.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-m"><td></td><td>
|
||||
@@ -107,7 +104,7 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="mathematics.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Mathematical functions.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-n"><td></td><td>
|
||||
@@ -144,20 +141,89 @@
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="numerical.html#module-ode"><code class="xref">ode</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.numerical.html#module-ode"><code class="xref">ode</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Numerical solver.</em></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="numerical.html#module-ode_model"><code class="xref">ode_model</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.numerical.html#module-ode_model"><code class="xref">ode_model</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Models of ordinary differential equations.</em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-p"><td></td><td>
|
||||
<strong>p</strong></td><td></td></tr>
|
||||
<tr>
|
||||
<td><img src="_static/minus.png" class="toggler"
|
||||
id="toggle-2" style="display: none" alt="-" /></td>
|
||||
<td>
|
||||
<a href="pylib.html#module-pylib"><code class="xref">pylib</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.data"><code class="xref">pylib.data</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.date"><code class="xref">pylib.date</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.function"><code class="xref">pylib.function</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.geometry"><code class="xref">pylib.geometry</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.geometry_plot"><code class="xref">pylib.geometry_plot</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.mathematics"><code class="xref">pylib.mathematics</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.numerical.html#module-pylib.numerical"><code class="xref">pylib.numerical</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.numerical.html#module-pylib.numerical.fit"><code class="xref">pylib.numerical.fit</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.numerical.html#module-pylib.numerical.integration"><code class="xref">pylib.numerical.integration</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.numerical.html#module-pylib.numerical.ode"><code class="xref">pylib.numerical.ode</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.numerical.html#module-pylib.numerical.ode_model"><code class="xref">pylib.numerical.ode_model</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-2">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="pylib.html#module-pylib.time_of_day"><code class="xref">pylib.time_of_day</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-t"><td></td><td>
|
||||
<strong>t</strong></td><td></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="time_of_day.html#module-time_of_day"><code class="xref">time_of_day</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<a href="pylib.html#module-time_of_day"><code class="xref">time_of_day</code></a> <em>(*nix, Windows)</em></td><td>
|
||||
<em>Calculate time.</em></td></tr>
|
||||
</table>
|
||||
|
||||
@@ -212,7 +278,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
1411
docs/build/html/pylib.html
vendored
Normal file
1411
docs/build/html/pylib.html
vendored
Normal file
File diff suppressed because it is too large
Load Diff
589
docs/build/html/pylib.numerical.html
vendored
Normal file
589
docs/build/html/pylib.numerical.html
vendored
Normal file
@@ -0,0 +1,589 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>pylib.numerical package — pylib 2019.5.19 documentation</title>
|
||||
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="pylib-numerical-package">
|
||||
<h1>pylib.numerical package<a class="headerlink" href="#pylib-numerical-package" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="submodules">
|
||||
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
|
||||
</div>
|
||||
<div class="section" id="module-pylib.numerical.fit">
|
||||
<span id="pylib-numerical-fit-module"></span><h2>pylib.numerical.fit module<a class="headerlink" href="#module-pylib.numerical.fit" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Function and approximation.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2019-10-15</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-fit"></span><dl class="function">
|
||||
<dt id="pylib.numerical.fit.gauss">
|
||||
<code class="sig-name descname">gauss</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/fit.html#gauss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.fit.gauss" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Gauss distribution function.</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[f(x)=ae^{-(x-b)^{2}/(2c^{2})}\]</div>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>int</em><em> or </em><em>float</em><em> or </em><em>list</em><em> or </em><em>numpy.ndarray</em>) – positions where the gauss function will be calculated</p></li>
|
||||
<li><p><strong>p</strong> (<em>list</em>) – <p>gauss parameters [a, b, c, d]:</p>
|
||||
<ul>
|
||||
<li><p>a – amplitude (<span class="math notranslate nohighlight">\(\int y \,\mathrm{d}x=1 \Leftrightarrow a=1/(c\sqrt{2\pi})\)</span> )</p></li>
|
||||
<li><p>b – expected value <span class="math notranslate nohighlight">\(\mu\)</span> (position of maximum, default = 0)</p></li>
|
||||
<li><p>c – standard deviation <span class="math notranslate nohighlight">\(\sigma\)</span> (variance <span class="math notranslate nohighlight">\(\sigma^2=c^2\)</span>)</p></li>
|
||||
<li><p>d – vertical offset (default = 0)</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>gauss values at given positions x</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>numpy.ndarray</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.fit.gauss_fit">
|
||||
<code class="sig-name descname">gauss_fit</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">y</em>, <em class="sig-param">e=None</em>, <em class="sig-param">x_fit=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/fit.html#gauss_fit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.fit.gauss_fit" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Fit Gauss distribution function to data.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>int</em><em> or </em><em>float</em><em> or </em><em>list</em><em> or </em><em>numpy.ndarray</em>) – positions</p></li>
|
||||
<li><p><strong>y</strong> (<em>int</em><em> or </em><em>float</em><em> or </em><em>list</em><em> or </em><em>numpy.ndarray</em>) – values</p></li>
|
||||
<li><p><strong>e</strong> (<em>int</em><em> or </em><em>float</em><em> or </em><em>list</em><em> or </em><em>numpy.ndarray</em>) – error values (default = None)</p></li>
|
||||
<li><p><strong>x_fit</strong> (<em>int</em><em> or </em><em>float</em><em> or </em><em>list</em><em> or </em><em>numpy.ndarray</em>) – positions of fitted function (default = None, if None then x
|
||||
is used)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – verbose information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><ul class="simple">
|
||||
<li><p>numpy.ndarray – fitted values (y_fit)</p></li>
|
||||
<li><p>numpy.ndarray – parameters of gauss distribution function (popt:
|
||||
amplitude a, expected value <span class="math notranslate nohighlight">\(\mu\)</span>, standard deviation
|
||||
<span class="math notranslate nohighlight">\(\sigma\)</span>, vertical offset d)</p></li>
|
||||
<li><p>numpy.float64 – full width at half maximum (FWHM)</p></li>
|
||||
</ul>
|
||||
</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>tuple</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<p><a class="reference internal" href="#pylib.numerical.fit.gauss" title="pylib.numerical.fit.gauss"><code class="xref py py-meth docutils literal notranslate"><span class="pre">gauss()</span></code></a></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-pylib.numerical.integration">
|
||||
<span id="pylib-numerical-integration-module"></span><h2>pylib.numerical.integration module<a class="headerlink" href="#module-pylib.numerical.integration" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Numerical integration, numerical quadrature.</p>
|
||||
<p>de: numerische Integration, numerische Quadratur.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2015-10-15</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-integration"></span><dl class="function">
|
||||
<dt id="pylib.numerical.integration.trapez">
|
||||
<code class="sig-name descname">trapez</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">a=0</em>, <em class="sig-param">b=1</em>, <em class="sig-param">N=10</em>, <em class="sig-param">x=None</em>, <em class="sig-param">verbose=False</em>, <em class="sig-param">save_values=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/integration.html#trapez"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.integration.trapez" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Integration of <span class="math notranslate nohighlight">\(f(x)\)</span> using the trapezoidal rule
|
||||
(Simpson’s rule, Kepler’s rule).</p>
|
||||
<p>de: Trapezregel, Simpsonregel (Thomas Simpson), Keplersche
|
||||
Fassregel (Johannes Kepler)</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 to integrate.</p></li>
|
||||
<li><p><strong>a</strong> (<em>float</em>) – lower limit of integration (default = 0).</p></li>
|
||||
<li><p><strong>b</strong> (<em>float</em>) – upper limit of integration (default = 1).</p></li>
|
||||
<li><p><strong>N</strong> (<em>int</em>) – specify the number of subintervals.</p></li>
|
||||
<li><p><strong>x</strong> (<em>list</em>) – variable of integration, necessary if f is a list
|
||||
(default = None).</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>the definite integral as approximated by trapezoidal
|
||||
rule.</p>
|
||||
</dd>
|
||||
<dt class="field-odd">Return type</dt>
|
||||
<dd class="field-odd"><p>float</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>The trapezoidal rule approximates the integral by the area of a
|
||||
trapezoid with base h=b-a and sides equal to the values of the
|
||||
integrand at the two end points.</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[f_n(x) = f(a)+\frac{f(b)-f(a)}{b-a}(x-a)\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}I &= \int\limits_a^b f(x) \,\mathrm{d}x \\
|
||||
I &\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\
|
||||
&= \int\limits_a^b
|
||||
\left( f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \right)
|
||||
\mathrm{d}x \\
|
||||
&= \left.\left( f(a)-a\frac{f(b)-f(a)}{b-a} \right)
|
||||
x \right\vert_a^b +
|
||||
\left. \frac{f(b)-f(a)}{b-a} \frac{x^2}{2}
|
||||
\right\vert_a^b \\
|
||||
&= \frac{b-a}{2}\left[f(a)+f(b)\right]\end{split}\]</div>
|
||||
<p>The composite trapezium rule. If the interval is divided into n
|
||||
segments (not necessarily equal)</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[a = x_0 \leq x_1 \leq x_2 \leq \ldots \leq x_n = b\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}I &\approx \sum\limits_{i=0}^{n-1} \frac{1}{2} (x_{i+1}-x_i)
|
||||
\left[f(x_{i+1})+f(x_i)\right] \\\end{split}\]</div>
|
||||
<p>Special Case (Equaliy spaced base points)</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[x_{i+1}-x_i = h \quad \forall i\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[I \approx h \left\{ \frac{1}{2} \left[f(x_0)+f(x_n)\right] +
|
||||
\sum\limits_{i=1}^{n-1} f(x_i) \right\}\]</div>
|
||||
<p class="rubric">Example</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}I &= \int\limits_a^b f(x) \,\mathrm{d}x \\
|
||||
f(x) &= x^2 \\
|
||||
a &= 0 \\
|
||||
b &= 1\end{split}\]</div>
|
||||
<p>analytical solution</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[I = \int\limits_{0}^{1} x^2 \,\mathrm{d}x
|
||||
= \left. \frac{1}{3} x^3 \right\vert_0^1
|
||||
= \frac{1}{3}\]</div>
|
||||
<p>numerical solution</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span>
|
||||
<span class="gp">>>> </span><span class="n">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="go">0.5</span>
|
||||
<span class="gp">>>> </span><span class="n">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="go">0.3350000000000001</span>
|
||||
<span class="gp">>>> </span><span class="n">trapez</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
|
||||
<span class="go">0.33335000000000004</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-pylib.numerical.ode">
|
||||
<span id="pylib-numerical-ode-module"></span><h2>pylib.numerical.ode module<a class="headerlink" href="#module-pylib.numerical.ode" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Numerical solver of ordinary differential equations.</p>
|
||||
<p>Solves the initial value problem for systems of first order
|
||||
ordinary differential equations.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2015-09-21</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-ode"></span><dl class="function">
|
||||
<dt id="pylib.numerical.ode.e1">
|
||||
<code class="sig-name descname">e1</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#e1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.e1" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Explicit first-order method /
|
||||
(standard, or forward) Euler method /
|
||||
Runge-Kutta 1st order method.</p>
|
||||
<p>de:
|
||||
Euler’sche Polygonzugverfahren / explizite Euler-Verfahren /
|
||||
Euler-Cauchy-Verfahren / Euler-vorwärts-Verfahren</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>Approximate the solution of the initial value problem</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x} &= f(t,x) \\
|
||||
x(t_0) &= x_0\end{split}\]</div>
|
||||
<p>Choose a value h for the size of every step and set</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[t_i = t_0 + i h ~,\quad i=1,2,\ldots,n\]</div>
|
||||
<p>The derivative of the solution is approximated as the forward
|
||||
difference equation</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\dot{x}_i = f(t_i, x_i) = \frac{x_{i+1} - x_i}{t_{i+1}-t_i}\]</div>
|
||||
<p>Therefore one step <span class="math notranslate nohighlight">\(h\)</span> of the Euler method from
|
||||
<span class="math notranslate nohighlight">\(t_i\)</span> to <span class="math notranslate nohighlight">\(t_{i+1}\)</span> is</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}x_{i+1} &= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\
|
||||
x_{i+1} &= x_i + h f(t_i, x_i) \\\end{split}\]</div>
|
||||
<p>Example 1:</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}m\ddot{u} + d\dot{u} + ku = f(t) \\
|
||||
\ddot{u} = m^{-1}(f(t) - d\dot{u} - ku) \\\end{split}\]</div>
|
||||
<p>with</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}x_1 &= u &\quad \dot{x}_1 = \dot{u} = x_2 \\
|
||||
x_2 &= \dot{u} &\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
|
||||
<p>becomes</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x}_1 &= x_2 \\
|
||||
\dot{x}_2 &= m^{-1}(f(t) - d x_2 - k x_1) \\\end{split}\]</div>
|
||||
<p>or</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x} &= f(t,x) \\
|
||||
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &=
|
||||
\begin{bmatrix} x_2 \\ m^{-1}(f(t) - d x_2 - k x_1)
|
||||
\end{bmatrix} \\
|
||||
&=
|
||||
\begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +
|
||||
\begin{bmatrix} 0 & 1 \\ -m^{-1} k & -m^{-1} d \end{bmatrix}
|
||||
\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}\end{split}\]</div>
|
||||
<p>Example 2:</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}m(u)\ddot{u} + d(u,\dot{u})\dot{u} + k(u)u = f(t) \\
|
||||
\ddot{u} = m^{-1}(u)(f(t) - d(u,\dot{u})\dot{u} - k(u)u) \\\end{split}\]</div>
|
||||
<p>with</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}x_1 &= u &\quad \dot{x}_1 = \dot{u} = x_2 \\
|
||||
x_2 &= \dot{u} &\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
|
||||
<p>becomes</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x}_1 &= x_2 \\
|
||||
\dot{x}_2 &=
|
||||
m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1) \\\end{split}\]</div>
|
||||
<p>or</p>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\begin{split}\dot{x} &= f(t,x) \\
|
||||
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &=
|
||||
\begin{bmatrix}
|
||||
x_2 \\ m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1)
|
||||
\end{bmatrix} \\
|
||||
&=
|
||||
\begin{bmatrix} 0 \\ m^{-1}(x_1) f(t) \end{bmatrix} +
|
||||
\begin{bmatrix}
|
||||
0 & 1 \\ -m^{-1}(x_1) k(x_1) & -m^{-1} d(x_1,x_2)
|
||||
\end{bmatrix}
|
||||
\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}\end{split}\]</div>
|
||||
<p>The Euler method is a first-order method, which means that the
|
||||
local error (error per step) is proportional to the square of
|
||||
the step size, and the global error (error at a given time) is
|
||||
proportional to the step size.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.e2">
|
||||
<code class="sig-name descname">e2</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#e2"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.e2" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Explicit second-order method / Runge-Kutta 2nd order method.</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.e4">
|
||||
<code class="sig-name descname">e4</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#e4"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.e4" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Explicit fourth-order method / Runge-Kutta 4th order method.</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.fpi">
|
||||
<code class="sig-name descname">fpi</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">xi</em>, <em class="sig-param">ti</em>, <em class="sig-param">ti1</em>, <em class="sig-param">*p</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#fpi"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.fpi" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Fixed-point iteration.</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>) – the function to iterate <span class="math notranslate nohighlight">\(f = \dot{x}(x,t)\)</span></p></li>
|
||||
<li><p><strong>xi</strong> (<em>list</em>) – initial condition <span class="math notranslate nohighlight">\(x_i\)</span></p></li>
|
||||
<li><p><strong>ti</strong> (<em>float</em>) – time <span class="math notranslate nohighlight">\(t_i\)</span></p></li>
|
||||
<li><p><strong>ti1</strong> (<em>float</em>) – time <span class="math notranslate nohighlight">\(t_{i+1}\)</span></p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>max_iterations</strong> (<em>int</em>) – maximum number of iterations</p></li>
|
||||
<li><p><strong>tol</strong> (<em>float</em>) – tolerance against residuum <span class="math notranslate nohighlight">\(\varepsilon\)</span>
|
||||
(default = 1e-9)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><span class="math notranslate nohighlight">\(x_{i}\)</span></p>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[x_{i,j=0} = x_{i}\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[x_{i,j+1} = x_i + \dot{x}(x_{i,j}, t_{i+1})\cdot(t_{i+1}-t_i)\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[\text{residuum} = \frac{\lVert x_{i,j+1}-x_{i,j}\rVert}
|
||||
{\lVert x_{i,j+1} \rVert} < \varepsilon\]</div>
|
||||
<div class="math notranslate nohighlight">
|
||||
\[x_{i} = x_{i,j=\text{end}}\]</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.i1">
|
||||
<code class="sig-name descname">i1</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#i1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.i1" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Implicite first-order method / backward Euler method.</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>max_iterations</strong> (<em>int</em>) – maximum number of iterations</p></li>
|
||||
<li><p><strong>tol</strong> (<em>float</em>) – tolerance against residuum (default = 1e-9)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>The backward Euler method has order one and is A-stable.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.newmark_newtonraphson">
|
||||
<code class="sig-name descname">newmark_newtonraphson</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x0</em>, <em class="sig-param">xp0</em>, <em class="sig-param">xpp0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">gamma=0.5</em>, <em class="sig-param">beta=0.25</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#newmark_newtonraphson"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.newmark_newtonraphson" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Newmark method.</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>xp0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>xpp0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>gamma</strong> (<em>float</em>) – newmark parameter for velocity (default = 0.5)</p></li>
|
||||
<li><p><strong>beta</strong> (<em>float</em>) – newmark parameter for displacement (default = 0.25)</p></li>
|
||||
<li><p><strong>max_iterations</strong> (<em>int</em>) – maximum number of iterations</p></li>
|
||||
<li><p><strong>tol</strong> (<em>float</em>) – tolerance against residuum (default = 1e-9)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode.newmark_newtonraphson_rdk">
|
||||
<code class="sig-name descname">newmark_newtonraphson_rdk</code><span class="sig-paren">(</span><em class="sig-param">fnm</em>, <em class="sig-param">x0</em>, <em class="sig-param">xp0</em>, <em class="sig-param">xpp0</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em>, <em class="sig-param">gamma=0.5</em>, <em class="sig-param">beta=0.25</em>, <em class="sig-param">max_iterations=1000</em>, <em class="sig-param">tol=1e-09</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode.html#newmark_newtonraphson_rdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode.newmark_newtonraphson_rdk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Newmark method.</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>) – the function to solve</p></li>
|
||||
<li><p><strong>x0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>xp0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>xpp0</strong> (<em>list</em>) – initial condition</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – parameters of the function (thickness, diameter,
|
||||
…)</p></li>
|
||||
<li><p><strong>gamma</strong> (<em>float</em>) – newmark parameter for velocity (default = 0.5)</p></li>
|
||||
<li><p><strong>beta</strong> (<em>float</em>) – newmark parameter for displacement (default = 0.25)</p></li>
|
||||
<li><p><strong>max_iterations</strong> (<em>int</em>) – maximum number of iterations</p></li>
|
||||
<li><p><strong>tol</strong> (<em>float</em>) – tolerance against residuum (default = 1e-9)</p></li>
|
||||
<li><p><strong>verbose</strong> (<em>bool</em>) – print information (default = False)</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-pylib.numerical.ode_model">
|
||||
<span id="pylib-numerical-ode-model-module"></span><h2>pylib.numerical.ode_model module<a class="headerlink" href="#module-pylib.numerical.ode_model" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Mathmatical models governed by ordinary differential equations.</p>
|
||||
<p>Describes initial value problems as systems of first order ordinary differential
|
||||
equations.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Date</dt>
|
||||
<dd class="field-odd"><p>2019-05-25</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="target" id="module-ode_model"></span><dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk">
|
||||
<code class="sig-name descname">disk</code><span class="sig-paren">(</span><em class="sig-param">x</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>x</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk_nm">
|
||||
<code class="sig-name descname">disk_nm</code><span class="sig-paren">(</span><em class="sig-param">xn</em>, <em class="sig-param">xpn</em>, <em class="sig-param">xppn</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk_nm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk_nm" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>xn</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>xpn</strong> (<em>list</em>) – first derivative values of the function</p></li>
|
||||
<li><p><strong>xppn</strong> (<em>list</em>) – second derivative values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="pylib.numerical.ode_model.disk_nmmdk">
|
||||
<code class="sig-name descname">disk_nmmdk</code><span class="sig-paren">(</span><em class="sig-param">xn</em>, <em class="sig-param">xpn</em>, <em class="sig-param">xppn</em>, <em class="sig-param">t</em>, <em class="sig-param">*p</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/numerical/ode_model.html#disk_nmmdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.numerical.ode_model.disk_nmmdk" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Rotation of an eccentric disk.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>xn</strong> (<em>list</em>) – values of the function</p></li>
|
||||
<li><p><strong>xpn</strong> (<em>list</em>) – derivative values of the function</p></li>
|
||||
<li><p><strong>xppn</strong> (<em>list</em>) – second derivative values of the function</p></li>
|
||||
<li><p><strong>t</strong> (<em>list</em>) – time</p></li>
|
||||
<li><p><strong>*p</strong> – <p>parameters of the function</p>
|
||||
<ul>
|
||||
<li><p>diameter</p></li>
|
||||
<li><p>eccentricity</p></li>
|
||||
<li><p>torque</p></li>
|
||||
</ul>
|
||||
</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-pylib.numerical">
|
||||
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-pylib.numerical" title="Permalink to this headline">¶</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="index.html">pylib</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/pylib.numerical.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
2
docs/build/html/search.html
vendored
2
docs/build/html/search.html
vendored
@@ -101,7 +101,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
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
docs/build/html/time_of_day.html
vendored
2
docs/build/html/time_of_day.html
vendored
@@ -267,7 +267,7 @@
|
||||
©2019, Daniel Weschke.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.0</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
46
docs/source/pylib.numerical.rst
Normal file
46
docs/source/pylib.numerical.rst
Normal file
@@ -0,0 +1,46 @@
|
||||
pylib.numerical package
|
||||
=======================
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
pylib.numerical.fit module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.fit
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.integration module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.integration
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.ode module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.ode
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.numerical.ode\_model module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: pylib.numerical.ode_model
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Module contents
|
||||
---------------
|
||||
|
||||
.. automodule:: pylib.numerical
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
77
docs/source/pylib.rst
Normal file
77
docs/source/pylib.rst
Normal file
@@ -0,0 +1,77 @@
|
||||
pylib package
|
||||
=============
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
pylib.numerical
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
pylib.data module
|
||||
-----------------
|
||||
|
||||
.. automodule:: pylib.data
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.date module
|
||||
-----------------
|
||||
|
||||
.. automodule:: pylib.date
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.function module
|
||||
---------------------
|
||||
|
||||
.. automodule:: pylib.function
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.geometry module
|
||||
---------------------
|
||||
|
||||
.. automodule:: pylib.geometry
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.geometry\_plot module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: pylib.geometry_plot
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.mathematics module
|
||||
------------------------
|
||||
|
||||
.. automodule:: pylib.mathematics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
pylib.time\_of\_day module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: pylib.time_of_day
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Module contents
|
||||
---------------
|
||||
|
||||
.. automodule:: pylib
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
Reference in New Issue
Block a user