move geometry to geometry2d and add new geometry module (3d)

This commit is contained in:
2019-12-21 12:51:34 +01:00
parent 9319d1bb06
commit 95a289be75
102 changed files with 3771 additions and 9082 deletions

View File

@@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: aaf67f6f94ce2e6ce3750a4b226f6461 config: 2cbc17343901b023dfef01a2244f3120
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@@ -1,305 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>data &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;check if data is available&#39;</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">&#39;\s+&#39;</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">&#39;data file not found&#39;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;w&#39;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;check if data is available&#39;</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">&#39;rb&#39;</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">&#39;found:&#39;</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">&#39;no saved datas found&#39;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;wb&#39;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;.&#39;</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">&#39;.&#39;</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">&#39;.&#39;</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">&#39;.&#39;</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">&gt;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&gt;</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="../data.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,221 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>date &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="gaußsche_osterformel"><a class="viewcode-back" href="../date.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../date.html#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">&quot;&quot;&quot;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&quot;&quot;&quot;</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="../date.html#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">&quot;&quot;&quot;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&quot;&quot;&quot;</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="../date.html#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">&quot;&quot;&quot;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&quot;&quot;&quot;</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="../date.html#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">&quot;&quot;&quot;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&quot;&quot;&quot;</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="../date.html#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">&quot;&quot;&quot;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&quot;&quot;&quot;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,516 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>function &#8212; 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 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">&quot;&quot;&quot;Mathematical equations.</span>
<span class="sd">:Date: 2019-11-15</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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">math</span>
<span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">seq</span>
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">import</span> <span class="n">lcm</span>
<div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../function.html#function.transformation">[docs]</a><span class="k">def</span> <span class="nf">transformation</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">scale_vertical</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_horizontal</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">shift_horizontal</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">shift_vertical</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;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: &quot;a&quot; 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: &quot;b&quot; 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: &quot;c&quot; 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: &quot;d&quot; 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"> &quot;&quot;&quot;</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="../function.html#function.sine_wave">[docs]</a><span class="k">def</span> <span class="nf">sine_wave</span><span class="p">(</span><span class="n">A</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">f</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">D</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">degree</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;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 ω &lt; 0 the wave is</span>
<span class="sd"> moving to the right, if ω &gt; 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"> &quot;&quot;&quot;</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="../function.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../function.html#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">&quot;&quot;&quot;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"> &gt;&gt;&gt; x, y = hyotrochoid(20, 6, 6)[:1]</span>
<span class="sd"> &gt;&gt;&gt; x, y, theta_end = hyotrochoid(20, 6, 6)</span>
<span class="sd"> .. seealso::</span>
<span class="sd"> :meth:`mathematics.lcm`</span>
<span class="sd"> &quot;&quot;&quot;</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="../function.html#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">&quot;&quot;&quot;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"> &gt;&gt;&gt; x, y = epitrochoid(3, 1, 0.5)[:1]</span>
<span class="sd"> &gt;&gt;&gt; x, y, theta_end = epitrochoid(3, 1, 0.5)</span>
<span class="sd"> &quot;&quot;&quot;</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="../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">&quot;line&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;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 &quot;braille&quot; or &quot;block&quot;. &quot;braille&quot; 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 &quot;block&quot; 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=&quot;histogram&quot;</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 &quot;line&quot; or &quot;histogram&quot;</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 &#39;normal&#39; 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 + - | * *|| * *|| * *| ---&gt; 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 + - | --- || --- || --- | ---&gt; 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 &lt;ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt&gt;`_</span>
<span class="sd"> .. seealso::</span>
<span class="sd"> :meth:`pylib.function.transformation`</span>
<span class="sd"> &quot;&quot;&quot;</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 &quot;positive side&quot;.</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">&quot;&quot;</span>
<span class="k">if</span> <span class="n">char_set</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;line&quot;</span><span class="p">,</span> <span class="s2">&quot;braille&quot;</span><span class="p">]:</span>
<span class="kn">import</span> <span class="nn">drawille</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">&quot;histogram&quot;</span><span class="p">,</span> <span class="s2">&quot;block&quot;</span><span class="p">]:</span>
<span class="kn">import</span> <span class="nn">drawblock</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,185 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>geometry_plot &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</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="kn">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">&#39;dark_background&#39;</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">&#39;grid.color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;gray&#39;</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">&#39;linewidth&#39;</span><span class="p">,</span> <span class="s1">&#39;linestyle&#39;</span><span class="p">,</span> <span class="s1">&#39;color&#39;</span><span class="p">,</span>
<span class="s1">&#39;marker&#39;</span><span class="p">,</span> <span class="s1">&#39;markersize&#39;</span><span class="p">,</span> <span class="s1">&#39;markeredgewidth&#39;</span><span class="p">,</span> <span class="s1">&#39;markeredgecolor&#39;</span><span class="p">,</span>
<span class="s1">&#39;markerfacecolor&#39;</span><span class="p">,</span> <span class="s1">&#39;markerfacecoloralt&#39;</span><span class="p">,</span>
<span class="s1">&#39;fillstyle&#39;</span><span class="p">,</span> <span class="s1">&#39;antialiased&#39;</span><span class="p">,</span>
<span class="s1">&#39;dash_capstyle&#39;</span><span class="p">,</span> <span class="s1">&#39;solid_capstyle&#39;</span><span class="p">,</span>
<span class="s1">&#39;dash_joinstyle&#39;</span><span class="p">,</span> <span class="s1">&#39;solid_joinstyle&#39;</span><span class="p">,</span>
<span class="s1">&#39;pickradius&#39;</span><span class="p">,</span> <span class="s1">&#39;drawstyle&#39;</span><span class="p">,</span> <span class="s1">&#39;markevery&#39;</span><span class="p">,</span>
<span class="p">]</span>
<div class="viewcode-block" id="plot_lines"><a class="viewcode-back" href="../geometry_plot.html#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">&#39;color&#39;</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 &quot;tab10&quot; 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">&quot;tab10&quot;</span><span class="p">)</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;color&#39;</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">&#39;axes.prop_cycle&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">by_key</span><span class="p">()[</span><span class="s1">&#39;color&#39;</span><span class="p">]</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;color&#39;</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">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;C0&quot;</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="../geometry_plot.html#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">&#39;color&#39;</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 &quot;tab10&quot; 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">&quot;tab10&quot;</span><span class="p">)</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;color&#39;</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">&#39;axes.prop_cycle&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">by_key</span><span class="p">()[</span><span class="s1">&#39;color&#39;</span><span class="p">]</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;color&#39;</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">&#39;color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;C0&quot;</span>
<span class="n">factor</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="s1">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;samples&#39;</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">&#39;samples&#39;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Overview: module code &#8212; pylib 2019.5.19 documentation</title> <title>Overview: module code &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
@@ -33,29 +33,19 @@
<div class="body" role="main"> <div class="body" role="main">
<h1>All modules for which code is available</h1> <h1>All modules for which code is available</h1>
<ul><li><a href="data.html">data</a></li> <ul><li><a href="pylib/data.html">pylib.data</a></li>
<li><a href="date.html">date</a></li>
<li><a href="function.html">function</a></li>
<li><a href="geometry.html">geometry</a></li>
<li><a href="geometry_plot.html">geometry_plot</a></li>
<li><a href="mathematics.html">mathematics</a></li>
<li><a href="numerical/fit.html">numerical.fit</a></li>
<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/date.html">pylib.date</a></li>
<li><a href="pylib/drawblock.html">pylib.drawblock</a></li> <li><a href="pylib/drawblock.html">pylib.drawblock</a></li>
<li><a href="pylib/function.html">pylib.function</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.html">pylib.geometry</a></li>
<li><a href="pylib/geometry_plot.html">pylib.geometry_plot</a></li> <li><a href="pylib/geometry2d.html">pylib.geometry2d</a></li>
<li><a href="pylib/geometry2d_plot.html">pylib.geometry2d_plot</a></li>
<li><a href="pylib/mathematics.html">pylib.mathematics</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/fit.html">pylib.numerical.fit</a></li>
<li><a href="pylib/numerical/integration.html">pylib.numerical.integration</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.html">pylib.numerical.ode</a></li>
<li><a href="pylib/numerical/ode_model.html">pylib.numerical.ode_model</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="pylib/time_of_day.html">pylib.time_of_day</a></li>
<li><a href="time_of_day.html">time_of_day</a></li>
</ul> </ul>
</div> </div>
@@ -74,6 +64,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

File diff suppressed because it is too large Load Diff

View File

@@ -1,196 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>numerical.fit &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
<span class="kn">from</span> <span class="nn">pylab</span> <span class="kn">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="kn">import</span> <span class="n">curve_fit</span>
<div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;p0:&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39; &#39;</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">&#39;popt:&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39; &#39;</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">&#39;FWHM&#39;</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">&quot;__main__&quot;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,250 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>numerical.integration &#8212; 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 numerical.integration</h1><div class="highlight"><pre>
<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span>
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">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="../../numerical.html#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">&quot;&quot;&quot;</span>
<span class="sd"> Integration of :math:`f(x)` using the trapezoidal rule</span>
<span class="sd"> (Simpson&#39;s rule, Kepler&#39;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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\</span>
<span class="sd"> I &amp;\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\</span>
<span class="sd"> &amp;= \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"> &amp;= \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"> &amp;= \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 &amp;\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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\</span>
<span class="sd"> f(x) &amp;= x^2 \\</span>
<span class="sd"> a &amp;= 0 \\</span>
<span class="sd"> b &amp;= 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"> &gt;&gt;&gt; f = lambda(x): x**2</span>
<span class="sd"> &gt;&gt;&gt; trapez(f, 0, 1, 1)</span>
<span class="sd"> 0.5</span>
<span class="sd"> &gt;&gt;&gt; trapez(f, 0, 1, 10)</span>
<span class="sd"> 0.3350000000000001</span>
<span class="sd"> &gt;&gt;&gt; trapez(f, 0, 1, 100)</span>
<span class="sd"> 0.33335000000000004</span>
<span class="sd"> &quot;&quot;&quot;</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">&#39;__main__&#39;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,540 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>numerical.ode &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">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="kn">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="kn">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="../../numerical.html#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">&quot;&quot;&quot;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&#39;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} &amp;= f(t,x) \\</span>
<span class="sd"> x(t_0) &amp;= 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} &amp;= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\</span>
<span class="sd"> x_{i+1} &amp;= 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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\</span>
<span class="sd"> x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\</span>
<span class="sd"> becomes</span>
<span class="sd"> .. math ::</span>
<span class="sd"> \dot{x}_1 &amp;= x_2 \\</span>
<span class="sd"> \dot{x}_2 &amp;= 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} &amp;= f(t,x) \\</span>
<span class="sd"> \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=</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"> &amp;=</span>
<span class="sd"> \begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +</span>
<span class="sd"> \begin{bmatrix} 0 &amp; 1 \\ -m^{-1} k &amp; -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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\</span>
<span class="sd"> x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\</span>
<span class="sd"> becomes</span>
<span class="sd"> .. math ::</span>
<span class="sd"> \dot{x}_1 &amp;= x_2 \\</span>
<span class="sd"> \dot{x}_2 &amp;=</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} &amp;= f(t,x) \\</span>
<span class="sd"> \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=</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"> &amp;=</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 &amp; 1 \\ -m^{-1}(x_1) k(x_1) &amp; -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"> &quot;&quot;&quot;</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">&#39;Numerical integration of ODE using explicit &#39;</span> <span class="o">+</span>
<span class="s1">&#39;first-order method (Euler / Runge-Kutta) was successful.&#39;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;Numerical integration of ODE using explicit &#39;</span> <span class="o">+</span>
<span class="s1">&#39;2th-order method (Runge-Kutta) was successful.&#39;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;Numerical integration of ODE using explicit &#39;</span> <span class="o">+</span>
<span class="s1">&#39;4th-order method (Runge-Kutta) was successful.&#39;</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="../../numerical.html#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">&quot;&quot;&quot;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} &lt; \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"> &quot;&quot;&quot;</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">&lt;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;Numerical integration of ODE using implicite &#39;</span> <span class="o">+</span>
<span class="s1">&#39;first-order method (Euler) was successful.&#39;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;divergiert&#39;</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">&lt;</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">&#39;Numerical integration of ODE using explicite &#39;</span> <span class="o">+</span>
<span class="s1">&#39;newmark method was successful.&#39;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&lt;</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">&#39;Numerical integration of ODE using explicite &#39;</span> <span class="o">+</span>
<span class="s1">&#39;newmark method was successful.&#39;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,219 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>numerical.ode_model &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">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="kn">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="kn">import</span> <span class="n">inv</span>
<div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../../numerical.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&#39;__main__&#39;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.data &#8212; pylib 2019.5.19 documentation</title> <title>pylib.data &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -48,7 +48,7 @@
<span class="kn">import</span> <span class="nn">math</span> <span class="kn">import</span> <span class="nn">math</span>
<span class="kn">import</span> <span class="nn">pickle</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> <div class="viewcode-block" id="read"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Read ascii data file.</span> <span class="sd">&quot;&quot;&quot;Read ascii data file.</span>
<span class="sd"> :param filename: file to read</span> <span class="sd"> :param filename: file to read</span>
@@ -86,7 +86,7 @@
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;data file not found&#39;</span><span class="p">)</span> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;data file not found&#39;</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> <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> <div class="viewcode-block" id="write"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Write ascii file.</span> <span class="sd">&quot;&quot;&quot;Write ascii file.</span>
<span class="sd"> :param file_name: file to write</span> <span class="sd"> :param file_name: file to write</span>
@@ -97,7 +97,7 @@
<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">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</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">&#39;w&#39;</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> <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> <div class="viewcode-block" id="load"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Load stored program objects from binary file.</span> <span class="sd">&quot;&quot;&quot;Load stored program objects from binary file.</span>
<span class="sd"> :param file_name: file to load</span> <span class="sd"> :param file_name: file to load</span>
@@ -125,7 +125,7 @@
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;no saved datas found&#39;</span><span class="p">)</span> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;no saved datas found&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">object_data</span></div> <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> <div class="viewcode-block" id="store"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Store program objects to binary file.</span> <span class="sd">&quot;&quot;&quot;Store program objects to binary file.</span>
<span class="sd"> :param file_name: file to store</span> <span class="sd"> :param file_name: file to store</span>
@@ -137,7 +137,7 @@
<span class="c1"># every dump needs a load</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> <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> <div class="viewcode-block" id="fold_list"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Convert one-dimensional kx1 array (list) to two-dimensional mxn</span> <span class="sd">&quot;&quot;&quot;Convert one-dimensional kx1 array (list) to two-dimensional mxn</span>
<span class="sd"> array. m = k / n</span> <span class="sd"> array. m = k / n</span>
@@ -154,7 +154,7 @@
<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="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> <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> <div class="viewcode-block" id="seq"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Create an arithmetic bounded sequence.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Create an arithmetic bounded sequence.</span>
<span class="sd"> The sequence is one of the following;</span> <span class="sd"> The sequence is one of the following;</span>
@@ -208,7 +208,7 @@
<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="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> <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> <div class="viewcode-block" id="unique_ending"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;From id list get list with unique ending.</span> <span class="sd">&quot;&quot;&quot;From id list get list with unique ending.</span>
<span class="sd"> :param ids: ids</span> <span class="sd"> :param ids: ids</span>
@@ -226,7 +226,7 @@
<span class="k">else</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> <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> <div class="viewcode-block" id="get_id"><a class="viewcode-back" href="../../pylib.data.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">&quot;&quot;&quot;Get full id from unique id ending.</span> <span class="sd">&quot;&quot;&quot;Get full id from unique id ending.</span>
<span class="sd"> :param ids: ids</span> <span class="sd"> :param ids: ids</span>
@@ -257,6 +257,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.date &#8212; pylib 2019.5.19 documentation</title> <title>pylib.date &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -46,7 +46,7 @@
<span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span> <span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</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> <div class="viewcode-block" id="gaußsche_osterformel"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Gaußsche Osterformel.</span> <span class="sd">&quot;&quot;&quot;Gaußsche Osterformel.</span>
<span class="sd"> :param year: the year to calculate the Easter Sunday</span> <span class="sd"> :param year: the year to calculate the Easter Sunday</span>
@@ -95,7 +95,7 @@
<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="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> <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> <div class="viewcode-block" id="easter_sunday"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Easter Sunday.</span> <span class="sd">&quot;&quot;&quot;Easter Sunday.</span>
<span class="sd"> :param year: the year to calculate the Easter Sunday</span> <span class="sd"> :param year: the year to calculate the Easter Sunday</span>
@@ -108,7 +108,7 @@
<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="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> <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> <div class="viewcode-block" id="easter_friday"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Easter Friday.</span> <span class="sd">&quot;&quot;&quot;Easter Friday.</span>
<span class="sd"> :param year: the year to calculate the Easter Friday</span> <span class="sd"> :param year: the year to calculate the Easter Friday</span>
@@ -120,7 +120,7 @@
<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="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> <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> <div class="viewcode-block" id="easter_monday"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Easter Monday.</span> <span class="sd">&quot;&quot;&quot;Easter Monday.</span>
<span class="sd"> :param year: the year to calculate the Easter Monday</span> <span class="sd"> :param year: the year to calculate the Easter Monday</span>
@@ -132,7 +132,7 @@
<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="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> <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> <div class="viewcode-block" id="ascension_of_jesus"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Ascension of Jesus.</span> <span class="sd">&quot;&quot;&quot;Ascension of Jesus.</span>
<span class="sd"> :param year: the year to calculate the ascension of Jesus</span> <span class="sd"> :param year: the year to calculate the ascension of Jesus</span>
@@ -144,7 +144,7 @@
<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="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> <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> <div class="viewcode-block" id="pentecost"><a class="viewcode-back" href="../../pylib.date.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">&quot;&quot;&quot;Pentecost.</span> <span class="sd">&quot;&quot;&quot;Pentecost.</span>
<span class="sd"> :param year: the year to calculate the Pentecost</span> <span class="sd"> :param year: the year to calculate the Pentecost</span>
@@ -173,6 +173,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.drawblock &#8212; pylib 2019.5.19 documentation</title> <title>pylib.drawblock &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -35,12 +35,23 @@
<h1>Source code for pylib.drawblock</h1><div class="highlight"><pre> <h1>Source code for pylib.drawblock</h1><div class="highlight"><pre>
<span></span><span class="ch">#!/usr/bin/env python</span> <span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: utf-8 -*-</span> <span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;Draw with block characters.</span>
<span class="sd">:Date: 2019-11-15</span>
<div class="viewcode-block" id="histogram"><a class="viewcode-back" href="../../pylib.html#pylib.drawblock.histogram">[docs]</a><span class="k">def</span> <span class="nf">histogram</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="sd">.. module:: drawblock</span>
<span class="sd"> :platform: *nix, Windows</span>
<span class="sd"> :synopsis: Draw with block characters.</span>
<span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="histogram"><a class="viewcode-back" href="../../pylib.drawblock.html#pylib.drawblock.histogram">[docs]</a><span class="k">def</span> <span class="nf">histogram</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="sd">&quot;&quot;&quot;Histogram chart with block symbols.</span> <span class="sd">&quot;&quot;&quot;Histogram chart with block symbols.</span>
<span class="sd"> dots:</span> <span class="sd"> ::</span>
<span class="sd"> dots</span>
<span class="sd"> ,_,</span> <span class="sd"> ,_,</span>
<span class="sd"> |8|</span> <span class="sd"> |8|</span>
<span class="sd"> |7|</span> <span class="sd"> |7|</span>
@@ -176,6 +187,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.function &#8212; pylib 2019.5.19 documentation</title> <title>pylib.function &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -49,7 +49,7 @@
<span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">seq</span> <span class="kn">from</span> <span class="nn">pylib.data</span> <span class="kn">import</span> <span class="n">seq</span>
<span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">import</span> <span class="n">lcm</span> <span class="kn">from</span> <span class="nn">pylib.mathematics</span> <span class="kn">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> <div class="viewcode-block" id="transformation"><a class="viewcode-back" href="../../pylib.function.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="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">&quot;&quot;&quot;Transform functions.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Transform functions.</span>
@@ -93,7 +93,7 @@
<span class="n">transformation</span><span class="p">(</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> <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> <div class="viewcode-block" id="sine_wave"><a class="viewcode-back" href="../../pylib.function.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">&quot;&quot;&quot;A sine wave or sinusoid is a mathematical curve that describes a</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;A sine wave or sinusoid is a mathematical curve that describes a</span>
<span class="sd"> smooth periodic oscillation.</span> <span class="sd"> smooth periodic oscillation.</span>
@@ -154,7 +154,7 @@
<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="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> <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> <div class="viewcode-block" id="cosine_wave"><a class="viewcode-back" href="../../pylib.function.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">&quot;&quot;&quot;A cosine wave is said to be sinusoidal, because,</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;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"> :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"> phase-shift of π/2 radians. Because of this head start, it is often</span>
@@ -194,7 +194,7 @@
<span class="c1"># roulette</span> <span class="c1"># roulette</span>
<span class="c1">#</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> <div class="viewcode-block" id="hypotrochoid"><a class="viewcode-back" href="../../pylib.function.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">&quot;&quot;&quot;Hypotrochoid</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Hypotrochoid</span>
<span class="sd"> A point is attached with a distance d from the center of a circle</span> <span class="sd"> A point is attached with a distance d from the center of a circle</span>
@@ -242,7 +242,7 @@
<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="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> <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> <div class="viewcode-block" id="epitrochoid"><a class="viewcode-back" href="../../pylib.function.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">&quot;&quot;&quot;Epitrochoid</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Epitrochoid</span>
<span class="sd"> A point is attached with a distance d from the center of a circle</span> <span class="sd"> A point is attached with a distance d from the center of a circle</span>
@@ -287,7 +287,7 @@
<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="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> <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">&quot;line&quot;</span><span class="p">):</span> <div class="viewcode-block" id="to_str"><a class="viewcode-back" href="../../pylib.function.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">&quot;line&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Represent functions as string frame with a specific character set.</span> <span class="sd">&quot;&quot;&quot;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"> which are normed to the range of [0, 1] to</span>
@@ -468,6 +468,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.geometry &#8212; pylib 2019.5.19 documentation</title> <title>pylib.geometry &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -37,7 +37,7 @@
<span class="c1"># -*- coding: utf-8 -*-</span> <span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;2D geometry objects.</span> <span class="sd">&quot;&quot;&quot;2D geometry objects.</span>
<span class="sd">:Date: 2019-08-28</span> <span class="sd">:Date: 2019-12-21</span>
<span class="sd">.. module:: geometry</span> <span class="sd">.. module:: geometry</span>
<span class="sd"> :platform: *nix, Windows</span> <span class="sd"> :platform: *nix, Windows</span>
@@ -46,504 +46,218 @@
<span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span> <span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">math</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> <span class="kn">import</span> <span class="nn">copy</span>
<span class="kn">from</span> <span class="nn">mathematics</span> <span class="kn">import</span> <span class="n">vector</span><span class="p">,</span> <span class="n">matrix</span>
<div class="viewcode-block" id="Direction"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Direction">[docs]</a><span class="k">class</span> <span class="nc">Direction</span><span class="p">(</span><span class="n">vector</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Direction in local coordinate system&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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">z</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</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="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Distance between two points (or length of a straight line).</span> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span></div>
<span class="sd"> :param point1: first point (first end point of straight line)</span> <div class="viewcode-block" id="Point"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Point">[docs]</a><span class="k">class</span> <span class="nc">Point</span><span class="p">(</span><span class="n">vector</span><span class="p">):</span>
<span class="sd"> :type point1: tuple</span> <span class="sd">&quot;&quot;&quot;Point in local coordinate system&quot;&quot;&quot;</span>
<span class="sd"> :param point2: second point (second end point of straight line)</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="sd"> :type point2: tuple</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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">z</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
<span class="sd"> :returns: distance between the two points</span> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd"> :rtype: float</span> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span></div>
<div class="viewcode-block" id="CS"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS">[docs]</a><span class="k">class</span> <span class="nc">CS</span><span class="p">(</span><span class="n">matrix</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Coordinate system</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</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">y</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">0</span><span class="p">],</span> <span class="n">z</span><span class="o">=</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="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</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="n">y</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">z</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">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">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s1">&#39;[&#39;</span> <span class="o">+</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_coordinates</span><span class="p">()])</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</span>
<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> <div class="viewcode-block" id="CS.x90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.x90">[docs]</a> <span class="nd">@staticmethod</span>
<span class="sd">&quot;&quot;&quot;Angle of point or between two points.</span> <span class="k">def</span> <span class="nf">x90</span><span class="p">():</span>
<span class="k">return</span> <span class="n">CS</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">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</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></div>
<span class="sd"> :param point1: (first) point</span> <div class="viewcode-block" id="CS.xm90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.xm90">[docs]</a> <span class="nd">@staticmethod</span>
<span class="sd"> :type point1: tuple</span> <span class="k">def</span> <span class="nf">xm90</span><span class="p">():</span>
<span class="sd"> :param point2: second point (default = None)</span> <span class="k">return</span> <span class="n">CS</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">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</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="mi">0</span><span class="p">))</span></div>
<span class="sd"> :type point2: tuple</span>
<span class="sd"> :returns: angle of point or between two points</span> <div class="viewcode-block" id="CS.y90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.y90">[docs]</a> <span class="nd">@staticmethod</span>
<span class="sd"> :rtype: float</span> <span class="k">def</span> <span class="nf">y90</span><span class="p">():</span>
<span class="k">return</span> <span class="n">CS</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="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="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></div>
<div class="viewcode-block" id="CS.ym90"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.ym90">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">ym90</span><span class="p">():</span>
<span class="k">return</span> <span class="n">CS</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">1</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="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></div>
<div class="viewcode-block" id="CS.get_coordinates"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.CS.get_coordinates">[docs]</a> <span class="k">def</span> <span class="nf">get_coordinates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Get coordinates in 3d space&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span></div></div>
<div class="viewcode-block" id="World"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World">[docs]</a><span class="k">class</span> <span class="nc">World</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;World-space with world-space coordinates</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</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="bp">self</span><span class="o">.</span><span class="n">_cs</span> <span class="o">=</span> <span class="n">CS</span><span class="p">()</span> <span class="c1"># Camera</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> <span class="bp">self</span><span class="o">.</span><span class="n">_objects</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_store_init</span><span class="p">()</span>
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Returns the Iterator object&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">objects</span><span class="p">())</span>
<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="k">def</span> <span class="nf">_store_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span> <span class="sd">&quot;&quot;&quot;Initialize or reset calculated values, because a new object was added.</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"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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="bp">self</span><span class="o">.</span><span class="n">_bb</span> <span class="o">=</span> <span class="kc">None</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> <span class="bp">self</span><span class="o">.</span><span class="n">_sd</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="World.cs"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.cs">[docs]</a> <span class="k">def</span> <span class="nf">cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">cs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cs</span> <span class="o">=</span> <span class="n">cs</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</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> <div class="viewcode-block" id="World.ch_cs"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</span> <span class="o">*</span> <span class="n">cs</span>
<span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> :param vec: translation vector</span> <div class="viewcode-block" id="World.rotate_x"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sd"> :type vec: tuple</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="o">.</span><span class="n">rotate_x</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
<span class="sd"> :param x: points to translate</span> <span class="k">return</span> <span class="bp">self</span></div>
<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&#39;, y&#39;)</span> <div class="viewcode-block" id="World.rotate_y"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sd"> :rtype: tuple</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="o">.</span><span class="n">rotate_y</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> .. seealso::</span> <div class="viewcode-block" id="World.rotate_z"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sd"> :meth:`translate`</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="o">.</span><span class="n">rotate_z</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="World.translate"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="World.scale"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="World.objects"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.objects">[docs]</a> <span class="k">def</span> <span class="nf">objects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="p">[</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cs</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_objects</span><span class="p">]</span></div>
<div class="viewcode-block" id="World.add"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">objects</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_store_init</span><span class="p">()</span> <span class="c1"># calculated values are not correct anymore</span>
<span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_objects</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">objects</span><span class="p">]</span>
<span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="World.bounding_box"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.bounding_box">[docs]</a> <span class="k">def</span> <span class="nf">bounding_box</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bb</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bb</span>
<span class="n">xmin</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="n">ymin</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="n">zmin</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="n">xmax</span> <span class="o">=</span> <span class="o">-</span><span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="n">ymax</span> <span class="o">=</span> <span class="o">-</span><span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="n">zmax</span> <span class="o">=</span> <span class="o">-</span><span class="n">math</span><span class="o">.</span><span class="n">inf</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_objects</span><span class="p">:</span>
<span class="n">xi</span><span class="p">,</span> <span class="n">yi</span><span class="p">,</span> <span class="n">zi</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">min</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span>
<span class="n">xs</span><span class="p">,</span> <span class="n">ys</span><span class="p">,</span> <span class="n">zs</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="nb">max</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">xyz</span><span class="p">())</span>
<span class="c1">#xmax = x if x &gt; xmax: xmax = x</span>
<span class="n">xmin</span> <span class="o">=</span> <span class="n">xi</span> <span class="k">if</span> <span class="n">xi</span> <span class="o">&lt;</span> <span class="n">xmin</span> <span class="k">else</span> <span class="n">xmin</span>
<span class="n">ymin</span> <span class="o">=</span> <span class="n">yi</span> <span class="k">if</span> <span class="n">yi</span> <span class="o">&lt;</span> <span class="n">ymin</span> <span class="k">else</span> <span class="n">ymin</span>
<span class="n">zmin</span> <span class="o">=</span> <span class="n">zi</span> <span class="k">if</span> <span class="n">zi</span> <span class="o">&lt;</span> <span class="n">zmin</span> <span class="k">else</span> <span class="n">zmin</span>
<span class="n">xmax</span> <span class="o">=</span> <span class="n">xs</span> <span class="k">if</span> <span class="n">xs</span> <span class="o">&gt;</span> <span class="n">xmax</span> <span class="k">else</span> <span class="n">xmax</span>
<span class="n">ymax</span> <span class="o">=</span> <span class="n">ys</span> <span class="k">if</span> <span class="n">ys</span> <span class="o">&gt;</span> <span class="n">ymax</span> <span class="k">else</span> <span class="n">ymax</span>
<span class="n">zmax</span> <span class="o">=</span> <span class="n">zs</span> <span class="k">if</span> <span class="n">zs</span> <span class="o">&gt;</span> <span class="n">zmax</span> <span class="k">else</span> <span class="n">zmax</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_bb</span> <span class="o">=</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span><span class="p">,</span> <span class="n">zmin</span><span class="p">,</span> <span class="n">zmax</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bb</span></div>
<div class="viewcode-block" id="World.space_diagonal"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.space_diagonal">[docs]</a> <span class="k">def</span> <span class="nf">space_diagonal</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sd</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sd</span>
<span class="n">bb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bounding_box</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">c</span> <span class="o">=</span> <span class="n">bb</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">bb</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bb</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">-</span><span class="n">bb</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">bb</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">bb</span><span class="p">[</span><span class="mi">4</span><span class="p">]</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">a</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">b</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="mi">2</span><span class="p">)</span></div>
<div class="viewcode-block" id="World.center"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.World.center">[docs]</a> <span class="k">def</span> <span class="nf">center</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">bb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bounding_box</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ch_cs</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="o">-</span><span class="p">(</span><span class="n">bb</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">bb</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="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="o">-</span><span class="p">(</span><span class="n">bb</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">-</span><span class="n">bb</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="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="o">-</span><span class="p">(</span><span class="n">bb</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">bb</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span><span class="o">/</span><span class="mi">2</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="mi">1</span><span class="p">]])</span>
<span class="k">return</span> <span class="bp">self</span></div></div>
<span class="c1"># TODO: Wireframe(list) or Wireframe(matrix) ?</span>
<span class="c1"># list of Points</span>
<div class="viewcode-block" id="Wireframe"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe">[docs]</a><span class="k">class</span> <span class="nc">Wireframe</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;Open and closed wireframe object in local coordinate system</span>
<span class="sd"> This class create its own points (copy).</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">points</span><span class="p">,</span> <span class="n">closed</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">points</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">x</span><span class="p">,</span> <span class="s2">&quot;__len__&quot;</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="n">closed</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">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</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">&quot;__len__&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="s1">&#39;[&#39;</span> <span class="o">+</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">point</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">])</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</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="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</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="sd">&quot;&quot;&quot;Returns the Iterator object&quot;&quot;&quot;</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="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">points</span><span class="p">())</span>
<span class="c1"># no list if it is only one value</span> <div class="viewcode-block" id="Wireframe.points"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.points">[docs]</a> <span class="k">def</span> <span class="nf">points</span><span class="p">(</span><span class="bp">self</span><span class="p">):</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="sd">&quot;&quot;&quot;Get coordinates in 3d space&quot;&quot;&quot;</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="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="k">return</span> <span class="n">result</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="k">else</span> <span class="n">result</span> <span class="o">+</span> <span class="p">[</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div>
<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="Wireframe.xyz"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.xyz">[docs]</a> <span class="k">def</span> <span class="nf">xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">i</span><span class="o">.</span><span class="n">xyz</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">points</span><span class="p">()])</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">&quot;&quot;&quot;Rotate a point or polygon counterclockwise by a given angle</span> <div class="viewcode-block" id="Wireframe.rotate_x"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sd"> around a given origin. The angle should be given in radians.</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_x</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> :param origin: the center of rotation</span>
<span class="sd"> :type origin: tuple</span> <div class="viewcode-block" id="Wireframe.rotate_y"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sd"> :param angle: the rotation angle</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_y</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="sd"> :type angle: int or float</span> <span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> :param `*pts`: points to rotate</span>
<span class="sd"> :param `**kwargs`: options</span> <div class="viewcode-block" id="Wireframe.rotate_z"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">rotate_z</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="sd"> :returns: (point_x, point_y) or (point1, point2, ...)</span> <span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> :rtype: tuple</span>
<div class="viewcode-block" id="Wireframe.translate"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
<span class="sd"> .. seealso::</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="sd"> :meth:`rotate_xy`</span> <span class="k">return</span> <span class="bp">self</span></div>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ox</span><span class="p">,</span> <span class="n">oy</span> <span class="o">=</span> <span class="n">origin</span> <div class="viewcode-block" id="Wireframe.scale"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">sy</span><span class="p">:</span>
<span class="c1"># add first point to the end</span> <span class="n">sy</span> <span class="o">=</span> <span class="n">sx</span>
<span class="k">if</span> <span class="s2">&quot;closed&quot;</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">&quot;closed&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> <span class="n">sz</span> <span class="o">=</span> <span class="n">sx</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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="k">return</span> <span class="bp">self</span></div>
<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> <div class="viewcode-block" id="Wireframe.ch_cs"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Wireframe.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</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="bp">self</span><span class="o">.</span><span class="n">_points</span> <span class="o">=</span> <span class="p">[</span><span class="n">point</span><span class="o">.</span><span class="n">ch_cs</span><span class="p">(</span><span class="n">cs</span><span class="p">)</span> <span class="k">for</span> <span class="n">point</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_points</span><span class="p">]</span>
<span class="k">return</span> <span class="bp">self</span></div></div>
<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> <div class="viewcode-block" id="Line"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Line">[docs]</a><span class="k">class</span> <span class="nc">Line</span><span class="p">(</span><span class="n">Wireframe</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="sd">&quot;&quot;&quot;Line a open wireframe object in local coordinate system&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">point1</span><span class="o">=</span><span class="n">Point</span><span class="p">(</span><span class="o">-</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">point2</span><span class="o">=</span><span class="n">Point</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="k">return</span> <span class="n">result</span></div> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="p">)</span></div>
<div class="viewcode-block" id="Polygon"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Polygon">[docs]</a><span class="k">class</span> <span class="nc">Polygon</span><span class="p">(</span><span class="n">Wireframe</span><span class="p">):</span>
<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">&quot;&quot;&quot;Polygon as closed wireframe object in local coordinate system&quot;&quot;&quot;</span>
<span class="sd">&quot;&quot;&quot;Rotate a point or polygon counterclockwise by a given angle</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">points</span><span class="p">):</span>
<span class="sd"> around a given origin. The angle should be given in degrees.</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">,</span> <span class="n">closed</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
<span class="sd"> :param origin: the center of rotation</span> <div class="viewcode-block" id="Circle"><a class="viewcode-back" href="../../pylib.geometry.html#pylib.geometry.Circle">[docs]</a><span class="k">class</span> <span class="nc">Circle</span><span class="p">(</span><span class="n">Polygon</span><span class="p">):</span>
<span class="sd"> :type origin: tuple</span> <span class="sd">&quot;&quot;&quot;Circle a closed wireframe object in local coordinate system&quot;&quot;&quot;</span>
<span class="sd"> :param angle: the rotation angle</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">radius</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="sd"> :type angle: int or float</span> <span class="n">points</span> <span class="o">=</span> <span class="p">[]</span>
<span class="sd"> :param `*pts`: points to rotate</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="sd"> :param `**kwargs`: options</span> <span class="n">x</span> <span class="o">=</span> <span class="n">radius</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">i</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">n</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">radius</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">i</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">n</span><span class="p">)</span>
<span class="sd"> :returns: (point_x, point_y) or (point1, point2, ...)</span> <span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Point</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="mi">0</span><span class="p">))</span>
<span class="sd"> :rtype: tuple</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">points</span><span class="p">)</span></div>
<span class="sd"> .. seealso::</span>
<span class="sd"> :meth:`rotate`</span>
<span class="sd"> &quot;&quot;&quot;</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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&quot;__len__&quot;</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">&quot;__len__&quot;</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">&quot;closed&quot;</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">&quot;closed&quot;</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">&quot;&quot;&quot;\</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"> &quot;&quot;&quot;</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">&quot;&quot;&quot;\</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"> &quot;&quot;&quot;</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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="s1">&#39;index_offset&#39;</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">&#39;index_offset&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">if</span> <span class="s1">&#39;deformation&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="k">if</span> <span class="s1">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;deformation&#39;</span><span class="p">])]</span>
<span class="k">if</span> <span class="s1">&#39;inc&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;inc&#39;</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">&quot;&quot;&quot;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 &#39;xy&#39; or &#39;xz&#39; (default</span>
<span class="sd"> = &#39;xy&#39;). 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"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="s1">&#39;index_offset&#39;</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">&#39;index_offset&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">if</span> <span class="s1">&#39;deformation&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="s1">&#39;global_deformation&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="k">if</span> <span class="s1">&#39;factor&#39;</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">&#39;factor&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="s1">&#39;inc&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="k">if</span> <span class="s1">&#39;global_deformation&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;inc&#39;</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">&#39;global_deformation&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="s1">&#39;rotation_plane&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="s1">&#39;xz&#39;</span> <span class="o">==</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;rotation_plane&#39;</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 -&gt; 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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;inc&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;inc&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;rotation_plane&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="s1">&#39;xz&#39;</span> <span class="o">==</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;rotation_plane&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;factor&#39;</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">&#39;deformation&#39;</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">&#39;factor&#39;</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">&#39;deformation&#39;</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">&#39;index_offset&#39;</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">&#39;index_offset&#39;</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">&#39;inc&#39;</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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&quot;&quot;&quot;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"> &gt;&gt;&gt; x, y = line((0, 0), (1, 0))</span>
<span class="sd"> &gt;&gt;&gt; print(x, y)</span>
<span class="sd"> ((0, 1), (0, 0))</span>
<span class="sd"> &quot;&quot;&quot;</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">&gt;</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">denominator</span> <span class="o">&gt;</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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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> </pre></div>
</div> </div>
@@ -562,6 +276,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,20 +4,20 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>geometry &#8212; pylib 2019.5.19 documentation</title> <title>pylib.geometry2d &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/custom.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" 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/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.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/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.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> <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="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../../search.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" /> <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" /> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
@@ -32,16 +32,16 @@
<div class="body" role="main"> <div class="body" role="main">
<h1>Source code for geometry</h1><div class="highlight"><pre> <h1>Source code for pylib.geometry2d</h1><div class="highlight"><pre>
<span></span><span class="ch">#!/usr/bin/env python</span> <span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: utf-8 -*-</span> <span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;2D geometry objects.</span> <span class="sd">&quot;&quot;&quot;2D geometry objects.</span>
<span class="sd">:Date: 2019-08-28</span> <span class="sd">:Date: 2019-08-28</span>
<span class="sd">.. module:: geometry</span> <span class="sd">.. module:: geometry2d</span>
<span class="sd"> :platform: *nix, Windows</span> <span class="sd"> :platform: *nix, Windows</span>
<span class="sd"> :synopsis: Geometry objects.</span> <span class="sd"> :synopsis: 2D geometry objects.</span>
<span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span> <span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</span>
@@ -49,7 +49,7 @@
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</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="../geometry.html#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> <div class="viewcode-block" id="distance"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Distance between two points (or length of a straight line).</span> <span class="sd">&quot;&quot;&quot;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"> :param point1: first point (first end point of straight line)</span>
@@ -63,7 +63,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="angle"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Angle of point or between two points.</span> <span class="sd">&quot;&quot;&quot;Angle of point or between two points.</span>
<span class="sd"> :param point1: (first) point</span> <span class="sd"> :param point1: (first) point</span>
@@ -79,7 +79,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="translate"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span> <span class="sd">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span>
<span class="sd"> :param vec: translation vector</span> <span class="sd"> :param vec: translation vector</span>
@@ -96,7 +96,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="translate_xy"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span> <span class="sd">&quot;&quot;&quot;Translate a point or polygon by a given vector.</span>
<span class="sd"> :param vec: translation vector</span> <span class="sd"> :param vec: translation vector</span>
@@ -130,7 +130,7 @@
<span class="k">return</span> <span class="n">xp</span><span class="p">,</span> <span class="n">yp</span></div> <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="../geometry.html#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> <div class="viewcode-block" id="rotate"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Rotate a point or polygon counterclockwise by a given angle</span> <span class="sd">&quot;&quot;&quot;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"> around a given origin. The angle should be given in radians.</span>
@@ -164,7 +164,7 @@
<span class="k">return</span> <span class="n">result</span></div> <span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="rotate_deg"><a class="viewcode-back" href="../geometry.html#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> <div class="viewcode-block" id="rotate_deg"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Rotate a point or polygon counterclockwise by a given angle</span> <span class="sd">&quot;&quot;&quot;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"> around a given origin. The angle should be given in degrees.</span>
@@ -184,7 +184,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="rotate_xy"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Rotate x and y coordinates counterclockwise by a given angle</span> <span class="sd">&quot;&quot;&quot;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"> around a given origin. The angle should be given in radians.</span>
@@ -227,7 +227,7 @@
<span class="k">return</span> <span class="n">x_result</span><span class="p">,</span> <span class="n">y_result</span></div> <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="../geometry.html#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> <div class="viewcode-block" id="rectangle"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;\</span> <span class="sd">&quot;&quot;&quot;\</span>
<span class="sd"> :param width: the width of the rectangle</span> <span class="sd"> :param width: the width of the rectangle</span>
<span class="sd"> :type width: int or float</span> <span class="sd"> :type width: int or float</span>
@@ -244,7 +244,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="square"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;\</span> <span class="sd">&quot;&quot;&quot;\</span>
<span class="sd"> :param width: the edge size of the square</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"> :type width: int or float</span>
@@ -258,7 +258,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="lines"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Lines defined by a list of end points.</span> <span class="sd">&quot;&quot;&quot;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"> :param pts: list of points in absolute global coordinate system. If</span>
@@ -300,7 +300,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="cubics"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Cubic lines defined by a list of two end points. The deformation</span> <span class="sd">&quot;&quot;&quot;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"> 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"> keyword argument deformation or global node wise as</span>
@@ -392,7 +392,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="interpolate_hermite"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Interpolate cubic line with hermite boundary conditions.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Interpolate cubic line with hermite boundary conditions.</span>
<span class="sd"> :param lvd: left vertcal deflection</span> <span class="sd"> :param lvd: left vertcal deflection</span>
@@ -451,7 +451,7 @@
<span class="c1"># matplotlib format, return lists for x and y</span> <span class="c1"># matplotlib format, return lists for x and y</span>
<span class="c1">#</span> <span class="c1">#</span>
<div class="viewcode-block" id="line"><a class="viewcode-back" href="../geometry.html#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> <div class="viewcode-block" id="line"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Line defined by two end points.</span> <span class="sd">&quot;&quot;&quot;Line defined by two end points.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -489,7 +489,7 @@
<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> <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="../geometry.html#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> <div class="viewcode-block" id="cubic"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Cubic line defined by two end points and the rotation in radians</span> <span class="sd">&quot;&quot;&quot;Cubic line defined by two end points and the rotation in radians</span>
<span class="sd"> at the points.</span> <span class="sd"> at the points.</span>
@@ -523,7 +523,7 @@
<span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span></div> <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="../geometry.html#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> <div class="viewcode-block" id="cubic_deg"><a class="viewcode-back" href="../../pylib.geometry2d.html#pylib.geometry2d.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">&quot;&quot;&quot;Cubic line defined by two end points and the roation in degree</span> <span class="sd">&quot;&quot;&quot;Cubic line defined by two end points and the roation in degree</span>
<span class="sd"> at the points.</span> <span class="sd"> at the points.</span>
@@ -552,7 +552,7 @@
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../index.html">pylib</a></h1> <h1 class="logo"><a href="../../index.html">pylib</a></h1>
@@ -562,12 +562,16 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="../index.html">Documentation overview</a><ul> <li><a href="../../index.html">Documentation overview</a><ul>
<li><a href="index.html">Module code</a><ul> <li><a href="../index.html">Module code</a><ul>
</ul></li> </ul></li>
</ul></li> </ul></li>
</ul> </ul>
@@ -575,7 +579,7 @@
<div id="searchbox" style="display: none" role="search"> <div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3> <h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper"> <div class="searchformwrapper">
<form class="search" action="../search.html" method="get"> <form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" /> <input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" /> <input type="submit" value="Go" />
</form> </form>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.geometry_plot &#8212; pylib 2019.5.19 documentation</title> <title>pylib.geometry2d_plot &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -32,22 +32,21 @@
<div class="body" role="main"> <div class="body" role="main">
<h1>Source code for pylib.geometry_plot</h1><div class="highlight"><pre> <h1>Source code for pylib.geometry2d_plot</h1><div class="highlight"><pre>
<span></span><span class="ch">#!/usr/bin/env python</span> <span></span><span class="ch">#!/usr/bin/env python</span>
<span class="c1"># -*- coding: utf-8 -*-</span> <span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;2D geometry plotter using matplotlib (pylab).</span> <span class="sd">&quot;&quot;&quot;2D geometry plotter using matplotlib (pylab).</span>
<span class="sd">:Date: 2019-08-20</span> <span class="sd">:Date: 2019-08-20</span>
<span class="sd">.. module:: geometry_plot</span> <span class="sd">.. module:: geometry2d_plot</span>
<span class="sd"> :platform: *nix, Windows</span> <span class="sd"> :platform: *nix, Windows</span>
<span class="sd"> :synopsis: Geometry plotting.</span> <span class="sd"> :synopsis: 2D geometry plotting.</span>
<span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span> <span class="sd">.. moduleauthor:: Daniel Weschke &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">math</span>
<span class="kn">import</span> <span class="nn">pylab</span> <span class="kn">import</span> <span class="nn">pylab</span>
<span class="kn">from</span> <span class="nn">geometry</span> <span class="kn">import</span> <span class="p">(</span> <span class="kn">from</span> <span class="nn">geometry2d</span> <span class="kn">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="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="p">)</span>
@@ -68,7 +67,7 @@
<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> <div class="viewcode-block" id="plot_lines"><a class="viewcode-back" href="../../pylib.geometry2d_plot.html#pylib.geometry2d_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">&#39;color&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span> <span class="k">if</span> <span class="s1">&#39;color&#39;</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 &quot;tab10&quot; colormap</span> <span class="c1"># Colors from &quot;tab10&quot; 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">&quot;tab10&quot;</span><span class="p">)</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">&quot;tab10&quot;</span><span class="p">)</span>
@@ -86,7 +85,7 @@
<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> <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> <div class="viewcode-block" id="plot_cubic_lines"><a class="viewcode-back" href="../../pylib.geometry2d_plot.html#pylib.geometry2d_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">&#39;color&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span> <span class="k">if</span> <span class="s1">&#39;color&#39;</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 &quot;tab10&quot; colormap</span> <span class="c1"># Colors from &quot;tab10&quot; 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">&quot;tab10&quot;</span><span class="p">)</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">&quot;tab10&quot;</span><span class="p">)</span>
@@ -137,6 +136,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.mathematics &#8212; pylib 2019.5.19 documentation</title> <title>pylib.mathematics &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -48,12 +48,12 @@
<span class="kn">import</span> <span class="nn">math</span> <span class="kn">import</span> <span class="nn">math</span>
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">gcd</span> <span class="kn">from</span> <span class="nn">math</span> <span class="kn">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> <div class="viewcode-block" id="lcm"><a class="viewcode-back" href="../../pylib.mathematics.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">&quot;&quot;&quot;Compute the lowest common multiple of a and b&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;Compute the lowest common multiple of a and b&quot;&quot;&quot;</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> <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>
<div class="viewcode-block" id="vector"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector">[docs]</a><span class="k">class</span> <span class="nc">vector</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span> <div class="viewcode-block" id="vector"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector">[docs]</a><span class="k">class</span> <span class="nc">vector</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Use/create vector like lists</span> <span class="sd">&quot;&quot;&quot;Use/create vector like lists</span>
<span class="sd"> * size -&gt; len(a)</span> <span class="sd"> * size -&gt; len(a)</span>
@@ -311,7 +311,7 @@
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;vector(&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="k">return</span> <span class="s2">&quot;vector(&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span>
<div class="viewcode-block" id="vector.full"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.full">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.full"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.full">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">):</span> <span class="k">def</span> <span class="nf">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Returns a vector of length m or matrix of size m rows, n</span> <span class="sd">&quot;&quot;&quot;Returns a vector of length m or matrix of size m rows, n</span>
<span class="sd"> columns filled with v.</span> <span class="sd"> columns filled with v.</span>
@@ -329,7 +329,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">fill_value</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> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">fill_value</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="vector.zeros"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.zeros">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.zeros"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.zeros">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">):</span> <span class="k">def</span> <span class="nf">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Returns a zero vector of length m or matrix of size rows, n</span> <span class="sd">&quot;&quot;&quot;Returns a zero vector of length m or matrix of size rows, n</span>
<span class="sd"> columns filled with zeros.</span> <span class="sd"> columns filled with zeros.</span>
@@ -345,7 +345,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">0.</span><span class="p">)</span></div> <span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">0.</span><span class="p">)</span></div>
<div class="viewcode-block" id="vector.ones"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ones">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.ones"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.ones">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">ones</span><span class="p">(</span><span class="n">length</span><span class="p">):</span> <span class="k">def</span> <span class="nf">ones</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Returns a vector of length m or matrix of size rows, n</span> <span class="sd">&quot;&quot;&quot;Returns a vector of length m or matrix of size rows, n</span>
<span class="sd"> columns filled with ones.</span> <span class="sd"> columns filled with ones.</span>
@@ -361,7 +361,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span></div> <span class="k">return</span> <span class="n">vector</span><span class="o">.</span><span class="n">full</span><span class="p">(</span><span class="n">length</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span></div>
<div class="viewcode-block" id="vector.random"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.random">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.random"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.random">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="n">lmin</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">lmax</span><span class="o">=</span><span class="mf">1.0</span><span class="p">):</span> <span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="n">lmin</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">lmax</span><span class="o">=</span><span class="mf">1.0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Returns a random vector of length n or matrix of size m rows, n</span> <span class="sd">&quot;&quot;&quot;Returns a random vector of length n or matrix of size m rows, n</span>
<span class="sd"> columns filled with random numbers.</span> <span class="sd"> columns filled with random numbers.</span>
@@ -379,7 +379,7 @@
<span class="n">dl</span> <span class="o">=</span> <span class="n">lmax</span><span class="o">-</span><span class="n">lmin</span> <span class="n">dl</span> <span class="o">=</span> <span class="n">lmax</span><span class="o">-</span><span class="n">lmin</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">dl</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span><span class="o">+</span><span class="n">lmin</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">shape</span><span class="p">)])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">dl</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span><span class="o">+</span><span class="n">lmin</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">shape</span><span class="p">)])</span></div>
<div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.normalize">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.normalize"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.normalize">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Normalize a vector (i. e. the vector has a length of 1)</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Normalize a vector (i. e. the vector has a length of 1)</span>
@@ -394,11 +394,11 @@
<span class="n">a_mag</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="n">a_mag</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">/</span><span class="n">a_mag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">/</span><span class="n">a_mag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.ang"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ang">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.ang"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.ang">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">ang</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="k">def</span> <span class="nf">ang</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="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">acos</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">/</span> <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="nb">abs</span><span class="p">(</span><span class="n">b</span><span class="p">)))</span></div> <span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">acos</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">b</span> <span class="o">/</span> <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="nb">abs</span><span class="p">(</span><span class="n">b</span><span class="p">)))</span></div>
<div class="viewcode-block" id="vector.conjugate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.conjugate">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.conjugate"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.conjugate">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> New vector object</span> <span class="sd"> New vector object</span>
@@ -407,7 +407,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">conjugate</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">conjugate</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.re"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.re">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.re"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.re">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">re</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">re</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return the real parts of a complex vector</span> <span class="sd">&quot;&quot;&quot;Return the real parts of a complex vector</span>
@@ -415,7 +415,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">real</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">real</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.im"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.im">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.im"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.im">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">im</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">im</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return the imaginary parts of a complex vector</span> <span class="sd">&quot;&quot;&quot;Return the imaginary parts of a complex vector</span>
@@ -423,7 +423,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.abs"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.abs">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.abs"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.abs">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">abs</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">abs</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return modulus parts of a complex vector</span> <span class="sd">&quot;&quot;&quot;Return modulus parts of a complex vector</span>
@@ -431,7 +431,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.arg"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.arg">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.arg"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.arg">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">arg</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> <span class="k">def</span> <span class="nf">arg</span><span class="p">(</span><span class="n">a</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return phase parts of a complex vector</span> <span class="sd">&quot;&quot;&quot;Return phase parts of a complex vector</span>
@@ -439,7 +439,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div> <span class="k">return</span> <span class="n">vector</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">i</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">])</span></div>
<div class="viewcode-block" id="vector.cross"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.cross">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="vector.cross"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.cross">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">cross</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="k">def</span> <span class="nf">cross</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="sa">r</span><span class="sd">&quot;&quot;&quot;Cross product</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Cross product</span>
@@ -456,10 +456,10 @@
<span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</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="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</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="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
<span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></div>
<div class="viewcode-block" id="vector.xyz"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.xyz">[docs]</a> <span class="k">def</span> <span class="nf">xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <div class="viewcode-block" id="vector.xyz"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.xyz">[docs]</a> <span class="k">def</span> <span class="nf">xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span></div> <span class="k">return</span> <span class="bp">self</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span></div>
<div class="viewcode-block" id="vector.rotate_x"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="vector.rotate_x"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the x dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the x dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -475,7 +475,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="vector.rotate_y"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="vector.rotate_y"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the y dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the y dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -491,7 +491,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="vector.rotate_z"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="vector.rotate_z"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the z dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the z dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -507,7 +507,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="vector.translate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span> <div class="viewcode-block" id="vector.translate"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -523,7 +523,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="vector.scale"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <div class="viewcode-block" id="vector.scale"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling</span>
<span class="sd"> uniform scaling if sx=sy=sz=s.</span> <span class="sd"> uniform scaling if sx=sy=sz=s.</span>
@@ -549,7 +549,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">sz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="vector.ch_cs"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.vector.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="p">):</span> <div class="viewcode-block" id="vector.ch_cs"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.vector.ch_cs">[docs]</a> <span class="k">def</span> <span class="nf">ch_cs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cs</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Transform this vector from its defined coordinate system to a</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Transform this vector from its defined coordinate system to a</span>
<span class="sd"> new coordinate system, defined by the given coordinate system (u,</span> <span class="sd"> new coordinate system, defined by the given coordinate system (u,</span>
<span class="sd"> v and w direction vectors).</span> <span class="sd"> v and w direction vectors).</span>
@@ -567,7 +567,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">cs</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">cs</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div></div> <span class="k">return</span> <span class="bp">self</span></div></div>
<div class="viewcode-block" id="matrix"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix">[docs]</a><span class="k">class</span> <span class="nc">matrix</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span> <div class="viewcode-block" id="matrix"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix">[docs]</a><span class="k">class</span> <span class="nc">matrix</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Use/create matrix like list of lists</span> <span class="sd">&quot;&quot;&quot;Use/create matrix like list of lists</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
@@ -596,7 +596,7 @@
<span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> <span class="n">item</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
<span class="k">return</span> <span class="n">matrix</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span> <span class="k">return</span> <span class="n">matrix</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span>
<div class="viewcode-block" id="matrix.rx"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rx">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="matrix.rx"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.rx">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span> <span class="k">def</span> <span class="nf">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the x direction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the x direction.</span>
@@ -619,7 +619,7 @@
<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="mi">1</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="mi">1</span><span class="p">]])</span>
<span class="k">return</span> <span class="n">T</span></div> <span class="k">return</span> <span class="n">T</span></div>
<div class="viewcode-block" id="matrix.ry"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.ry">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="matrix.ry"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.ry">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span> <span class="k">def</span> <span class="nf">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the y direction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the y direction.</span>
@@ -642,7 +642,7 @@
<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="mi">1</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="mi">1</span><span class="p">]])</span>
<span class="k">return</span> <span class="n">T</span></div> <span class="k">return</span> <span class="n">T</span></div>
<div class="viewcode-block" id="matrix.rz"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rz">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="matrix.rz"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.rz">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span> <span class="k">def</span> <span class="nf">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the z direction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation matrix about the z direction.</span>
@@ -685,7 +685,7 @@
<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="mi">1</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="mi">1</span><span class="p">]])</span>
<span class="k">return</span> <span class="n">T</span></div> <span class="k">return</span> <span class="n">T</span></div>
<div class="viewcode-block" id="matrix.t"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.t">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="matrix.t"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.t">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span> <span class="k">def</span> <span class="nf">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation matrix</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation matrix</span>
@@ -704,7 +704,7 @@
<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="mi">1</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="mi">1</span><span class="p">]])</span>
<span class="k">return</span> <span class="n">T</span></div> <span class="k">return</span> <span class="n">T</span></div>
<div class="viewcode-block" id="matrix.s"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.s">[docs]</a> <span class="nd">@staticmethod</span> <div class="viewcode-block" id="matrix.s"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.s">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="k">def</span> <span class="nf">s</span><span class="p">(</span><span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling matrix</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling matrix</span>
@@ -820,7 +820,7 @@
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;matrix(&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span> <span class="k">return</span> <span class="s2">&quot;matrix(&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span>
<div class="viewcode-block" id="matrix.rotate_x"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="matrix.rotate_x"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.rotate_x">[docs]</a> <span class="k">def</span> <span class="nf">rotate_x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the x dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the x dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -846,7 +846,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rx</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="matrix.rotate_y"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="matrix.rotate_y"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.rotate_y">[docs]</a> <span class="k">def</span> <span class="nf">rotate_y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the y dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the y dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -872,7 +872,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">ry</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="matrix.rotate_z"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span> <div class="viewcode-block" id="matrix.rotate_z"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.rotate_z">[docs]</a> <span class="k">def</span> <span class="nf">rotate_z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">theta</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the z dirction.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Rotation about the z dirction.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -898,7 +898,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">rz</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="matrix.translate"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span> <div class="viewcode-block" id="matrix.translate"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.translate">[docs]</a> <span class="k">def</span> <span class="nf">translate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Translation</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -924,7 +924,7 @@
<span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span> <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">matrix</span><span class="o">.</span><span class="n">t</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span></div> <span class="k">return</span> <span class="bp">self</span></div>
<div class="viewcode-block" id="matrix.scale"><a class="viewcode-back" href="../../pylib.html#pylib.mathematics.matrix.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <div class="viewcode-block" id="matrix.scale"><a class="viewcode-back" href="../../pylib.mathematics.html#pylib.mathematics.matrix.scale">[docs]</a> <span class="k">def</span> <span class="nf">scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sz</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Scaling</span>
<span class="sd"> uniform scaling if sx=sy=sz=s.</span> <span class="sd"> uniform scaling if sx=sy=sz=s.</span>
@@ -977,6 +977,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.numerical.fit &#8212; pylib 2019.5.19 documentation</title> <title>pylib.numerical.fit &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
@@ -49,7 +49,7 @@
<span class="kn">from</span> <span class="nn">pylab</span> <span class="kn">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">pylab</span> <span class="kn">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="kn">import</span> <span class="n">curve_fit</span> <span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="kn">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> <div class="viewcode-block" id="gauss"><a class="viewcode-back" href="../../../pylib.numerical.fit.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">&quot;&quot;&quot;Gauss distribution function.</span> <span class="sd">&quot;&quot;&quot;Gauss distribution function.</span>
<span class="sd"> .. math::</span> <span class="sd"> .. math::</span>
@@ -72,7 +72,7 @@
<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="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> <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> <div class="viewcode-block" id="gauss_fit"><a class="viewcode-back" href="../../../pylib.numerical.fit.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">&quot;&quot;&quot;Fit Gauss distribution function to data.</span> <span class="sd">&quot;&quot;&quot;Fit Gauss distribution function to data.</span>
<span class="sd"> :param x: positions</span> <span class="sd"> :param x: positions</span>
@@ -148,6 +148,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.numerical.integration &#8212; pylib 2019.5.19 documentation</title> <title>pylib.numerical.integration &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
@@ -50,7 +50,7 @@
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span> <span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">division</span>
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">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> <span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">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> <div class="viewcode-block" id="trapez"><a class="viewcode-back" href="../../../pylib.numerical.integration.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="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">&quot;&quot;&quot;</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Integration of :math:`f(x)` using the trapezoidal rule</span> <span class="sd"> Integration of :math:`f(x)` using the trapezoidal rule</span>
@@ -202,6 +202,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.numerical.ode &#8212; pylib 2019.5.19 documentation</title> <title>pylib.numerical.ode &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
@@ -53,7 +53,7 @@
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">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</span> <span class="kn">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="kn">import</span> <span class="n">norm</span><span class="p">,</span> <span class="n">inv</span> <span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">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> <div class="viewcode-block" id="e1"><a class="viewcode-back" href="../../../pylib.numerical.ode.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">&quot;&quot;&quot;Explicit first-order method /</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Explicit first-order method /</span>
<span class="sd"> (standard, or forward) Euler method /</span> <span class="sd"> (standard, or forward) Euler method /</span>
<span class="sd"> Runge-Kutta 1st order method.</span> <span class="sd"> Runge-Kutta 1st order method.</span>
@@ -178,7 +178,7 @@
<span class="s1">&#39;first-order method (Euler / Runge-Kutta) was successful.&#39;</span><span class="p">)</span> <span class="s1">&#39;first-order method (Euler / Runge-Kutta) was successful.&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">x</span></div> <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> <div class="viewcode-block" id="e2"><a class="viewcode-back" href="../../../pylib.numerical.ode.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">&quot;&quot;&quot;Explicit second-order method / Runge-Kutta 2nd order method.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Explicit second-order method / Runge-Kutta 2nd order method.</span>
<span class="sd"> :param f: the function to solve</span> <span class="sd"> :param f: the function to solve</span>
@@ -205,7 +205,7 @@
<span class="s1">&#39;2th-order method (Runge-Kutta) was successful.&#39;</span><span class="p">)</span> <span class="s1">&#39;2th-order method (Runge-Kutta) was successful.&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">x</span></div> <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> <div class="viewcode-block" id="e4"><a class="viewcode-back" href="../../../pylib.numerical.ode.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">&quot;&quot;&quot;Explicit fourth-order method / Runge-Kutta 4th order method.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Explicit fourth-order method / Runge-Kutta 4th order method.</span>
<span class="sd"> :param f: the function to solve</span> <span class="sd"> :param f: the function to solve</span>
@@ -234,7 +234,7 @@
<span class="s1">&#39;4th-order method (Runge-Kutta) was successful.&#39;</span><span class="p">)</span> <span class="s1">&#39;4th-order method (Runge-Kutta) was successful.&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">x</span></div> <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> <div class="viewcode-block" id="fpi"><a class="viewcode-back" href="../../../pylib.numerical.ode.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="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Fixed-point iteration.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Fixed-point iteration.</span>
<span class="sd"> </span> <span class="sd"> </span>
@@ -283,7 +283,7 @@
<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="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> <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> <div class="viewcode-block" id="i1"><a class="viewcode-back" href="../../../pylib.numerical.ode.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="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implicite first-order method / backward Euler method.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Implicite first-order method / backward Euler method.</span>
@@ -322,7 +322,7 @@
<span class="s1">&#39;first-order method (Euler) was successful.&#39;</span><span class="p">)</span> <span class="s1">&#39;first-order method (Euler) was successful.&#39;</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> <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> <div class="viewcode-block" id="newmark_newtonraphson"><a class="viewcode-back" href="../../../pylib.numerical.ode.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="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">&quot;&quot;&quot;Newmark method.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Newmark method.</span>
@@ -398,7 +398,7 @@
<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="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> <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> <div class="viewcode-block" id="newmark_newtonraphson_rdk"><a class="viewcode-back" href="../../../pylib.numerical.ode.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="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">&quot;&quot;&quot;Newmark method.</span> <span class="sa">r</span><span class="sd">&quot;&quot;&quot;Newmark method.</span>
@@ -492,6 +492,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.numerical.ode_model &#8212; pylib 2019.5.19 documentation</title> <title>pylib.numerical.ode_model &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
@@ -52,7 +52,7 @@
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">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</span> <span class="kn">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="kn">import</span> <span class="n">inv</span> <span class="kn">from</span> <span class="nn">numpy.linalg</span> <span class="kn">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> <div class="viewcode-block" id="disk"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.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">&quot;&quot;&quot;Rotation of an eccentric disk.</span> <span class="sd">&quot;&quot;&quot;Rotation of an eccentric disk.</span>
<span class="sd"> :param x: values of the function</span> <span class="sd"> :param x: values of the function</span>
@@ -76,7 +76,7 @@
<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="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> <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> <div class="viewcode-block" id="disk_nm"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.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">&quot;&quot;&quot;Rotation of an eccentric disk.</span> <span class="sd">&quot;&quot;&quot;Rotation of an eccentric disk.</span>
<span class="sd"> :param xn: values of the function</span> <span class="sd"> :param xn: values of the function</span>
@@ -107,7 +107,7 @@
<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="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> <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> <div class="viewcode-block" id="disk_nmmdk"><a class="viewcode-back" href="../../../pylib.numerical.ode_model.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">&quot;&quot;&quot;Rotation of an eccentric disk.</span> <span class="sd">&quot;&quot;&quot;Rotation of an eccentric disk.</span>
<span class="sd"> :param xn: values of the function</span> <span class="sd"> :param xn: values of the function</span>
@@ -171,6 +171,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.time_of_day &#8212; pylib 2019.5.19 documentation</title> <title>pylib.time_of_day &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" /> <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
@@ -47,7 +47,7 @@
<span class="sd">&quot;&quot;&quot;</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">struct_time</span><span class="p">,</span> <span class="n">mktime</span> <span class="kn">from</span> <span class="nn">time</span> <span class="kn">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> <div class="viewcode-block" id="in_seconds"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;If time is `time.struct_time` convert to float seconds.</span> <span class="sd">&quot;&quot;&quot;If time is `time.struct_time` convert to float seconds.</span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -60,7 +60,7 @@
<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="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> <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> <div class="viewcode-block" id="seconds"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The seconds of the time.</span> <span class="sd">&quot;&quot;&quot;The seconds of the time.</span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -71,7 +71,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="seconds_norm"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The seconds normalized to 60 seconds.</span> <span class="sd">&quot;&quot;&quot;The seconds normalized to 60 seconds.</span>
<span class="sd"> </span> <span class="sd"> </span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -82,7 +82,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="minutes"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The minutes of the time.</span> <span class="sd">&quot;&quot;&quot;The minutes of the time.</span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -93,7 +93,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="minutes_norm"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The minutes normalized to 60 minutes.</span> <span class="sd">&quot;&quot;&quot;The minutes normalized to 60 minutes.</span>
<span class="sd"> </span> <span class="sd"> </span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -104,7 +104,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="hours"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The hours of the time.</span> <span class="sd">&quot;&quot;&quot;The hours of the time.</span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -115,7 +115,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="hours_norm"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The hours normalized to 24 hours.</span> <span class="sd">&quot;&quot;&quot;The hours normalized to 24 hours.</span>
<span class="sd"> </span> <span class="sd"> </span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -126,7 +126,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="days"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The days of the time (year).</span> <span class="sd">&quot;&quot;&quot;The days of the time (year).</span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -137,7 +137,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="days_norm"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;The days normalized to 365.2425 (Gregorian, on average) days.</span> <span class="sd">&quot;&quot;&quot;The days normalized to 365.2425 (Gregorian, on average) days.</span>
<span class="sd"> </span> <span class="sd"> </span>
<span class="sd"> :param time: the time in seconds</span> <span class="sd"> :param time: the time in seconds</span>
@@ -148,7 +148,7 @@
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</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> <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> <div class="viewcode-block" id="transform"><a class="viewcode-back" href="../../pylib.time_of_day.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">&quot;&quot;&quot;Transform normalized time value to new length.</span> <span class="sd">&quot;&quot;&quot;Transform normalized time value to new length.</span>
<span class="sd"> </span> <span class="sd"> </span>
<span class="sd"> :param position_norm: the normalized time value to transform</span> <span class="sd"> :param position_norm: the normalized time value to transform</span>
@@ -205,6 +205,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -1,253 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>time_of_day &#8212; 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 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">&quot;&quot;&quot;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 &lt;daniel.weschke@directbox.de&gt;</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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="../time_of_day.html#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">&quot;&quot;&quot;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"> &quot;&quot;&quot;</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">&quot;__main__&quot;</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">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">&#39;min &#39;</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">&#39;h &#39;</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">&#39;min_norm &#39;</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">&#39;h_norm &#39;</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">&#39;m[-8,22] &#39;</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">&#39;h[-10,10]&#39;</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>

View File

@@ -1,7 +0,0 @@
data module
===========
.. automodule:: data
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
date module
===========
.. automodule:: date
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
function module
===============
.. automodule:: function
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
geometry module
===============
.. automodule:: geometry
:members:
:undoc-members:
:show-inheritance:

View File

@@ -10,6 +10,8 @@ Welcome to pylib's documentation!
:maxdepth: 2 :maxdepth: 2
:caption: Contents: :caption: Contents:
modules
Indices and tables Indices and tables

View File

@@ -1,7 +0,0 @@
mathematics module
==================
.. automodule:: mathematics
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,46 +0,0 @@
numerical package
=================
Submodules
----------
numerical.fit module
--------------------
.. automodule:: numerical.fit
:members:
:undoc-members:
:show-inheritance:
numerical.integration module
----------------------------
.. automodule:: numerical.integration
:members:
:undoc-members:
:show-inheritance:
numerical.ode module
--------------------
.. automodule:: numerical.ode
:members:
:undoc-members:
:show-inheritance:
numerical.ode\_model module
---------------------------
.. automodule:: numerical.ode_model
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: numerical
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.data module
=================
.. automodule:: pylib.data
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.date module
=================
.. automodule:: pylib.date
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.drawblock module
======================
.. automodule:: pylib.drawblock
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +1,7 @@
geometry\_plot module pylib.function module
===================== =====================
.. automodule:: geometry_plot .. automodule:: pylib.function
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:

View File

@@ -1,7 +1,7 @@
geometry\_plot module pylib.geometry module
===================== =====================
.. automodule:: geometry_plot .. automodule:: pylib.geometry
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.geometry2d module
=======================
.. automodule:: pylib.geometry2d
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.geometry2d\_plot module
=============================
.. automodule:: pylib.geometry2d_plot
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.mathematics module
========================
.. automodule:: pylib.mathematics
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.fit module
==========================
.. automodule:: pylib.numerical.fit
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.integration module
==================================
.. automodule:: pylib.numerical.integration
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.ode module
==========================
.. automodule:: pylib.numerical.ode
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.ode\_model module
=================================
.. automodule:: pylib.numerical.ode_model
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,46 +1,17 @@
pylib.numerical package 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 .. automodule:: pylib.numerical
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
Submodules
----------
.. toctree::
pylib.numerical.fit
pylib.numerical.integration
pylib.numerical.ode
pylib.numerical.ode_model

View File

@@ -1,6 +1,11 @@
pylib package pylib package
============= =============
.. automodule:: pylib
:members:
:undoc-members:
:show-inheritance:
Subpackages Subpackages
----------- -----------
@@ -11,75 +16,14 @@ Subpackages
Submodules Submodules
---------- ----------
pylib.data module .. toctree::
-----------------
.. automodule:: pylib.data pylib.data
:members: pylib.date
:undoc-members: pylib.drawblock
:show-inheritance: pylib.function
pylib.geometry
pylib.date module pylib.geometry2d
----------------- pylib.geometry2d_plot
pylib.mathematics
.. automodule:: pylib.date pylib.time_of_day
:members:
:undoc-members:
:show-inheritance:
pylib.drawblock module
----------------------
.. automodule:: pylib.drawblock
: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:

View File

@@ -0,0 +1,7 @@
pylib.time\_of\_day module
==========================
.. automodule:: pylib.time_of_day
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
time\_of\_day module
====================
.. automodule:: time_of_day
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '2019.5.19', VERSION: '2019.12.21',
LANGUAGE: 'None', LANGUAGE: 'None',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',

View File

@@ -5,7 +5,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Index &#8212; pylib 2019.5.19 documentation</title> <title>Index &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -38,6 +38,7 @@
<div class="genindex-jumpbox"> <div class="genindex-jumpbox">
<a href="#A"><strong>A</strong></a> <a href="#A"><strong>A</strong></a>
| <a href="#B"><strong>B</strong></a>
| <a href="#C"><strong>C</strong></a> | <a href="#C"><strong>C</strong></a>
| <a href="#D"><strong>D</strong></a> | <a href="#D"><strong>D</strong></a>
| <a href="#E"><strong>E</strong></a> | <a href="#E"><strong>E</strong></a>
@@ -57,193 +58,138 @@
| <a href="#V"><strong>V</strong></a> | <a href="#V"><strong>V</strong></a>
| <a href="#W"><strong>W</strong></a> | <a href="#W"><strong>W</strong></a>
| <a href="#X"><strong>X</strong></a> | <a href="#X"><strong>X</strong></a>
| <a href="#Y"><strong>Y</strong></a>
| <a href="#Z"><strong>Z</strong></a> | <a href="#Z"><strong>Z</strong></a>
</div> </div>
<h2 id="A">A</h2> <h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.abs">abs() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.abs">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.abs">abs() (vector static method)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.vector.ang">ang() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.ang">[1]</a> <li><a href="pylib.geometry.html#pylib.geometry.World.add">add() (World method)</a>
</li> </li>
<li><a href="geometry.html#geometry.angle">angle() (in module geometry)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.ang">ang() (vector static method)</a>
<ul>
<li><a href="pylib.html#pylib.geometry.angle">(in module pylib.geometry)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.arg">arg() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.arg">[1]</a> <li><a href="pylib.geometry2d.html#pylib.geometry2d.angle">angle() (in module pylib.geometry2d)</a>
</li> </li>
<li><a href="date.html#date.ascension_of_jesus">ascension_of_jesus() (in module date)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.arg">arg() (vector static method)</a>
</li>
<li><a href="pylib.date.html#pylib.date.ascension_of_jesus">ascension_of_jesus() (in module pylib.date)</a>
</li>
</ul></td>
</tr></table>
<ul> <h2 id="B">B</h2>
<li><a href="pylib.html#pylib.date.ascension_of_jesus">(in module pylib.date)</a> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.geometry.html#pylib.geometry.World.bounding_box">bounding_box() (World method)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="C">C</h2> <h2 id="C">C</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.ch_cs">ch_cs() (vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.ch_cs">[1]</a> <li><a href="pylib.geometry.html#pylib.geometry.World.center">center() (World method)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.vector.conjugate">conjugate() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.conjugate">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.ch_cs">ch_cs() (vector method)</a>
</li>
<li><a href="function.html#function.cosine_wave">cosine_wave() (in module function)</a>
<ul> <ul>
<li><a href="pylib.html#pylib.function.cosine_wave">(in module pylib.function)</a> <li><a href="pylib.geometry.html#pylib.geometry.Wireframe.ch_cs">(Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.World.ch_cs">(World method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="mathematics.html#mathematics.vector.cross">cross() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.cross">[1]</a> <li><a href="pylib.geometry.html#pylib.geometry.Circle">Circle (class in pylib.geometry)</a>
</li>
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.conjugate">conjugate() (vector static method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="geometry.html#geometry.cubic">cubic() (in module geometry)</a> <li><a href="pylib.function.html#pylib.function.cosine_wave">cosine_wave() (in module pylib.function)</a>
<ul>
<li><a href="pylib.html#pylib.geometry.cubic">(in module pylib.geometry)</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.cross">cross() (vector static method)</a>
<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> </li>
</ul></li> <li><a href="pylib.geometry.html#pylib.geometry.CS">CS (class in pylib.geometry)</a>
<li><a href="geometry.html#geometry.cubics">cubics() (in module geometry)</a> </li>
<li><a href="pylib.geometry.html#pylib.geometry.World.cs">cs() (World method)</a>
<ul> </li>
<li><a href="pylib.html#pylib.geometry.cubics">(in module pylib.geometry)</a> <li><a href="pylib.geometry2d.html#pylib.geometry2d.cubic">cubic() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.cubic_deg">cubic_deg() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.cubics">cubics() (in module pylib.geometry2d)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="D">D</h2> <h2 id="D">D</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <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>, <a href="pylib.html#module-data">[2]</a> <li><a href="pylib.data.html#module-data">data (module)</a>
</li> </li>
<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><a href="pylib.date.html#module-date">date (module)</a>
</li> </li>
<li><a href="pylib.html#pylib.time_of_day.days">days() (in module pylib.time_of_day)</a> <li><a href="pylib.time_of_day.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>
</ul></li> <li><a href="pylib.time_of_day.html#pylib.time_of_day.days_norm">days_norm() (in module pylib.time_of_day)</a>
<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> </li>
</ul></li> <li><a href="pylib.geometry.html#pylib.geometry.Direction">Direction (class in pylib.geometry)</a>
<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> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.ode_model.disk_nm">disk_nm() (in module numerical.ode_model)</a> <li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk">disk() (in module pylib.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> </li>
</ul></li> <li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nm">disk_nm() (in module pylib.numerical.ode_model)</a>
<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> </li>
</ul></li> <li><a href="pylib.numerical.ode_model.html#pylib.numerical.ode_model.disk_nmmdk">disk_nmmdk() (in module pylib.numerical.ode_model)</a>
<li><a href="geometry.html#geometry.distance">distance() (in module geometry)</a> </li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.distance">distance() (in module pylib.geometry2d)</a>
<ul> </li>
<li><a href="pylib.html#pylib.geometry.distance">(in module pylib.geometry)</a> <li><a href="pylib.drawblock.html#module-drawblock">drawblock (module)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="E">E</h2> <h2 id="E">E</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.ode.e1">e1() (in module numerical.ode)</a> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.e1">e1() (in module pylib.numerical.ode)</a>
<ul>
<li><a href="pylib.numerical.html#pylib.numerical.ode.e1">(in module pylib.numerical.ode)</a>
</li> </li>
</ul></li> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.e2">e2() (in module pylib.numerical.ode)</a>
<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> </li>
</ul></li> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.e4">e4() (in module pylib.numerical.ode)</a>
<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> </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> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="date.html#date.easter_monday">easter_monday() (in module date)</a> <li><a href="pylib.date.html#pylib.date.easter_friday">easter_friday() (in module pylib.date)</a>
<ul>
<li><a href="pylib.html#pylib.date.easter_monday">(in module pylib.date)</a>
</li> </li>
</ul></li> <li><a href="pylib.date.html#pylib.date.easter_monday">easter_monday() (in module pylib.date)</a>
<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> </li>
</ul></li> <li><a href="pylib.date.html#pylib.date.easter_sunday">easter_sunday() (in module pylib.date)</a>
<li><a href="function.html#function.epitrochoid">epitrochoid() (in module function)</a> </li>
<li><a href="pylib.function.html#pylib.function.epitrochoid">epitrochoid() (in module pylib.function)</a>
<ul>
<li><a href="pylib.html#pylib.function.epitrochoid">(in module pylib.function)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="F">F</h2> <h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#module-fit">fit (module)</a>, <a href="pylib.numerical.html#module-fit">[1]</a> <li><a href="pylib.numerical.fit.html#module-fit">fit (module)</a>
</li> </li>
<li><a href="data.html#data.fold_list">fold_list() (in module data)</a> <li><a href="pylib.data.html#pylib.data.fold_list">fold_list() (in module pylib.data)</a>
<ul>
<li><a href="pylib.html#pylib.data.fold_list">(in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.ode.fpi">fpi() (in module numerical.ode)</a> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.fpi">fpi() (in module pylib.numerical.ode)</a>
<ul>
<li><a href="pylib.numerical.html#pylib.numerical.ode.fpi">(in module pylib.numerical.ode)</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.full">full() (vector static method)</a>
<li><a href="mathematics.html#mathematics.vector.full">full() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.full">[1]</a>
</li> </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><a href="pylib.function.html#module-function">function (module)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -251,185 +197,105 @@
<h2 id="G">G</h2> <h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.fit.gauss">gauss() (in module numerical.fit)</a> <li><a href="pylib.numerical.fit.html#pylib.numerical.fit.gauss">gauss() (in module pylib.numerical.fit)</a>
<ul>
<li><a href="pylib.numerical.html#pylib.numerical.fit.gauss">(in module pylib.numerical.fit)</a>
</li> </li>
</ul></li> <li><a href="pylib.numerical.fit.html#pylib.numerical.fit.gauss_fit">gauss_fit() (in module pylib.numerical.fit)</a>
<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> </li>
</ul></li> <li><a href="pylib.date.html#pylib.date.gaußsche_osterformel">gaußsche_osterformel() (in module pylib.date)</a>
<li><a href="date.html#date.gaußsche_osterformel">gaußsche_osterformel() (in module date)</a> </li>
<li><a href="pylib.geometry.html#module-geometry">geometry (module)</a>
<ul>
<li><a href="pylib.html#pylib.date.gaußsche_osterformel">(in module pylib.date)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <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>, <a href="pylib.html#module-geometry">[2]</a> <li><a href="pylib.geometry2d.html#module-geometry2d">geometry2d (module)</a>
</li> </li>
<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><a href="pylib.geometry2d_plot.html#module-geometry2d_plot">geometry2d_plot (module)</a>
</li> </li>
<li><a href="data.html#data.get_id">get_id() (in module data)</a> <li><a href="pylib.geometry.html#pylib.geometry.CS.get_coordinates">get_coordinates() (CS method)</a>
</li>
<ul> <li><a href="pylib.data.html#pylib.data.get_id">get_id() (in module pylib.data)</a>
<li><a href="pylib.html#pylib.data.get_id">(in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="H">H</h2> <h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.html#pylib.drawblock.histogram">histogram() (in module pylib.drawblock)</a> <li><a href="pylib.drawblock.html#pylib.drawblock.histogram">histogram() (in module pylib.drawblock)</a>
</li> </li>
<li><a href="pylib.html#pylib.time_of_day.hours">hours() (in module pylib.time_of_day)</a> <li><a href="pylib.time_of_day.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> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.html#pylib.time_of_day.hours_norm">hours_norm() (in module pylib.time_of_day)</a> <li><a href="pylib.time_of_day.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> </li>
</ul></li> <li><a href="pylib.function.html#pylib.function.hypotrochoid">hypotrochoid() (in module pylib.function)</a>
<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> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="I">I</h2> <h2 id="I">I</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.ode.i1">i1() (in module numerical.ode)</a> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.i1">i1() (in module pylib.numerical.ode)</a>
<ul>
<li><a href="pylib.numerical.html#pylib.numerical.ode.i1">(in module pylib.numerical.ode)</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.im">im() (vector static method)</a>
<li><a href="mathematics.html#mathematics.vector.im">im() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.im">[1]</a>
</li> </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> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#module-integration">integration (module)</a>, <a href="pylib.numerical.html#module-integration">[1]</a> <li><a href="pylib.time_of_day.html#pylib.time_of_day.in_seconds">in_seconds() (in module pylib.time_of_day)</a>
</li> </li>
<li><a href="geometry.html#geometry.interpolate_hermite">interpolate_hermite() (in module geometry)</a> <li><a href="pylib.numerical.integration.html#module-integration">integration (module)</a>
</li>
<ul> <li><a href="pylib.geometry2d.html#pylib.geometry2d.interpolate_hermite">interpolate_hermite() (in module pylib.geometry2d)</a>
<li><a href="pylib.html#pylib.geometry.interpolate_hermite">(in module pylib.geometry)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="L">L</h2> <h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.lcm">lcm() (in module mathematics)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.lcm">lcm() (in module pylib.mathematics)</a>
<ul>
<li><a href="pylib.html#pylib.mathematics.lcm">(in module pylib.mathematics)</a>
</li> </li>
</ul></li> <li><a href="pylib.geometry.html#pylib.geometry.Line">Line (class in pylib.geometry)</a>
<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> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="geometry.html#geometry.lines">lines() (in module geometry)</a> <li><a href="pylib.geometry2d.html#pylib.geometry2d.line">line() (in module pylib.geometry2d)</a>
<ul>
<li><a href="pylib.html#pylib.geometry.lines">(in module pylib.geometry)</a>
</li> </li>
</ul></li> <li><a href="pylib.geometry2d.html#pylib.geometry2d.lines">lines() (in module pylib.geometry2d)</a>
<li><a href="data.html#data.load">load() (in module data)</a> </li>
<li><a href="pylib.data.html#pylib.data.load">load() (in module pylib.data)</a>
<ul>
<li><a href="pylib.html#pylib.data.load">(in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="M">M</h2> <h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <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>, <a href="pylib.html#module-mathematics">[2]</a> <li><a href="pylib.mathematics.html#module-mathematics">mathematics (module)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.matrix">matrix (class in mathematics)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix">matrix (class in pylib.mathematics)</a>
<ul>
<li><a href="pylib.html#pylib.mathematics.matrix">(class in pylib.mathematics)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.html#pylib.time_of_day.minutes">minutes() (in module pylib.time_of_day)</a> <li><a href="pylib.time_of_day.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> </li>
</ul></li> <li><a href="pylib.time_of_day.html#pylib.time_of_day.minutes_norm">minutes_norm() (in module pylib.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> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="N">N</h2> <h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#numerical.ode.newmark_newtonraphson">newmark_newtonraphson() (in module numerical.ode)</a> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson">newmark_newtonraphson() (in module pylib.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>
</ul></li>
<li><a href="mathematics.html#mathematics.vector.normalize">normalize() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.normalize">[1]</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#module-numerical">numerical (module)</a> <li><a href="pylib.numerical.ode.html#pylib.numerical.ode.newmark_newtonraphson_rdk">newmark_newtonraphson_rdk() (in module pylib.numerical.ode)</a>
</li> </li>
<li><a href="numerical.html#module-numerical.fit">numerical.fit (module)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.normalize">normalize() (vector static method)</a>
</li>
<li><a href="numerical.html#module-numerical.integration">numerical.integration (module)</a>
</li>
<li><a href="numerical.html#module-numerical.ode">numerical.ode (module)</a>
</li>
<li><a href="numerical.html#module-numerical.ode_model">numerical.ode_model (module)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -437,13 +303,15 @@
<h2 id="O">O</h2> <h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#module-ode">ode (module)</a>, <a href="pylib.numerical.html#module-ode">[1]</a> <li><a href="pylib.geometry.html#pylib.geometry.World.objects">objects() (World method)</a>
</li>
<li><a href="pylib.numerical.ode.html#module-ode">ode (module)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="numerical.html#module-ode_model">ode_model (module)</a>, <a href="pylib.numerical.html#module-ode_model">[1]</a> <li><a href="pylib.numerical.ode_model.html#module-ode_model">ode_model (module)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.vector.ones">ones() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.ones">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.ones">ones() (vector static method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -451,53 +319,49 @@
<h2 id="P">P</h2> <h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="date.html#date.pentecost">pentecost() (in module date)</a> <li><a href="pylib.date.html#pylib.date.pentecost">pentecost() (in module pylib.date)</a>
<ul>
<li><a href="pylib.html#pylib.date.pentecost">(in module pylib.date)</a>
</li> </li>
</ul></li> <li><a href="pylib.geometry2d_plot.html#pylib.geometry2d_plot.plot_cubic_lines">plot_cubic_lines() (in module pylib.geometry2d_plot)</a>
<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> </li>
</ul></li> <li><a href="pylib.geometry2d_plot.html#pylib.geometry2d_plot.plot_lines">plot_lines() (in module pylib.geometry2d_plot)</a>
<li><a href="geometry_plot.html#geometry_plot.plot_lines">plot_lines() (in module geometry_plot)</a> </li>
<li><a href="pylib.geometry.html#pylib.geometry.Point">Point (class in pylib.geometry)</a>
<ul> </li>
<li><a href="pylib.html#pylib.geometry_plot.plot_lines">(in module pylib.geometry_plot)</a> <li><a href="pylib.geometry.html#pylib.geometry.Wireframe.points">points() (Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Polygon">Polygon (class in pylib.geometry)</a>
</li> </li>
</ul></li>
<li><a href="pylib.html#module-pylib">pylib (module)</a> <li><a href="pylib.html#module-pylib">pylib (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.data">pylib.data (module)</a> <li><a href="pylib.data.html#module-pylib.data">pylib.data (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.date">pylib.date (module)</a> <li><a href="pylib.date.html#module-pylib.date">pylib.date (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.drawblock">pylib.drawblock (module)</a> <li><a href="pylib.drawblock.html#module-pylib.drawblock">pylib.drawblock (module)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.html#module-pylib.function">pylib.function (module)</a> <li><a href="pylib.function.html#module-pylib.function">pylib.function (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.geometry">pylib.geometry (module)</a> <li><a href="pylib.geometry.html#module-pylib.geometry">pylib.geometry (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.geometry_plot">pylib.geometry_plot (module)</a> <li><a href="pylib.geometry2d.html#module-pylib.geometry2d">pylib.geometry2d (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.mathematics">pylib.mathematics (module)</a> <li><a href="pylib.geometry2d_plot.html#module-pylib.geometry2d_plot">pylib.geometry2d_plot (module)</a>
</li>
<li><a href="pylib.mathematics.html#module-pylib.mathematics">pylib.mathematics (module)</a>
</li> </li>
<li><a href="pylib.numerical.html#module-pylib.numerical">pylib.numerical (module)</a> <li><a href="pylib.numerical.html#module-pylib.numerical">pylib.numerical (module)</a>
</li> </li>
<li><a href="pylib.numerical.html#module-pylib.numerical.fit">pylib.numerical.fit (module)</a> <li><a href="pylib.numerical.fit.html#module-pylib.numerical.fit">pylib.numerical.fit (module)</a>
</li> </li>
<li><a href="pylib.numerical.html#module-pylib.numerical.integration">pylib.numerical.integration (module)</a> <li><a href="pylib.numerical.integration.html#module-pylib.numerical.integration">pylib.numerical.integration (module)</a>
</li> </li>
<li><a href="pylib.numerical.html#module-pylib.numerical.ode">pylib.numerical.ode (module)</a> <li><a href="pylib.numerical.ode.html#module-pylib.numerical.ode">pylib.numerical.ode (module)</a>
</li> </li>
<li><a href="pylib.numerical.html#module-pylib.numerical.ode_model">pylib.numerical.ode_model (module)</a> <li><a href="pylib.numerical.ode_model.html#module-pylib.numerical.ode_model">pylib.numerical.ode_model (module)</a>
</li> </li>
<li><a href="pylib.html#module-pylib.time_of_day">pylib.time_of_day (module)</a> <li><a href="pylib.time_of_day.html#module-pylib.time_of_day">pylib.time_of_day (module)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -505,65 +369,57 @@
<h2 id="R">R</h2> <h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.random">random() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.random">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.random">random() (vector static method)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.vector.re">re() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.re">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.re">re() (vector static method)</a>
</li> </li>
<li><a href="data.html#data.read">read() (in module data)</a> <li><a href="pylib.data.html#pylib.data.read">read() (in module pylib.data)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rectangle">rectangle() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate">rotate() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate_deg">rotate_deg() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_x">rotate_x() (matrix method)</a>
<ul> <ul>
<li><a href="pylib.html#pylib.data.read">(in module pylib.data)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_x">(vector method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_x">(Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_x">(World method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="geometry.html#geometry.rectangle">rectangle() (in module geometry)</a> <li><a href="pylib.geometry2d.html#pylib.geometry2d.rotate_xy">rotate_xy() (in module pylib.geometry2d)</a>
<ul>
<li><a href="pylib.html#pylib.geometry.rectangle">(in module pylib.geometry)</a>
</li> </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>
<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>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.matrix.rotate_x">rotate_x() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_x">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_y">rotate_y() (matrix method)</a>
<ul> <ul>
<li><a href="mathematics.html#mathematics.vector.rotate_x">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_x">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_y">(vector method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_y">(Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_y">(World method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="geometry.html#geometry.rotate_xy">rotate_xy() (in module geometry)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rotate_z">rotate_z() (matrix method)</a>
<ul> <ul>
<li><a href="pylib.html#pylib.geometry.rotate_xy">(in module pylib.geometry)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.rotate_z">(vector method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.rotate_z">(Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.World.rotate_z">(World method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="mathematics.html#mathematics.matrix.rotate_y">rotate_y() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_y">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rx">rx() (matrix static method)</a>
<ul>
<li><a href="mathematics.html#mathematics.vector.rotate_y">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_y">[1]</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.ry">ry() (matrix static method)</a>
<li><a href="mathematics.html#mathematics.matrix.rotate_z">rotate_z() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rotate_z">[1]</a>
<ul>
<li><a href="mathematics.html#mathematics.vector.rotate_z">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.rotate_z">[1]</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.rz">rz() (matrix static method)</a>
<li><a href="mathematics.html#mathematics.matrix.rx">rx() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rx">[1]</a>
</li>
<li><a href="mathematics.html#mathematics.matrix.ry">ry() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.ry">[1]</a>
</li>
<li><a href="mathematics.html#mathematics.matrix.rz">rz() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.rz">[1]</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -571,147 +427,127 @@
<h2 id="S">S</h2> <h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.matrix.s">s() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.s">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.s">s() (matrix static method)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.matrix.scale">scale() (matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.scale">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.scale">scale() (matrix method)</a>
<ul> <ul>
<li><a href="mathematics.html#mathematics.vector.scale">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.scale">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.scale">(vector method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.scale">(Wireframe method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.World.scale">(World method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="pylib.html#pylib.time_of_day.seconds">seconds() (in module pylib.time_of_day)</a> <li><a href="pylib.time_of_day.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>
</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>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="data.html#data.seq">seq() (in module data)</a> <li><a href="pylib.time_of_day.html#pylib.time_of_day.seconds_norm">seconds_norm() (in module pylib.time_of_day)</a>
<ul>
<li><a href="pylib.html#pylib.data.seq">(in module pylib.data)</a>
</li> </li>
</ul></li> <li><a href="pylib.data.html#pylib.data.seq">seq() (in module pylib.data)</a>
<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> </li>
</ul></li> <li><a href="pylib.function.html#pylib.function.sine_wave">sine_wave() (in module pylib.function)</a>
<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> </li>
</ul></li> <li><a href="pylib.geometry.html#pylib.geometry.World.space_diagonal">space_diagonal() (World method)</a>
<li><a href="data.html#data.store">store() (in module data)</a> </li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.square">square() (in module pylib.geometry2d)</a>
<ul> </li>
<li><a href="pylib.html#pylib.data.store">(in module pylib.data)</a> <li><a href="pylib.data.html#pylib.data.store">store() (in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="T">T</h2> <h2 id="T">T</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.matrix.t">t() (matrix static method)</a>, <a href="pylib.html#pylib.mathematics.matrix.t">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.t">t() (matrix static method)</a>
</li> </li>
<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><a href="pylib.time_of_day.html#module-time_of_day">time_of_day (module)</a>
</li> </li>
<li><a href="function.html#function.to_str">to_str() (in module function)</a> <li><a href="pylib.function.html#pylib.function.to_str">to_str() (in module pylib.function)</a>
</li>
<li><a href="pylib.time_of_day.html#pylib.time_of_day.transform">transform() (in module pylib.time_of_day)</a>
</li>
<li><a href="pylib.function.html#pylib.function.transformation">transformation() (in module pylib.function)</a>
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.translate">translate() (in module pylib.geometry2d)</a>
<ul> <ul>
<li><a href="pylib.html#pylib.function.to_str">(in module pylib.function)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.matrix.translate">(matrix method)</a>
</li> </li>
</ul></li> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.translate">(vector method)</a>
<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> </li>
</ul></li> <li><a href="pylib.geometry.html#pylib.geometry.Wireframe.translate">(Wireframe method)</a>
<li><a href="function.html#function.transformation">transformation() (in module function)</a> </li>
<li><a href="pylib.geometry.html#pylib.geometry.World.translate">(World method)</a>
<ul>
<li><a href="pylib.html#pylib.function.transformation">(in module pylib.function)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="geometry.html#geometry.translate">translate() (in module geometry)</a> <li><a href="pylib.geometry2d.html#pylib.geometry2d.translate_xy">translate_xy() (in module pylib.geometry2d)</a>
<ul>
<li><a href="pylib.html#pylib.geometry.translate">(in module pylib.geometry)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.matrix.translate">(matrix method)</a>, <a href="pylib.html#pylib.mathematics.matrix.translate">[1]</a> <li><a href="pylib.numerical.integration.html#pylib.numerical.integration.trapez">trapez() (in module pylib.numerical.integration)</a>
</li> </li>
<li><a href="mathematics.html#mathematics.vector.translate">(vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.translate">[1]</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> </ul></td>
</tr></table> </tr></table>
<h2 id="U">U</h2> <h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="data.html#data.unique_ending">unique_ending() (in module data)</a> <li><a href="pylib.data.html#pylib.data.unique_ending">unique_ending() (in module pylib.data)</a>
<ul>
<li><a href="pylib.html#pylib.data.unique_ending">(in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="V">V</h2> <h2 id="V">V</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector">vector (class in mathematics)</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector">vector (class in pylib.mathematics)</a>
<ul>
<li><a href="pylib.html#pylib.mathematics.vector">(class in pylib.mathematics)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="W">W</h2> <h2 id="W">W</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="data.html#data.write">write() (in module data)</a> <li><a href="pylib.geometry.html#pylib.geometry.Wireframe">Wireframe (class in pylib.geometry)</a>
</li>
<ul> </ul></td>
<li><a href="pylib.html#pylib.data.write">(in module pylib.data)</a> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.geometry.html#pylib.geometry.World">World (class in pylib.geometry)</a>
</li>
<li><a href="pylib.data.html#pylib.data.write">write() (in module pylib.data)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
<h2 id="X">X</h2> <h2 id="X">X</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.xyz">xyz() (vector method)</a>, <a href="pylib.html#pylib.mathematics.vector.xyz">[1]</a> <li><a href="pylib.geometry.html#pylib.geometry.CS.x90">x90() (CS static method)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.CS.xm90">xm90() (CS static method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.mathematics.html#pylib.mathematics.vector.xyz">xyz() (vector method)</a>
<ul>
<li><a href="pylib.geometry.html#pylib.geometry.Wireframe.xyz">(Wireframe method)</a>
</li>
</ul></li>
</ul></td>
</tr></table>
<h2 id="Y">Y</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.geometry.html#pylib.geometry.CS.y90">y90() (CS static method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.geometry.html#pylib.geometry.CS.ym90">ym90() (CS static method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -719,7 +555,7 @@
<h2 id="Z">Z</h2> <h2 id="Z">Z</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="mathematics.html#mathematics.vector.zeros">zeros() (vector static method)</a>, <a href="pylib.html#pylib.mathematics.vector.zeros">[1]</a> <li><a href="pylib.mathematics.html#pylib.mathematics.vector.zeros">zeros() (vector static method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@@ -742,6 +578,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Welcome to pylibs documentation! &#8212; pylib 2019.5.19 documentation</title> <title>Welcome to pylibs documentation! &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,7 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib" href="modules.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -35,6 +36,13 @@
<div class="section" id="welcome-to-pylib-s-documentation"> <div class="section" id="welcome-to-pylib-s-documentation">
<h1>Welcome to pylibs documentation!<a class="headerlink" href="#welcome-to-pylib-s-documentation" title="Permalink to this headline"></a></h1> <h1>Welcome to pylibs documentation!<a class="headerlink" href="#welcome-to-pylib-s-documentation" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound"> <div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules.html">pylib</a><ul>
<li class="toctree-l2"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
</div> </div>
</div> </div>
<div class="section" id="indices-and-tables"> <div class="section" id="indices-and-tables">
@@ -63,11 +71,16 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="#">Documentation overview</a><ul> <li><a href="#">Documentation overview</a><ul>
<li>Next: <a href="modules.html" title="next chapter">pylib</a></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib &#8212; pylib 2019.5.19 documentation</title> <title>pylib &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib package" href="pylib.html" />
<link rel="prev" title="Welcome to pylibs documentation!" href="index.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -40,25 +42,22 @@
<li class="toctree-l2"><a class="reference internal" href="pylib.html#subpackages">Subpackages</a><ul> <li class="toctree-l2"><a class="reference internal" href="pylib.html#subpackages">Subpackages</a><ul>
<li class="toctree-l3"><a class="reference internal" href="pylib.numerical.html">pylib.numerical package</a><ul> <li class="toctree-l3"><a class="reference internal" href="pylib.numerical.html">pylib.numerical package</a><ul>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#submodules">Submodules</a></li> <li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#submodules">Submodules</a></li>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.fit">pylib.numerical.fit module</a></li>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.integration">pylib.numerical.integration module</a></li>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.ode">pylib.numerical.ode module</a></li>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical.ode_model">pylib.numerical.ode_model module</a></li>
<li class="toctree-l4"><a class="reference internal" href="pylib.numerical.html#module-pylib.numerical">Module contents</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#submodules">Submodules</a></li> <li class="toctree-l2"><a class="reference internal" href="pylib.html#submodules">Submodules</a><ul>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.data">pylib.data module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.data.html">pylib.data module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.date">pylib.date module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.date.html">pylib.date module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.drawblock">pylib.drawblock module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.drawblock.html">pylib.drawblock module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.function">pylib.function module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.function.html">pylib.function module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.geometry">pylib.geometry module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.geometry.html">pylib.geometry module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.geometry_plot">pylib.geometry_plot module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.geometry2d.html">pylib.geometry2d module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.mathematics">pylib.mathematics module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.geometry2d_plot.html">pylib.geometry2d_plot module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib.time_of_day">pylib.time_of_day module</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.mathematics.html">pylib.mathematics module</a></li>
<li class="toctree-l2"><a class="reference internal" href="pylib.html#module-pylib">Module contents</a></li> <li class="toctree-l3"><a class="reference internal" href="pylib.time_of_day.html">pylib.time_of_day module</a></li>
</ul>
</li>
</ul> </ul>
</li> </li>
</ul> </ul>
@@ -82,11 +81,20 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">pylib</a><ul>
<li class="toctree-l2"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="index.html" title="previous chapter">Welcome to pylibs documentation!</a></li>
<li>Next: <a href="pylib.html" title="next chapter">pylib package</a></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>

View File

@@ -1,589 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>numerical package &#8212; 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="numerical-package">
<h1>numerical package<a class="headerlink" href="#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-numerical.fit">
<span id="numerical-fit-module"></span><h2>numerical.fit module<a class="headerlink" href="#module-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="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/numerical/fit.html#gauss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/fit.html#gauss_fit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="#numerical.fit.gauss" title="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-numerical.integration">
<span id="numerical-integration-module"></span><h2>numerical.integration module<a class="headerlink" href="#module-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="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/numerical/integration.html#trapez"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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
(Simpsons rule, Keplers 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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
I &amp;\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\
&amp;= \int\limits_a^b
\left( f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \right)
\mathrm{d}x \\
&amp;= \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 \\
&amp;= \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 &amp;\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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
f(x) &amp;= x^2 \\
a &amp;= 0 \\
b &amp;= 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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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-numerical.ode">
<span id="numerical-ode-module"></span><h2>numerical.ode module<a class="headerlink" href="#module-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="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/numerical/ode.html#e1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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:
Eulersche 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} &amp;= f(t,x) \\
x(t_0) &amp;= 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} &amp;= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\
x_{i+1} &amp;= 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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;= 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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix} x_2 \\ m^{-1}(f(t) - d x_2 - k x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +
\begin{bmatrix} 0 &amp; 1 \\ -m^{-1} k &amp; -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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;=
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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix}
x_2 \\ m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1}(x_1) f(t) \end{bmatrix} +
\begin{bmatrix}
0 &amp; 1 \\ -m^{-1}(x_1) k(x_1) &amp; -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="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/numerical/ode.html#e2"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode.html#e4"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode.html#fpi"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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} &lt; \varepsilon\]</div>
<div class="math notranslate nohighlight">
\[x_{i} = x_{i,j=\text{end}}\]</div>
</dd></dl>
<dl class="function">
<dt id="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/numerical/ode.html#i1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode.html#newmark_newtonraphson"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode.html#newmark_newtonraphson_rdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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-numerical.ode_model">
<span id="numerical-ode-model-module"></span><h2>numerical.ode_model module<a class="headerlink" href="#module-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="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/numerical/ode_model.html#disk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode_model.html#disk_nm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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="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/numerical/ode_model.html#disk_nmmdk"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#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-numerical">
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/numerical.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Python Module Index &#8212; pylib 2019.5.19 documentation</title> <title>Python Module Index &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -44,7 +44,6 @@
<a href="#cap-g"><strong>g</strong></a> | <a href="#cap-g"><strong>g</strong></a> |
<a href="#cap-i"><strong>i</strong></a> | <a href="#cap-i"><strong>i</strong></a> |
<a href="#cap-m"><strong>m</strong></a> | <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-o"><strong>o</strong></a> |
<a href="#cap-p"><strong>p</strong></a> | <a href="#cap-p"><strong>p</strong></a> |
<a href="#cap-t"><strong>t</strong></a> <a href="#cap-t"><strong>t</strong></a>
@@ -57,25 +56,30 @@
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-data"><code class="xref">data</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.data.html#module-data"><code class="xref">data</code></a> <em>(*nix, Windows)</em></td><td>
<em>Handle data files and structures.</em></td></tr> <em>Handle data files and structures.</em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-date"><code class="xref">date</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.date.html#module-date"><code class="xref">date</code></a> <em>(*nix, Windows)</em></td><td>
<em>Special dates.</em></td></tr> <em>Special dates.</em></td></tr>
<tr>
<td></td>
<td>
<a href="pylib.drawblock.html#module-drawblock"><code class="xref">drawblock</code></a> <em>(*nix, Windows)</em></td><td>
<em>Draw with block characters.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-f"><td></td><td> <tr class="cap" id="cap-f"><td></td><td>
<strong>f</strong></td><td></td></tr> <strong>f</strong></td><td></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.numerical.html#module-fit"><code class="xref">fit</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.numerical.fit.html#module-fit"><code class="xref">fit</code></a> <em>(*nix, Windows)</em></td><td>
<em>Function and approximation.</em></td></tr> <em>Function and approximation.</em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-function"><code class="xref">function</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.function.html#module-function"><code class="xref">function</code></a> <em>(*nix, Windows)</em></td><td>
<em>Mathematical equations.</em></td></tr> <em>Mathematical equations.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-g"><td></td><td> <tr class="cap" id="cap-g"><td></td><td>
@@ -83,20 +87,25 @@
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-geometry"><code class="xref">geometry</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.geometry.html#module-geometry"><code class="xref">geometry</code></a> <em>(*nix, Windows)</em></td><td>
<em>Geometry objects.</em></td></tr> <em>Geometry objects.</em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-geometry_plot"><code class="xref">geometry_plot</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.geometry2d.html#module-geometry2d"><code class="xref">geometry2d</code></a> <em>(*nix, Windows)</em></td><td>
<em>Geometry plotting.</em></td></tr> <em>2D geometry objects.</em></td></tr>
<tr>
<td></td>
<td>
<a href="pylib.geometry2d_plot.html#module-geometry2d_plot"><code class="xref">geometry2d_plot</code></a> <em>(*nix, Windows)</em></td><td>
<em>2D geometry plotting.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-i"><td></td><td> <tr class="cap" id="cap-i"><td></td><td>
<strong>i</strong></td><td></td></tr> <strong>i</strong></td><td></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.numerical.html#module-integration"><code class="xref">integration</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.numerical.integration.html#module-integration"><code class="xref">integration</code></a> <em>(*nix, Windows)</em></td><td>
<em>Numerical integration.</em></td></tr> <em>Numerical integration.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-m"><td></td><td> <tr class="cap" id="cap-m"><td></td><td>
@@ -104,123 +113,99 @@
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.mathematics.html#module-mathematics"><code class="xref">mathematics</code></a> <em>(*nix, Windows)</em></td><td>
<em>Mathematical functions and objects.</em></td></tr> <em>Mathematical functions and objects.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-n"><td></td><td>
<strong>n</strong></td><td></td></tr>
<tr>
<td><img src="_static/minus.png" class="toggler"
id="toggle-1" style="display: none" alt="-" /></td>
<td>
<a href="numerical.html#module-numerical"><code class="xref">numerical</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="numerical.html#module-numerical.fit"><code class="xref">numerical.fit</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="numerical.html#module-numerical.integration"><code class="xref">numerical.integration</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="numerical.html#module-numerical.ode"><code class="xref">numerical.ode</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="numerical.html#module-numerical.ode_model"><code class="xref">numerical.ode_model</code></a></td><td>
<em></em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-o"><td></td><td> <tr class="cap" id="cap-o"><td></td><td>
<strong>o</strong></td><td></td></tr> <strong>o</strong></td><td></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.numerical.html#module-ode"><code class="xref">ode</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.numerical.ode.html#module-ode"><code class="xref">ode</code></a> <em>(*nix, Windows)</em></td><td>
<em>Numerical solver.</em></td></tr> <em>Numerical solver.</em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.numerical.html#module-ode_model"><code class="xref">ode_model</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.numerical.ode_model.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> <em>Models of ordinary differential equations.</em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-p"><td></td><td> <tr class="cap" id="cap-p"><td></td><td>
<strong>p</strong></td><td></td></tr> <strong>p</strong></td><td></td></tr>
<tr> <tr>
<td><img src="_static/minus.png" class="toggler" <td><img src="_static/minus.png" class="toggler"
id="toggle-2" style="display: none" alt="-" /></td> id="toggle-1" style="display: none" alt="-" /></td>
<td> <td>
<a href="pylib.html#module-pylib"><code class="xref">pylib</code></a></td><td> <a href="pylib.html#module-pylib"><code class="xref">pylib</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.data"><code class="xref">pylib.data</code></a></td><td> <a href="pylib.data.html#module-pylib.data"><code class="xref">pylib.data</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.date"><code class="xref">pylib.date</code></a></td><td> <a href="pylib.date.html#module-pylib.date"><code class="xref">pylib.date</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.drawblock"><code class="xref">pylib.drawblock</code></a></td><td> <a href="pylib.drawblock.html#module-pylib.drawblock"><code class="xref">pylib.drawblock</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.function"><code class="xref">pylib.function</code></a></td><td> <a href="pylib.function.html#module-pylib.function"><code class="xref">pylib.function</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.geometry"><code class="xref">pylib.geometry</code></a></td><td> <a href="pylib.geometry.html#module-pylib.geometry"><code class="xref">pylib.geometry</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.geometry_plot"><code class="xref">pylib.geometry_plot</code></a></td><td> <a href="pylib.geometry2d.html#module-pylib.geometry2d"><code class="xref">pylib.geometry2d</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.mathematics"><code class="xref">pylib.mathematics</code></a></td><td> <a href="pylib.geometry2d_plot.html#module-pylib.geometry2d_plot"><code class="xref">pylib.geometry2d_plot</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="pylib.mathematics.html#module-pylib.mathematics"><code class="xref">pylib.mathematics</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.numerical.html#module-pylib.numerical"><code class="xref">pylib.numerical</code></a></td><td> <a href="pylib.numerical.html#module-pylib.numerical"><code class="xref">pylib.numerical</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.numerical.html#module-pylib.numerical.fit"><code class="xref">pylib.numerical.fit</code></a></td><td> <a href="pylib.numerical.fit.html#module-pylib.numerical.fit"><code class="xref">pylib.numerical.fit</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.numerical.html#module-pylib.numerical.integration"><code class="xref">pylib.numerical.integration</code></a></td><td> <a href="pylib.numerical.integration.html#module-pylib.numerical.integration"><code class="xref">pylib.numerical.integration</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.numerical.html#module-pylib.numerical.ode"><code class="xref">pylib.numerical.ode</code></a></td><td> <a href="pylib.numerical.ode.html#module-pylib.numerical.ode"><code class="xref">pylib.numerical.ode</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.numerical.html#module-pylib.numerical.ode_model"><code class="xref">pylib.numerical.ode_model</code></a></td><td> <a href="pylib.numerical.ode_model.html#module-pylib.numerical.ode_model"><code class="xref">pylib.numerical.ode_model</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-2"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
<a href="pylib.html#module-pylib.time_of_day"><code class="xref">pylib.time_of_day</code></a></td><td> <a href="pylib.time_of_day.html#module-pylib.time_of_day"><code class="xref">pylib.time_of_day</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr> <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-t"><td></td><td> <tr class="cap" id="cap-t"><td></td><td>
@@ -228,7 +213,7 @@
<tr> <tr>
<td></td> <td></td>
<td> <td>
<a href="pylib.html#module-time_of_day"><code class="xref">time_of_day</code></a> <em>(*nix, Windows)</em></td><td> <a href="pylib.time_of_day.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> <em>Calculate time.</em></td></tr>
</table> </table>
@@ -249,6 +234,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>data module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.data module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.date module" href="pylib.date.html" />
<link rel="prev" title="pylib.numerical.ode_model module" href="pylib.numerical.ode_model.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,8 +34,8 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-data"> <div class="section" id="module-pylib.data">
<span id="data-module"></span><h1>data module<a class="headerlink" href="#module-data" title="Permalink to this headline"></a></h1> <span id="pylib-data-module"></span><h1>pylib.data module<a class="headerlink" href="#module-pylib.data" title="Permalink to this headline"></a></h1>
<p>Read and write data to or from file and manipulate data structures.</p> <p>Read and write data to or from file and manipulate data structures.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
@@ -41,8 +43,8 @@
</dd> </dd>
</dl> </dl>
<span class="target" id="module-data"></span><dl class="function"> <span class="target" id="module-data"></span><dl class="function">
<dt id="data.fold_list"> <dt id="pylib.data.fold_list">
<code class="sig-name descname">fold_list</code><span class="sig-paren">(</span><em class="sig-param">lst</em>, <em class="sig-param">n</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#fold_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.fold_list" title="Permalink to this definition"></a></dt> <code class="sig-name descname">fold_list</code><span class="sig-paren">(</span><em class="sig-param">lst</em>, <em class="sig-param">n</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#fold_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.fold_list" title="Permalink to this definition"></a></dt>
<dd><p>Convert one-dimensional kx1 array (list) to two-dimensional mxn <dd><p>Convert one-dimensional kx1 array (list) to two-dimensional mxn
array. m = k / n</p> array. m = k / n</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -62,8 +64,8 @@ array. m = k / n</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.get_id"> <dt id="pylib.data.get_id">
<code class="sig-name descname">get_id</code><span class="sig-paren">(</span><em class="sig-param">ids</em>, <em class="sig-param">uide</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#get_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.get_id" title="Permalink to this definition"></a></dt> <code class="sig-name descname">get_id</code><span class="sig-paren">(</span><em class="sig-param">ids</em>, <em class="sig-param">uide</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#get_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.get_id" title="Permalink to this definition"></a></dt>
<dd><p>Get full id from unique id ending.</p> <dd><p>Get full id from unique id ending.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -82,8 +84,8 @@ array. m = k / n</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.load"> <dt id="pylib.data.load">
<code class="sig-name descname">load</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.load" title="Permalink to this definition"></a></dt> <code class="sig-name descname">load</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.load" title="Permalink to this definition"></a></dt>
<dd><p>Load stored program objects from binary file.</p> <dd><p>Load stored program objects from binary file.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -103,8 +105,8 @@ array. m = k / n</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.read"> <dt id="pylib.data.read">
<code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">x_column</em>, <em class="sig-param">y_column</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.read" title="Permalink to this definition"></a></dt> <code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">x_column</em>, <em class="sig-param">y_column</em>, <em class="sig-param">default=None</em>, <em class="sig-param">verbose=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.read" title="Permalink to this definition"></a></dt>
<dd><p>Read ascii data file.</p> <dd><p>Read ascii data file.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -126,8 +128,8 @@ array. m = k / n</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.seq"> <dt id="pylib.data.seq">
<code class="sig-name descname">seq</code><span class="sig-paren">(</span><em class="sig-param">start</em>, <em class="sig-param">stop=None</em>, <em class="sig-param">step=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#seq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.seq" title="Permalink to this definition"></a></dt> <code class="sig-name descname">seq</code><span class="sig-paren">(</span><em class="sig-param">start</em>, <em class="sig-param">stop=None</em>, <em class="sig-param">step=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#seq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.seq" title="Permalink to this definition"></a></dt>
<dd><p>Create an arithmetic bounded sequence.</p> <dd><p>Create an arithmetic bounded sequence.</p>
<p>The sequence is one of the following;</p> <p>The sequence is one of the following;</p>
<ul class="simple"> <ul class="simple">
@@ -155,8 +157,8 @@ between consecutive terms).</p></li>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.store"> <dt id="pylib.data.store">
<code class="sig-name descname">store</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">object_data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.store" title="Permalink to this definition"></a></dt> <code class="sig-name descname">store</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">object_data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.store" title="Permalink to this definition"></a></dt>
<dd><p>Store program objects to binary file.</p> <dd><p>Store program objects to binary file.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -169,8 +171,8 @@ between consecutive terms).</p></li>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.unique_ending"> <dt id="pylib.data.unique_ending">
<code class="sig-name descname">unique_ending</code><span class="sig-paren">(</span><em class="sig-param">ids</em>, <em class="sig-param">n=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#unique_ending"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.unique_ending" title="Permalink to this definition"></a></dt> <code class="sig-name descname">unique_ending</code><span class="sig-paren">(</span><em class="sig-param">ids</em>, <em class="sig-param">n=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#unique_ending"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.unique_ending" title="Permalink to this definition"></a></dt>
<dd><p>From id list get list with unique ending.</p> <dd><p>From id list get list with unique ending.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -189,8 +191,8 @@ between consecutive terms).</p></li>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="data.write"> <dt id="pylib.data.write">
<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/data.html#write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#data.write" title="Permalink to this definition"></a></dt> <code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">file_name</em>, <em class="sig-param">data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/data.html#write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.data.write" title="Permalink to this definition"></a></dt>
<dd><p>Write ascii file.</p> <dd><p>Write ascii file.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -221,11 +223,24 @@ between consecutive terms).</p></li>
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.numerical.ode_model.html" title="previous chapter">pylib.numerical.ode_model module</a></li>
<li>Next: <a href="pylib.date.html" title="next chapter">pylib.date module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -259,7 +274,7 @@ between consecutive terms).</p></li>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/data.rst.txt" <a href="_sources/pylib.data.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>date module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.date module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.drawblock module" href="pylib.drawblock.html" />
<link rel="prev" title="pylib.data module" href="pylib.data.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,8 +34,8 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-date"> <div class="section" id="module-pylib.date">
<span id="date-module"></span><h1>date module<a class="headerlink" href="#module-date" title="Permalink to this headline"></a></h1> <span id="pylib-date-module"></span><h1>pylib.date module<a class="headerlink" href="#module-pylib.date" title="Permalink to this headline"></a></h1>
<p>Calculate spacial dates.</p> <p>Calculate spacial dates.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
@@ -41,8 +43,8 @@
</dd> </dd>
</dl> </dl>
<span class="target" id="module-date"></span><dl class="function"> <span class="target" id="module-date"></span><dl class="function">
<dt id="date.ascension_of_jesus"> <dt id="pylib.date.ascension_of_jesus">
<code class="sig-name descname">ascension_of_jesus</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#ascension_of_jesus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.ascension_of_jesus" title="Permalink to this definition"></a></dt> <code class="sig-name descname">ascension_of_jesus</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#ascension_of_jesus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.ascension_of_jesus" title="Permalink to this definition"></a></dt>
<dd><p>Ascension of Jesus.</p> <dd><p>Ascension of Jesus.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -58,8 +60,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="date.easter_friday"> <dt id="pylib.date.easter_friday">
<code class="sig-name descname">easter_friday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#easter_friday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.easter_friday" title="Permalink to this definition"></a></dt> <code class="sig-name descname">easter_friday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#easter_friday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.easter_friday" title="Permalink to this definition"></a></dt>
<dd><p>Easter Friday.</p> <dd><p>Easter Friday.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -75,8 +77,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="date.easter_monday"> <dt id="pylib.date.easter_monday">
<code class="sig-name descname">easter_monday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#easter_monday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.easter_monday" title="Permalink to this definition"></a></dt> <code class="sig-name descname">easter_monday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#easter_monday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.easter_monday" title="Permalink to this definition"></a></dt>
<dd><p>Easter Monday.</p> <dd><p>Easter Monday.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -92,8 +94,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="date.easter_sunday"> <dt id="pylib.date.easter_sunday">
<code class="sig-name descname">easter_sunday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#easter_sunday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.easter_sunday" title="Permalink to this definition"></a></dt> <code class="sig-name descname">easter_sunday</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#easter_sunday"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.easter_sunday" title="Permalink to this definition"></a></dt>
<dd><p>Easter Sunday.</p> <dd><p>Easter Sunday.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -109,8 +111,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="date.gaußsche_osterformel"> <dt id="pylib.date.gaußsche_osterformel">
<code class="sig-name descname">gaußsche_osterformel</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#gaußsche_osterformel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.gaußsche_osterformel" title="Permalink to this definition"></a></dt> <code class="sig-name descname">gaußsche_osterformel</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#gaußsche_osterformel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.gaußsche_osterformel" title="Permalink to this definition"></a></dt>
<dd><p>Gaußsche Osterformel.</p> <dd><p>Gaußsche Osterformel.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -143,8 +145,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="date.pentecost"> <dt id="pylib.date.pentecost">
<code class="sig-name descname">pentecost</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/date.html#pentecost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#date.pentecost" title="Permalink to this definition"></a></dt> <code class="sig-name descname">pentecost</code><span class="sig-paren">(</span><em class="sig-param">year</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/date.html#pentecost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.date.pentecost" title="Permalink to this definition"></a></dt>
<dd><p>Pentecost.</p> <dd><p>Pentecost.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -178,11 +180,24 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.data.html" title="previous chapter">pylib.data module</a></li>
<li>Next: <a href="pylib.drawblock.html" title="next chapter">pylib.drawblock module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -216,7 +231,7 @@
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/date.rst.txt" <a href="_sources/pylib.date.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

145
docs/build/html/pylib.drawblock.html vendored Normal file
View File

@@ -0,0 +1,145 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.drawblock module &#8212; pylib 2019.12.21 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="next" title="pylib.function module" href="pylib.function.html" />
<link rel="prev" title="pylib.date module" href="pylib.date.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="module-pylib.drawblock">
<span id="pylib-drawblock-module"></span><h1>pylib.drawblock module<a class="headerlink" href="#module-pylib.drawblock" title="Permalink to this headline"></a></h1>
<p>Draw with block characters.</p>
<dl class="field-list simple">
<dt class="field-odd">Date</dt>
<dd class="field-odd"><p>2019-11-15</p>
</dd>
</dl>
<span class="target" id="module-drawblock"></span><dl class="function">
<dt id="pylib.drawblock.histogram">
<code class="sig-name descname">histogram</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">x=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/drawblock.html#histogram"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.drawblock.histogram" title="Permalink to this definition"></a></dt>
<dd><p>Histogram chart with block symbols.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>dots
,_,
|8|
|7|
|6|
|5|
|4|
|3|
|2|
|1|
```
▁▂▃▄▅▆▇█
12345678
</pre></div>
</div>
</dd></dl>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.date.html" title="previous chapter">pylib.date module</a></li>
<li>Next: <a href="pylib.function.html" title="next chapter">pylib.function module</a></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.drawblock.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>function module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.function module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.geometry module" href="pylib.geometry.html" />
<link rel="prev" title="pylib.drawblock module" href="pylib.drawblock.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,8 +34,8 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-function"> <div class="section" id="module-pylib.function">
<span id="function-module"></span><h1>function module<a class="headerlink" href="#module-function" title="Permalink to this headline"></a></h1> <span id="pylib-function-module"></span><h1>pylib.function module<a class="headerlink" href="#module-pylib.function" title="Permalink to this headline"></a></h1>
<p>Mathematical equations.</p> <p>Mathematical equations.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
@@ -41,8 +43,8 @@
</dd> </dd>
</dl> </dl>
<span class="target" id="module-function"></span><dl class="function"> <span class="target" id="module-function"></span><dl class="function">
<dt id="function.cosine_wave"> <dt id="pylib.function.cosine_wave">
<code class="sig-name descname">cosine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#cosine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.cosine_wave" title="Permalink to this definition"></a></dt> <code class="sig-name descname">cosine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#cosine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.cosine_wave" title="Permalink to this definition"></a></dt>
<dd><p>A cosine wave is said to be sinusoidal, because, <dd><p>A cosine wave is said to be sinusoidal, because,
<span class="math notranslate nohighlight">\(\cos(x) = \sin(x + \pi/2)\)</span>, which is also a sine wave with a <span class="math notranslate nohighlight">\(\cos(x) = \sin(x + \pi/2)\)</span>, which is also a sine wave with a
phase-shift of π/2 radians. Because of this head start, it is often phase-shift of π/2 radians. Because of this head start, it is often
@@ -68,13 +70,13 @@ time t</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</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> <p><a class="reference internal" href="#pylib.function.sine_wave" title="pylib.function.sine_wave"><code class="xref py py-meth docutils literal notranslate"><span class="pre">sine_wave()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="function.epitrochoid"> <dt id="pylib.function.epitrochoid">
<code class="sig-name descname">epitrochoid</code><span class="sig-paren">(</span><em class="sig-param">R</em>, <em class="sig-param">r</em>, <em class="sig-param">d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#epitrochoid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.epitrochoid" title="Permalink to this definition"></a></dt> <code class="sig-name descname">epitrochoid</code><span class="sig-paren">(</span><em class="sig-param">R</em>, <em class="sig-param">r</em>, <em class="sig-param">d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#epitrochoid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.epitrochoid" title="Permalink to this definition"></a></dt>
<dd><p>Epitrochoid</p> <dd><p>Epitrochoid</p>
<p>A point is attached with a distance d from the center of a circle <p>A point is attached with a distance d from the center of a circle
of radius r. The circle is rolling around the outside of a fixed of radius r. The circle is rolling around the outside of a fixed
@@ -122,8 +124,8 @@ y(\theta) = (R + r)\sin\theta - d\sin\left(\frac{R+r}{r}\theta\right) \\
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="function.hypotrochoid"> <dt id="pylib.function.hypotrochoid">
<code class="sig-name descname">hypotrochoid</code><span class="sig-paren">(</span><em class="sig-param">R</em>, <em class="sig-param">r</em>, <em class="sig-param">d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#hypotrochoid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.hypotrochoid" title="Permalink to this definition"></a></dt> <code class="sig-name descname">hypotrochoid</code><span class="sig-paren">(</span><em class="sig-param">R</em>, <em class="sig-param">r</em>, <em class="sig-param">d</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#hypotrochoid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.hypotrochoid" title="Permalink to this definition"></a></dt>
<dd><p>Hypotrochoid</p> <dd><p>Hypotrochoid</p>
<p>A point is attached with a distance d from the center of a circle <p>A point is attached with a distance d from the center of a circle
of radius r. The circle is rolling around the inside of a fixed of radius r. The circle is rolling around the inside of a fixed
@@ -170,13 +172,13 @@ y(\theta) = (R - r)\sin\theta - d\sin\left(\frac{R-r}{r}\theta\right) \\
</div> </div>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="mathematics.html#mathematics.lcm" title="mathematics.lcm"><code class="xref py py-meth docutils literal notranslate"><span class="pre">mathematics.lcm()</span></code></a></p> <p><code class="xref py py-meth docutils literal notranslate"><span class="pre">mathematics.lcm()</span></code></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="function.sine_wave"> <dt id="pylib.function.sine_wave">
<code class="sig-name descname">sine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#sine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.sine_wave" title="Permalink to this definition"></a></dt> <code class="sig-name descname">sine_wave</code><span class="sig-paren">(</span><em class="sig-param">A=1</em>, <em class="sig-param">k=1</em>, <em class="sig-param">f=1</em>, <em class="sig-param">phi=0</em>, <em class="sig-param">D=0</em>, <em class="sig-param">degree=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#sine_wave"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.sine_wave" title="Permalink to this definition"></a></dt>
<dd><p>A sine wave or sinusoid is a mathematical curve that describes a <dd><p>A sine wave or sinusoid is a mathematical curve that describes a
smooth periodic oscillation.</p> smooth periodic oscillation.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -228,13 +230,13 @@ angular frequency ω and the linear speed (speed of propagation)
linear speed.</p> linear speed.</p>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</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> <p><a class="reference internal" href="#pylib.function.cosine_wave" title="pylib.function.cosine_wave"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cosine_wave()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="function.to_str"> <dt id="pylib.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> <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/pylib/function.html#to_str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.to_str" title="Permalink to this definition"></a></dt>
<dd><p>Represent functions as string frame with a specific character set. <dd><p>Represent functions as string frame with a specific character set.
which are normed to the range of [0, 1] to</p> which are normed to the range of [0, 1] to</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -245,9 +247,9 @@ which are normed to the range of [0, 1] to</p>
<li><p><strong>w</strong> (<em>int</em>) number of chars in horizontal 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 <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 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 index U+28FF <a class="reference internal" href="#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 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 index U+259F <a class="reference internal" href="#cudb" id="id2"><span>[CUDB]</span></a>). Alias for braille is line and alias for
block is histogram</p></li> block is histogram</p></li>
</ul> </ul>
</dd> </dd>
@@ -357,13 +359,13 @@ Example of 3 columns and 3 rows (upside down view of normal braille/drawil
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <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> <p><a class="reference internal" href="#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> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="function.transformation"> <dt id="pylib.function.transformation">
<code class="sig-name descname">transformation</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">scale_vertical=1</em>, <em class="sig-param">scale_horizontal=1</em>, <em class="sig-param">shift_horizontal=0</em>, <em class="sig-param">shift_vertical=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/function.html#transformation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#function.transformation" title="Permalink to this definition"></a></dt> <code class="sig-name descname">transformation</code><span class="sig-paren">(</span><em class="sig-param">f</em>, <em class="sig-param">scale_vertical=1</em>, <em class="sig-param">scale_horizontal=1</em>, <em class="sig-param">shift_horizontal=0</em>, <em class="sig-param">shift_vertical=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/function.html#transformation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.function.transformation" title="Permalink to this definition"></a></dt>
<dd><p>Transform functions.</p> <dd><p>Transform functions.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -409,11 +411,24 @@ Example of 3 columns and 3 rows (upside down view of normal braille/drawil
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.drawblock.html" title="previous chapter">pylib.drawblock module</a></li>
<li>Next: <a href="pylib.geometry.html" title="next chapter">pylib.geometry module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -447,7 +462,7 @@ Example of 3 columns and 3 rows (upside down view of normal braille/drawil
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/function.rst.txt" <a href="_sources/pylib.function.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

307
docs/build/html/pylib.geometry.html vendored Normal file
View File

@@ -0,0 +1,307 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.geometry module &#8212; pylib 2019.12.21 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="next" title="pylib.geometry2d module" href="pylib.geometry2d.html" />
<link rel="prev" title="pylib.function module" href="pylib.function.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="module-pylib.geometry">
<span id="pylib-geometry-module"></span><h1>pylib.geometry module<a class="headerlink" href="#module-pylib.geometry" title="Permalink to this headline"></a></h1>
<p>2D geometry objects.</p>
<dl class="field-list simple">
<dt class="field-odd">Date</dt>
<dd class="field-odd"><p>2019-12-21</p>
</dd>
</dl>
<span class="target" id="module-geometry"></span><dl class="class">
<dt id="pylib.geometry.CS">
<em class="property">class </em><code class="sig-name descname">CS</code><span class="sig-paren">(</span><em class="sig-param">x=[1, 0, 0], y=[0, 1, 0], z=[0, 0, 1]</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">mathematics.matrix</span></code></p>
<p>Coordinate system</p>
<dl class="method">
<dt id="pylib.geometry.CS.get_coordinates">
<code class="sig-name descname">get_coordinates</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.get_coordinates"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.get_coordinates" title="Permalink to this definition"></a></dt>
<dd><p>Get coordinates in 3d space</p>
</dd></dl>
<dl class="method">
<dt id="pylib.geometry.CS.x90">
<em class="property">static </em><code class="sig-name descname">x90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.x90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.x90" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.CS.xm90">
<em class="property">static </em><code class="sig-name descname">xm90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.xm90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.xm90" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.CS.y90">
<em class="property">static </em><code class="sig-name descname">y90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.y90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.y90" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.CS.ym90">
<em class="property">static </em><code class="sig-name descname">ym90</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#CS.ym90"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.CS.ym90" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Circle">
<em class="property">class </em><code class="sig-name descname">Circle</code><span class="sig-paren">(</span><em class="sig-param">radius=1</em>, <em class="sig-param">n=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Circle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Circle" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Polygon" title="pylib.geometry.Polygon"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Polygon</span></code></a></p>
<p>Circle a closed wireframe object in local coordinate system</p>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Direction">
<em class="property">class </em><code class="sig-name descname">Direction</code><span class="sig-paren">(</span><em class="sig-param">x=1</em>, <em class="sig-param">y=0</em>, <em class="sig-param">z=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Direction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Direction" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">mathematics.vector</span></code></p>
<p>Direction in local coordinate system</p>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Line">
<em class="property">class </em><code class="sig-name descname">Line</code><span class="sig-paren">(</span><em class="sig-param">point1=vector([-1</em>, <em class="sig-param">0</em>, <em class="sig-param">0])</em>, <em class="sig-param">point2=vector([1</em>, <em class="sig-param">0</em>, <em class="sig-param">0])</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Line"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Line" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Wireframe" title="pylib.geometry.Wireframe"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Wireframe</span></code></a></p>
<p>Line a open wireframe object in local coordinate system</p>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Point">
<em class="property">class </em><code class="sig-name descname">Point</code><span class="sig-paren">(</span><em class="sig-param">x=0</em>, <em class="sig-param">y=0</em>, <em class="sig-param">z=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Point"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Point" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">mathematics.vector</span></code></p>
<p>Point in local coordinate system</p>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Polygon">
<em class="property">class </em><code class="sig-name descname">Polygon</code><span class="sig-paren">(</span><em class="sig-param">*points</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Polygon"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Polygon" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#pylib.geometry.Wireframe" title="pylib.geometry.Wireframe"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylib.geometry.Wireframe</span></code></a></p>
<p>Polygon as closed wireframe object in local coordinate system</p>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.Wireframe">
<em class="property">class </em><code class="sig-name descname">Wireframe</code><span class="sig-paren">(</span><em class="sig-param">*points</em>, <em class="sig-param">closed=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Open and closed wireframe object in local coordinate system</p>
<p>This class create its own points (copy).</p>
<dl class="method">
<dt id="pylib.geometry.Wireframe.ch_cs">
<code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.ch_cs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.points">
<code class="sig-name descname">points</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.points"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.points" title="Permalink to this definition"></a></dt>
<dd><p>Get coordinates in 3d space</p>
</dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.rotate_x">
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_x" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.rotate_y">
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_y" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.rotate_z">
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.rotate_z" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.scale">
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.scale" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.translate">
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.translate" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.Wireframe.xyz">
<code class="sig-name descname">xyz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#Wireframe.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.Wireframe.xyz" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="pylib.geometry.World">
<em class="property">class </em><code class="sig-name descname">World</code><a class="reference internal" href="_modules/pylib/geometry.html#World"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>World-space with world-space coordinates</p>
<dl class="method">
<dt id="pylib.geometry.World.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param">*objects</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.add" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.bounding_box">
<code class="sig-name descname">bounding_box</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.bounding_box"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.bounding_box" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.center">
<code class="sig-name descname">center</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.center"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.center" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.ch_cs">
<code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.ch_cs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.cs">
<code class="sig-name descname">cs</code><span class="sig-paren">(</span><em class="sig-param">cs=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.cs" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.objects">
<code class="sig-name descname">objects</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.objects"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.rotate_x">
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.rotate_x" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.rotate_y">
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.rotate_y" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.rotate_z">
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.rotate_z" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.scale">
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.scale" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.space_diagonal">
<code class="sig-name descname">space_diagonal</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.space_diagonal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.space_diagonal" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.geometry.World.translate">
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry.html#World.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry.World.translate" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.function.html" title="previous chapter">pylib.function module</a></li>
<li>Next: <a href="pylib.geometry2d.html" title="next chapter">pylib.geometry2d module</a></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.geometry.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>geometry module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.geometry2d module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.geometry2d_plot module" href="pylib.geometry2d_plot.html" />
<link rel="prev" title="pylib.geometry module" href="pylib.geometry.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,17 +34,17 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-geometry"> <div class="section" id="module-pylib.geometry2d">
<span id="geometry-module"></span><h1>geometry module<a class="headerlink" href="#module-geometry" title="Permalink to this headline"></a></h1> <span id="pylib-geometry2d-module"></span><h1>pylib.geometry2d module<a class="headerlink" href="#module-pylib.geometry2d" title="Permalink to this headline"></a></h1>
<p>2D geometry objects.</p> <p>2D geometry objects.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
<dd class="field-odd"><p>2019-08-28</p> <dd class="field-odd"><p>2019-08-28</p>
</dd> </dd>
</dl> </dl>
<span class="target" id="module-geometry"></span><dl class="function"> <span class="target" id="module-geometry2d"></span><dl class="function">
<dt id="geometry.angle"> <dt id="pylib.geometry2d.angle">
<code class="sig-name descname">angle</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#angle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.angle" title="Permalink to this definition"></a></dt> <code class="sig-name descname">angle</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#angle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.angle" title="Permalink to this definition"></a></dt>
<dd><p>Angle of point or between two points.</p> <dd><p>Angle of point or between two points.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -61,8 +63,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.cubic"> <dt id="pylib.geometry2d.cubic">
<code class="sig-name descname">cubic</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">angle1</em>, <em class="sig-param">point2</em>, <em class="sig-param">angle2</em>, <em class="sig-param">samples=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#cubic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.cubic" title="Permalink to this definition"></a></dt> <code class="sig-name descname">cubic</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">angle1</em>, <em class="sig-param">point2</em>, <em class="sig-param">angle2</em>, <em class="sig-param">samples=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#cubic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.cubic" title="Permalink to this definition"></a></dt>
<dd><p>Cubic line defined by two end points and the rotation in radians <dd><p>Cubic line defined by two end points and the rotation in radians
at the points.</p> at the points.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -86,8 +88,8 @@ at the points.</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.cubic_deg"> <dt id="pylib.geometry2d.cubic_deg">
<code class="sig-name descname">cubic_deg</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">angle1</em>, <em class="sig-param">point2</em>, <em class="sig-param">angle2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#cubic_deg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.cubic_deg" title="Permalink to this definition"></a></dt> <code class="sig-name descname">cubic_deg</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">angle1</em>, <em class="sig-param">point2</em>, <em class="sig-param">angle2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#cubic_deg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.cubic_deg" title="Permalink to this definition"></a></dt>
<dd><p>Cubic line defined by two end points and the roation in degree <dd><p>Cubic line defined by two end points and the roation in degree
at the points.</p> at the points.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -109,13 +111,13 @@ at the points.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.cubic" title="geometry.cubic"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cubic()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.cubic" title="pylib.geometry2d.cubic"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cubic()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.cubics"> <dt id="pylib.geometry2d.cubics">
<code class="sig-name descname">cubics</code><span class="sig-paren">(</span><em class="sig-param">pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#cubics"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.cubics" title="Permalink to this definition"></a></dt> <code class="sig-name descname">cubics</code><span class="sig-paren">(</span><em class="sig-param">pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#cubics"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.cubics" title="Permalink to this definition"></a></dt>
<dd><p>Cubic lines defined by a list of two end points. The deformation <dd><p>Cubic lines defined by a list of two end points. The deformation
as displacement and rotation (radians) is defined element wise as as displacement and rotation (radians) is defined element wise as
keyword argument deformation or global node wise as keyword argument deformation or global node wise as
@@ -162,8 +164,8 @@ decides what the left and the right end point of the line is.</p></li>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.distance"> <dt id="pylib.geometry2d.distance">
<code class="sig-name descname">distance</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#distance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.distance" title="Permalink to this definition"></a></dt> <code class="sig-name descname">distance</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#distance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.distance" title="Permalink to this definition"></a></dt>
<dd><p>Distance between two points (or length of a straight line).</p> <dd><p>Distance between two points (or length of a straight line).</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -182,8 +184,8 @@ decides what the left and the right end point of the line is.</p></li>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.interpolate_hermite"> <dt id="pylib.geometry2d.interpolate_hermite">
<code class="sig-name descname">interpolate_hermite</code><span class="sig-paren">(</span><em class="sig-param">lvd</em>, <em class="sig-param">lr</em>, <em class="sig-param">rvd</em>, <em class="sig-param">rr</em>, <em class="sig-param">lhd=0</em>, <em class="sig-param">rhd=0</em>, <em class="sig-param">scale_x=1</em>, <em class="sig-param">scale_y=1</em>, <em class="sig-param">samples=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#interpolate_hermite"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.interpolate_hermite" title="Permalink to this definition"></a></dt> <code class="sig-name descname">interpolate_hermite</code><span class="sig-paren">(</span><em class="sig-param">lvd</em>, <em class="sig-param">lr</em>, <em class="sig-param">rvd</em>, <em class="sig-param">rr</em>, <em class="sig-param">lhd=0</em>, <em class="sig-param">rhd=0</em>, <em class="sig-param">scale_x=1</em>, <em class="sig-param">scale_y=1</em>, <em class="sig-param">samples=10</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#interpolate_hermite"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.interpolate_hermite" title="Permalink to this definition"></a></dt>
<dd><p>Interpolate cubic line with hermite boundary conditions.</p> <dd><p>Interpolate cubic line with hermite boundary conditions.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -207,8 +209,8 @@ x = s\,L + x_1\end{split}\]</div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.line"> <dt id="pylib.geometry2d.line">
<code class="sig-name descname">line</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2</em>, <em class="sig-param">samples=2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#line"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.line" title="Permalink to this definition"></a></dt> <code class="sig-name descname">line</code><span class="sig-paren">(</span><em class="sig-param">point1</em>, <em class="sig-param">point2</em>, <em class="sig-param">samples=2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#line"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.line" title="Permalink to this definition"></a></dt>
<dd><p>Line defined by two end points.</p> <dd><p>Line defined by two end points.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[y = \frac{y_2-y_1}{x_2-x_1}(x-x_1) + y_1\]</div> \[y = \frac{y_2-y_1}{x_2-x_1}(x-x_1) + y_1\]</div>
@@ -239,8 +241,8 @@ x = s\,L + x_1\end{split}\]</div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.lines"> <dt id="pylib.geometry2d.lines">
<code class="sig-name descname">lines</code><span class="sig-paren">(</span><em class="sig-param">pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.lines" title="Permalink to this definition"></a></dt> <code class="sig-name descname">lines</code><span class="sig-paren">(</span><em class="sig-param">pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.lines" title="Permalink to this definition"></a></dt>
<dd><p>Lines defined by a list of end points.</p> <dd><p>Lines defined by a list of end points.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -274,14 +276,14 @@ decides what the left and the right end point of the line is.</p></li>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <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="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> <p><code class="xref py py-meth docutils literal notranslate"><span class="pre">plot_lines()</span></code> of the <code class="xref py py-mod docutils literal notranslate"><span class="pre">geometry_plot</span></code>
module to plot the lines</p> module to plot the lines</p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.rectangle"> <dt id="pylib.geometry2d.rectangle">
<code class="sig-name descname">rectangle</code><span class="sig-paren">(</span><em class="sig-param">width</em>, <em class="sig-param">height</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#rectangle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.rectangle" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rectangle</code><span class="sig-paren">(</span><em class="sig-param">width</em>, <em class="sig-param">height</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#rectangle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.rectangle" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple"> <dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple"> <dd class="field-odd"><ul class="simple">
@@ -299,8 +301,8 @@ module to plot the lines</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.rotate"> <dt id="pylib.geometry2d.rotate">
<code class="sig-name descname">rotate</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">*pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#rotate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.rotate" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">*pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#rotate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.rotate" title="Permalink to this definition"></a></dt>
<dd><p>Rotate a point or polygon counterclockwise by a given angle <dd><p>Rotate a point or polygon counterclockwise by a given angle
around a given origin. The angle should be given in radians.</p> around a given origin. The angle should be given in radians.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -321,13 +323,13 @@ around a given origin. The angle should be given in radians.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.rotate_xy" title="geometry.rotate_xy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate_xy()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.rotate_xy" title="pylib.geometry2d.rotate_xy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate_xy()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.rotate_deg"> <dt id="pylib.geometry2d.rotate_deg">
<code class="sig-name descname">rotate_deg</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">*pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#rotate_deg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.rotate_deg" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_deg</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">*pts</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#rotate_deg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.rotate_deg" title="Permalink to this definition"></a></dt>
<dd><p>Rotate a point or polygon counterclockwise by a given angle <dd><p>Rotate a point or polygon counterclockwise by a given angle
around a given origin. The angle should be given in degrees.</p> around a given origin. The angle should be given in degrees.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -348,13 +350,13 @@ around a given origin. The angle should be given in degrees.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.rotate" title="geometry.rotate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.rotate" title="pylib.geometry2d.rotate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.rotate_xy"> <dt id="pylib.geometry2d.rotate_xy">
<code class="sig-name descname">rotate_xy</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">x</em>, <em class="sig-param">y</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#rotate_xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.rotate_xy" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_xy</code><span class="sig-paren">(</span><em class="sig-param">origin</em>, <em class="sig-param">angle</em>, <em class="sig-param">x</em>, <em class="sig-param">y</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#rotate_xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.rotate_xy" title="Permalink to this definition"></a></dt>
<dd><p>Rotate x and y coordinates counterclockwise by a given angle <dd><p>Rotate x and y coordinates counterclockwise by a given angle
around a given origin. The angle should be given in radians.</p> around a given origin. The angle should be given in radians.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -370,13 +372,13 @@ around a given origin. The angle should be given in radians.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.rotate" title="geometry.rotate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.rotate" title="pylib.geometry2d.rotate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rotate()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.square"> <dt id="pylib.geometry2d.square">
<code class="sig-name descname">square</code><span class="sig-paren">(</span><em class="sig-param">width</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#square"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.square" title="Permalink to this definition"></a></dt> <code class="sig-name descname">square</code><span class="sig-paren">(</span><em class="sig-param">width</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#square"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.square" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple"> <dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>width</strong> (<em>int</em><em> or </em><em>float</em>) the edge size of the square</p> <dd class="field-odd"><p><strong>width</strong> (<em>int</em><em> or </em><em>float</em>) the edge size of the square</p>
@@ -390,13 +392,13 @@ around a given origin. The angle should be given in radians.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.rectangle" title="geometry.rectangle"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rectangle()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.rectangle" title="pylib.geometry2d.rectangle"><code class="xref py py-meth docutils literal notranslate"><span class="pre">rectangle()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.translate"> <dt id="pylib.geometry2d.translate">
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">vec</em>, <em class="sig-param">*pts</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.translate" title="Permalink to this definition"></a></dt> <code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">vec</em>, <em class="sig-param">*pts</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.translate" title="Permalink to this definition"></a></dt>
<dd><p>Translate a point or polygon by a given vector.</p> <dd><p>Translate a point or polygon by a given vector.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -414,13 +416,13 @@ around a given origin. The angle should be given in radians.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.translate_xy" title="geometry.translate_xy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">translate_xy()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.translate_xy" title="pylib.geometry2d.translate_xy"><code class="xref py py-meth docutils literal notranslate"><span class="pre">translate_xy()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry.translate_xy"> <dt id="pylib.geometry2d.translate_xy">
<code class="sig-name descname">translate_xy</code><span class="sig-paren">(</span><em class="sig-param">vec</em>, <em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry.html#translate_xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry.translate_xy" title="Permalink to this definition"></a></dt> <code class="sig-name descname">translate_xy</code><span class="sig-paren">(</span><em class="sig-param">vec</em>, <em class="sig-param">x</em>, <em class="sig-param">y</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d.html#translate_xy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d.translate_xy" title="Permalink to this definition"></a></dt>
<dd><p>Translate a point or polygon by a given vector.</p> <dd><p>Translate a point or polygon by a given vector.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -439,7 +441,7 @@ around a given origin. The angle should be given in radians.</p>
</dl> </dl>
<div class="admonition seealso"> <div class="admonition seealso">
<p class="admonition-title">See also</p> <p class="admonition-title">See also</p>
<p><a class="reference internal" href="#geometry.translate" title="geometry.translate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">translate()</span></code></a></p> <p><a class="reference internal" href="#pylib.geometry2d.translate" title="pylib.geometry2d.translate"><code class="xref py py-meth docutils literal notranslate"><span class="pre">translate()</span></code></a></p>
</div> </div>
</dd></dl> </dd></dl>
@@ -462,11 +464,24 @@ around a given origin. The angle should be given in radians.</p>
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.geometry.html" title="previous chapter">pylib.geometry module</a></li>
<li>Next: <a href="pylib.geometry2d_plot.html" title="next chapter">pylib.geometry2d_plot module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -500,7 +515,7 @@ around a given origin. The angle should be given in radians.</p>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/geometry.rst.txt" <a href="_sources/pylib.geometry2d.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>geometry_plot module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.geometry2d_plot module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.mathematics module" href="pylib.mathematics.html" />
<link rel="prev" title="pylib.geometry2d module" href="pylib.geometry2d.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,22 +34,22 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-geometry_plot"> <div class="section" id="module-pylib.geometry2d_plot">
<span id="geometry-plot-module"></span><h1>geometry_plot module<a class="headerlink" href="#module-geometry_plot" title="Permalink to this headline"></a></h1> <span id="pylib-geometry2d-plot-module"></span><h1>pylib.geometry2d_plot module<a class="headerlink" href="#module-pylib.geometry2d_plot" title="Permalink to this headline"></a></h1>
<p>2D geometry plotter using matplotlib (pylab).</p> <p>2D geometry plotter using matplotlib (pylab).</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
<dd class="field-odd"><p>2019-08-20</p> <dd class="field-odd"><p>2019-08-20</p>
</dd> </dd>
</dl> </dl>
<span class="target" id="module-geometry_plot"></span><dl class="function"> <span class="target" id="module-geometry2d_plot"></span><dl class="function">
<dt id="geometry_plot.plot_cubic_lines"> <dt id="pylib.geometry2d_plot.plot_cubic_lines">
<code class="sig-name descname">plot_cubic_lines</code><span class="sig-paren">(</span><em class="sig-param">lns</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry_plot.html#plot_cubic_lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry_plot.plot_cubic_lines" title="Permalink to this definition"></a></dt> <code class="sig-name descname">plot_cubic_lines</code><span class="sig-paren">(</span><em class="sig-param">lns</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d_plot.html#plot_cubic_lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d_plot.plot_cubic_lines" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="geometry_plot.plot_lines"> <dt id="pylib.geometry2d_plot.plot_lines">
<code class="sig-name descname">plot_lines</code><span class="sig-paren">(</span><em class="sig-param">lns</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/geometry_plot.html#plot_lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#geometry_plot.plot_lines" title="Permalink to this definition"></a></dt> <code class="sig-name descname">plot_lines</code><span class="sig-paren">(</span><em class="sig-param">lns</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/geometry2d_plot.html#plot_lines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.geometry2d_plot.plot_lines" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</div> </div>
@@ -69,11 +71,24 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.geometry2d.html" title="previous chapter">pylib.geometry2d module</a></li>
<li>Next: <a href="pylib.mathematics.html" title="next chapter">pylib.mathematics module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -107,7 +122,7 @@
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/geometry_plot.rst.txt" <a href="_sources/pylib.geometry2d_plot.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>mathematics module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.mathematics module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.time_of_day module" href="pylib.time_of_day.html" />
<link rel="prev" title="pylib.geometry2d_plot module" href="pylib.geometry2d_plot.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,8 +34,8 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-mathematics"> <div class="section" id="module-pylib.mathematics">
<span id="mathematics-module"></span><h1>mathematics module<a class="headerlink" href="#module-mathematics" title="Permalink to this headline"></a></h1> <span id="pylib-mathematics-module"></span><h1>pylib.mathematics module<a class="headerlink" href="#module-pylib.mathematics" title="Permalink to this headline"></a></h1>
<p>Mathematical functions and objects.</p> <p>Mathematical functions and objects.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
@@ -41,19 +43,19 @@
</dd> </dd>
</dl> </dl>
<span class="target" id="module-mathematics"></span><dl class="function"> <span class="target" id="module-mathematics"></span><dl class="function">
<dt id="mathematics.lcm"> <dt id="pylib.mathematics.lcm">
<code class="sig-name descname">lcm</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#lcm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.lcm" title="Permalink to this definition"></a></dt> <code class="sig-name descname">lcm</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#lcm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.lcm" title="Permalink to this definition"></a></dt>
<dd><p>Compute the lowest common multiple of a and b</p> <dd><p>Compute the lowest common multiple of a and b</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="mathematics.matrix"> <dt id="pylib.mathematics.matrix">
<em class="property">class </em><code class="sig-name descname">matrix</code><a class="reference internal" href="_modules/mathematics.html#matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="sig-name descname">matrix</code><a class="reference internal" href="_modules/pylib/mathematics.html#matrix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p> <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
<p>Use/create matrix like list of lists</p> <p>Use/create matrix like list of lists</p>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.rotate_x"> <dt id="pylib.mathematics.matrix.rotate_x">
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_x" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_x" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the x dirction.</p> <dd><p>Rotation about the x dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix} \[\begin{split}\begin{bmatrix}
@@ -77,8 +79,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.rotate_y"> <dt id="pylib.mathematics.matrix.rotate_y">
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_y" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_y" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the y dirction.</p> <dd><p>Rotation about the y dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix} \[\begin{split}\begin{bmatrix}
@@ -102,8 +104,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.rotate_z"> <dt id="pylib.mathematics.matrix.rotate_z">
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rotate_z" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rotate_z" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the z dirction.</p> <dd><p>Rotation about the z dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix} \[\begin{split}\begin{bmatrix}
@@ -127,8 +129,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.rx"> <dt id="pylib.mathematics.matrix.rx">
<em class="property">static </em><code class="sig-name descname">rx</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rx" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">rx</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rx" title="Permalink to this definition"></a></dt>
<dd><p>Rotation matrix about the x direction.</p> <dd><p>Rotation matrix about the x direction.</p>
<p>Rotates the coordinate system of vectors</p> <p>Rotates the coordinate system of vectors</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
@@ -142,8 +144,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.ry"> <dt id="pylib.mathematics.matrix.ry">
<em class="property">static </em><code class="sig-name descname">ry</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.ry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.ry" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">ry</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.ry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.ry" title="Permalink to this definition"></a></dt>
<dd><p>Rotation matrix about the y direction.</p> <dd><p>Rotation matrix about the y direction.</p>
<p>Rotates the coordinate system of vectors</p> <p>Rotates the coordinate system of vectors</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
@@ -157,8 +159,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.rz"> <dt id="pylib.mathematics.matrix.rz">
<em class="property">static </em><code class="sig-name descname">rz</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.rz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.rz" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">rz</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.rz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.rz" title="Permalink to this definition"></a></dt>
<dd><p>Rotation matrix about the z direction.</p> <dd><p>Rotation matrix about the z direction.</p>
<p>Rotates the coordinate system of vectors</p> <p>Rotates the coordinate system of vectors</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
@@ -193,8 +195,8 @@
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.s"> <dt id="pylib.mathematics.matrix.s">
<em class="property">static </em><code class="sig-name descname">s</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.s"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.s" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">s</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.s"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.s" title="Permalink to this definition"></a></dt>
<dd><p>Scaling matrix</p> <dd><p>Scaling matrix</p>
<p>uniform scaling if sx=sy=sz=s. <p>uniform scaling if sx=sy=sz=s.
Note that scaling happens around the origin, so objects not Note that scaling happens around the origin, so objects not
@@ -213,8 +215,8 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.scale"> <dt id="pylib.mathematics.matrix.scale">
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.scale" title="Permalink to this definition"></a></dt> <code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.scale" title="Permalink to this definition"></a></dt>
<dd><p>Scaling</p> <dd><p>Scaling</p>
<p>uniform scaling if sx=sy=sz=s. <p>uniform scaling if sx=sy=sz=s.
Note that scaling happens around the origin, so objects not Note that scaling happens around the origin, so objects not
@@ -244,8 +246,8 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.t"> <dt id="pylib.mathematics.matrix.t">
<em class="property">static </em><code class="sig-name descname">t</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.t"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.t" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">t</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.t"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.t" title="Permalink to this definition"></a></dt>
<dd><p>Translation matrix</p> <dd><p>Translation matrix</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}T = \[\begin{split}T =
@@ -258,8 +260,8 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.matrix.translate"> <dt id="pylib.mathematics.matrix.translate">
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#matrix.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.matrix.translate" title="Permalink to this definition"></a></dt> <code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#matrix.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.matrix.translate" title="Permalink to this definition"></a></dt>
<dd><p>Translation</p> <dd><p>Translation</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix} \[\begin{split}\begin{bmatrix}
@@ -285,8 +287,8 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="mathematics.vector"> <dt id="pylib.mathematics.vector">
<em class="property">class </em><code class="sig-name descname">vector</code><a class="reference internal" href="_modules/mathematics.html#vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="sig-name descname">vector</code><a class="reference internal" href="_modules/pylib/mathematics.html#vector"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p> <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p>
<p>Use/create vector like lists</p> <p>Use/create vector like lists</p>
<ul class="simple"> <ul class="simple">
@@ -345,29 +347,29 @@ it should be.</p>
</pre></div> </pre></div>
</div> </div>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.abs"> <dt id="pylib.mathematics.vector.abs">
<em class="property">static </em><code class="sig-name descname">abs</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.abs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.abs" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">abs</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.abs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.abs" title="Permalink to this definition"></a></dt>
<dd><p>Return modulus parts of a complex vector</p> <dd><p>Return modulus parts of a complex vector</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.ang"> <dt id="pylib.mathematics.vector.ang">
<em class="property">static </em><code class="sig-name descname">ang</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ang"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ang" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">ang</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ang"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ang" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.arg"> <dt id="pylib.mathematics.vector.arg">
<em class="property">static </em><code class="sig-name descname">arg</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.arg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.arg" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">arg</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.arg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.arg" title="Permalink to this definition"></a></dt>
<dd><p>Return phase parts of a complex vector</p> <dd><p>Return phase parts of a complex vector</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.ch_cs"> <dt id="pylib.mathematics.vector.ch_cs">
<code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ch_cs" title="Permalink to this definition"></a></dt> <code class="sig-name descname">ch_cs</code><span class="sig-paren">(</span><em class="sig-param">cs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ch_cs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ch_cs" title="Permalink to this definition"></a></dt>
<dd><p>Transform this vector from its defined coordinate system to a <dd><p>Transform this vector from its defined coordinate system to a
new coordinate system, defined by the given coordinate system (u, new coordinate system, defined by the given coordinate system (u,
v and w direction vectors).</p> v and w direction vectors).</p>
@@ -383,16 +385,16 @@ v and w direction vectors).</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.conjugate"> <dt id="pylib.mathematics.vector.conjugate">
<em class="property">static </em><code class="sig-name descname">conjugate</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.conjugate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.conjugate" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">conjugate</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.conjugate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.conjugate" title="Permalink to this definition"></a></dt>
<dd><p>New vector object</p> <dd><p>New vector object</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.cross"> <dt id="pylib.mathematics.vector.cross">
<em class="property">static </em><code class="sig-name descname">cross</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.cross"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.cross" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">cross</code><span class="sig-paren">(</span><em class="sig-param">a</em>, <em class="sig-param">b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.cross"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.cross" title="Permalink to this definition"></a></dt>
<dd><p>Cross product</p> <dd><p>Cross product</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
@@ -403,8 +405,8 @@ The direction of c can be found with the right-hand rule.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.full"> <dt id="pylib.mathematics.vector.full">
<em class="property">static </em><code class="sig-name descname">full</code><span class="sig-paren">(</span><em class="sig-param">length</em>, <em class="sig-param">fill_value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.full" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">full</code><span class="sig-paren">(</span><em class="sig-param">length</em>, <em class="sig-param">fill_value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.full" title="Permalink to this definition"></a></dt>
<dd><p>Returns a vector of length m or matrix of size m rows, n <dd><p>Returns a vector of length m or matrix of size m rows, n
columns filled with v.</p> columns filled with v.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -428,16 +430,16 @@ columns filled with v.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.im"> <dt id="pylib.mathematics.vector.im">
<em class="property">static </em><code class="sig-name descname">im</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.im"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.im" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">im</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.im"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.im" title="Permalink to this definition"></a></dt>
<dd><p>Return the imaginary parts of a complex vector</p> <dd><p>Return the imaginary parts of a complex vector</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.normalize"> <dt id="pylib.mathematics.vector.normalize">
<em class="property">static </em><code class="sig-name descname">normalize</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.normalize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.normalize" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">normalize</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.normalize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.normalize" title="Permalink to this definition"></a></dt>
<dd><p>Normalize a vector (i. e. the vector has a length of 1)</p> <dd><p>Normalize a vector (i. e. the vector has a length of 1)</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
@@ -450,8 +452,8 @@ columns filled with v.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.ones"> <dt id="pylib.mathematics.vector.ones">
<em class="property">static </em><code class="sig-name descname">ones</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.ones"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.ones" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">ones</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.ones"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.ones" title="Permalink to this definition"></a></dt>
<dd><p>Returns a vector of length m or matrix of size rows, n <dd><p>Returns a vector of length m or matrix of size rows, n
columns filled with ones.</p> columns filled with ones.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -469,8 +471,8 @@ columns filled with ones.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.random"> <dt id="pylib.mathematics.vector.random">
<em class="property">static </em><code class="sig-name descname">random</code><span class="sig-paren">(</span><em class="sig-param">shape</em>, <em class="sig-param">lmin=0.0</em>, <em class="sig-param">lmax=1.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.random"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.random" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">random</code><span class="sig-paren">(</span><em class="sig-param">shape</em>, <em class="sig-param">lmin=0.0</em>, <em class="sig-param">lmax=1.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.random"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.random" title="Permalink to this definition"></a></dt>
<dd><p>Returns a random vector of length n or matrix of size m rows, n <dd><p>Returns a random vector of length n or matrix of size m rows, n
columns filled with random numbers.</p> columns filled with random numbers.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -488,16 +490,16 @@ columns filled with random numbers.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.re"> <dt id="pylib.mathematics.vector.re">
<em class="property">static </em><code class="sig-name descname">re</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.re"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.re" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">re</code><span class="sig-paren">(</span><em class="sig-param">a</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.re"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.re" title="Permalink to this definition"></a></dt>
<dd><p>Return the real parts of a complex vector</p> <dd><p>Return the real parts of a complex vector</p>
<dl class="field-list simple"> <dl class="field-list simple">
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.rotate_x"> <dt id="pylib.mathematics.vector.rotate_x">
<code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_x" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_x</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_x"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_x" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the x dirction.</p> <dd><p>Rotation about the x dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} = \[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
@@ -511,8 +513,8 @@ columns filled with random numbers.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.rotate_y"> <dt id="pylib.mathematics.vector.rotate_y">
<code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_y" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_y</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_y"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_y" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the y dirction.</p> <dd><p>Rotation about the y dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} = \[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
@@ -526,8 +528,8 @@ columns filled with random numbers.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.rotate_z"> <dt id="pylib.mathematics.vector.rotate_z">
<code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.rotate_z" title="Permalink to this definition"></a></dt> <code class="sig-name descname">rotate_z</code><span class="sig-paren">(</span><em class="sig-param">theta</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.rotate_z"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.rotate_z" title="Permalink to this definition"></a></dt>
<dd><p>Rotation about the z dirction.</p> <dd><p>Rotation about the z dirction.</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} = \[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
@@ -541,8 +543,8 @@ columns filled with random numbers.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.scale"> <dt id="pylib.mathematics.vector.scale">
<code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.scale" title="Permalink to this definition"></a></dt> <code class="sig-name descname">scale</code><span class="sig-paren">(</span><em class="sig-param">sx</em>, <em class="sig-param">sy=None</em>, <em class="sig-param">sz=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.scale"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.scale" title="Permalink to this definition"></a></dt>
<dd><p>Scaling</p> <dd><p>Scaling</p>
<p>uniform scaling if sx=sy=sz=s. <p>uniform scaling if sx=sy=sz=s.
Note that scaling happens around the origin, so objects not Note that scaling happens around the origin, so objects not
@@ -562,8 +564,8 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.translate"> <dt id="pylib.mathematics.vector.translate">
<code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.translate" title="Permalink to this definition"></a></dt> <code class="sig-name descname">translate</code><span class="sig-paren">(</span><em class="sig-param">tx</em>, <em class="sig-param">ty</em>, <em class="sig-param">tz</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.translate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.translate" title="Permalink to this definition"></a></dt>
<dd><p>Translation</p> <dd><p>Translation</p>
<div class="math notranslate nohighlight"> <div class="math notranslate nohighlight">
\[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} = \[\begin{split}\begin{bmatrix}x' \\ y' \\ z' \\ h'\end{bmatrix} =
@@ -577,13 +579,13 @@ it should be.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.xyz"> <dt id="pylib.mathematics.vector.xyz">
<code class="sig-name descname">xyz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.xyz" title="Permalink to this definition"></a></dt> <code class="sig-name descname">xyz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.xyz"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.xyz" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="mathematics.vector.zeros"> <dt id="pylib.mathematics.vector.zeros">
<em class="property">static </em><code class="sig-name descname">zeros</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/mathematics.html#vector.zeros"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#mathematics.vector.zeros" title="Permalink to this definition"></a></dt> <em class="property">static </em><code class="sig-name descname">zeros</code><span class="sig-paren">(</span><em class="sig-param">length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/mathematics.html#vector.zeros"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.mathematics.vector.zeros" title="Permalink to this definition"></a></dt>
<dd><p>Returns a zero vector of length m or matrix of size rows, n <dd><p>Returns a zero vector of length m or matrix of size rows, n
columns filled with zeros.</p> columns filled with zeros.</p>
<dl class="field-list simple"> <dl class="field-list simple">
@@ -621,11 +623,24 @@ columns filled with zeros.</p>
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.geometry2d_plot.html" title="previous chapter">pylib.geometry2d_plot module</a></li>
<li>Next: <a href="pylib.time_of_day.html" title="next chapter">pylib.time_of_day module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -659,7 +674,7 @@ columns filled with zeros.</p>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/mathematics.rst.txt" <a href="_sources/pylib.mathematics.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

189
docs/build/html/pylib.numerical.fit.html vendored Normal file
View File

@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.numerical.fit module &#8212; pylib 2019.12.21 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="next" title="pylib.numerical.integration module" href="pylib.numerical.integration.html" />
<link rel="prev" title="pylib.numerical package" href="pylib.numerical.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="module-pylib.numerical.fit">
<span id="pylib-numerical-fit-module"></span><h1>pylib.numerical.fit module<a class="headerlink" href="#module-pylib.numerical.fit" title="Permalink to this headline"></a></h1>
<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>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li><a href="pylib.numerical.html">pylib.numerical package</a><ul>
<li>Previous: <a href="pylib.numerical.html" title="previous chapter">pylib.numerical package</a></li>
<li>Next: <a href="pylib.numerical.integration.html" title="next chapter">pylib.numerical.integration module</a></li>
</ul></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.numerical.fit.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>pylib.numerical package &#8212; pylib 2019.5.19 documentation</title> <title>pylib.numerical package &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,8 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="pylib.numerical.fit module" href="pylib.numerical.fit.html" />
<link rel="prev" title="pylib package" href="pylib.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,494 +34,18 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="pylib-numerical-package"> <div class="section" id="module-pylib.numerical">
<h1>pylib.numerical package<a class="headerlink" href="#pylib-numerical-package" title="Permalink to this headline"></a></h1> <span id="pylib-numerical-package"></span><h1>pylib.numerical package<a class="headerlink" href="#module-pylib.numerical" title="Permalink to this headline"></a></h1>
<div class="section" id="submodules"> <div class="section" id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2> <h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
</div> <div class="toctree-wrapper compound">
<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> <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 class="toctree-l1"><a class="reference internal" href="pylib.numerical.fit.html">pylib.numerical.fit module</a></li>
<li><p>b expected value <span class="math notranslate nohighlight">\(\mu\)</span> (position of maximum, default = 0)</p></li> <li class="toctree-l1"><a class="reference internal" href="pylib.numerical.integration.html">pylib.numerical.integration module</a></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 class="toctree-l1"><a class="reference internal" href="pylib.numerical.ode.html">pylib.numerical.ode module</a></li>
<li><p>d vertical offset (default = 0)</p></li> <li class="toctree-l1"><a class="reference internal" href="pylib.numerical.ode_model.html">pylib.numerical.ode_model module</a></li>
</ul> </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> </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
(Simpsons rule, Keplers 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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
I &amp;\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\
&amp;= \int\limits_a^b
\left( f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \right)
\mathrm{d}x \\
&amp;= \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 \\
&amp;= \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 &amp;\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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
f(x) &amp;= x^2 \\
a &amp;= 0 \\
b &amp;= 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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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:
Eulersche 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} &amp;= f(t,x) \\
x(t_0) &amp;= 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} &amp;= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\
x_{i+1} &amp;= 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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;= 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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix} x_2 \\ m^{-1}(f(t) - d x_2 - k x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +
\begin{bmatrix} 0 &amp; 1 \\ -m^{-1} k &amp; -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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;=
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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix}
x_2 \\ m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1}(x_1) f(t) \end{bmatrix} +
\begin{bmatrix}
0 &amp; 1 \\ -m^{-1}(x_1) k(x_1) &amp; -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} &lt; \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>
@@ -540,11 +66,24 @@ equations.</p>
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.html" title="previous chapter">pylib package</a></li>
<li>Next: <a href="pylib.numerical.fit.html" title="next chapter">pylib.numerical.fit module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>

View File

@@ -0,0 +1,205 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.numerical.integration module &#8212; pylib 2019.12.21 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="next" title="pylib.numerical.ode module" href="pylib.numerical.ode.html" />
<link rel="prev" title="pylib.numerical.fit module" href="pylib.numerical.fit.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="module-pylib.numerical.integration">
<span id="pylib-numerical-integration-module"></span><h1>pylib.numerical.integration module<a class="headerlink" href="#module-pylib.numerical.integration" title="Permalink to this headline"></a></h1>
<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
(Simpsons rule, Keplers 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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
I &amp;\approx \int\limits_a^b f_n(x) \,\mathrm{d}x \\
&amp;= \int\limits_a^b
\left( f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \right)
\mathrm{d}x \\
&amp;= \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 \\
&amp;= \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 &amp;\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 &amp;= \int\limits_a^b f(x) \,\mathrm{d}x \\
f(x) &amp;= x^2 \\
a &amp;= 0 \\
b &amp;= 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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li><a href="pylib.numerical.html">pylib.numerical package</a><ul>
<li>Previous: <a href="pylib.numerical.fit.html" title="previous chapter">pylib.numerical.fit module</a></li>
<li>Next: <a href="pylib.numerical.ode.html" title="next chapter">pylib.numerical.ode module</a></li>
</ul></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.numerical.integration.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

357
docs/build/html/pylib.numerical.ode.html vendored Normal file
View File

@@ -0,0 +1,357 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.numerical.ode module &#8212; pylib 2019.12.21 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="next" title="pylib.numerical.ode_model module" href="pylib.numerical.ode_model.html" />
<link rel="prev" title="pylib.numerical.integration module" href="pylib.numerical.integration.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="module-pylib.numerical.ode">
<span id="pylib-numerical-ode-module"></span><h1>pylib.numerical.ode module<a class="headerlink" href="#module-pylib.numerical.ode" title="Permalink to this headline"></a></h1>
<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:
Eulersche 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} &amp;= f(t,x) \\
x(t_0) &amp;= 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} &amp;= x_i + (t_{i+1}-t_i) f(t_i, x_i) \\
x_{i+1} &amp;= 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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;= 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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix} x_2 \\ m^{-1}(f(t) - d x_2 - k x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1} f(t) \end{bmatrix} +
\begin{bmatrix} 0 &amp; 1 \\ -m^{-1} k &amp; -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 &amp;= u &amp;\quad \dot{x}_1 = \dot{u} = x_2 \\
x_2 &amp;= \dot{u} &amp;\quad \dot{x}_2 = \ddot{u} \\\end{split}\]</div>
<p>becomes</p>
<div class="math notranslate nohighlight">
\[\begin{split}\dot{x}_1 &amp;= x_2 \\
\dot{x}_2 &amp;=
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} &amp;= f(t,x) \\
\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} &amp;=
\begin{bmatrix}
x_2 \\ m^{-1}(x_1)(f(t) - d(x_1,x_2) x_2 - k(x_1) x_1)
\end{bmatrix} \\
&amp;=
\begin{bmatrix} 0 \\ m^{-1}(x_1) f(t) \end{bmatrix} +
\begin{bmatrix}
0 &amp; 1 \\ -m^{-1}(x_1) k(x_1) &amp; -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} &lt; \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>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li><a href="pylib.numerical.html">pylib.numerical package</a><ul>
<li>Previous: <a href="pylib.numerical.integration.html" title="previous chapter">pylib.numerical.integration module</a></li>
<li>Next: <a href="pylib.numerical.ode_model.html" title="next chapter">pylib.numerical.ode_model module</a></li>
</ul></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.numerical.ode.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

View File

@@ -0,0 +1,194 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>pylib.numerical.ode_model module &#8212; pylib 2019.12.21 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="next" title="pylib.data module" href="pylib.data.html" />
<link rel="prev" title="pylib.numerical.ode module" href="pylib.numerical.ode.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="module-pylib.numerical.ode_model">
<span id="pylib-numerical-ode-model-module"></span><h1>pylib.numerical.ode_model module<a class="headerlink" href="#module-pylib.numerical.ode_model" title="Permalink to this headline"></a></h1>
<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>
</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>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li><a href="pylib.numerical.html">pylib.numerical package</a><ul>
<li>Previous: <a href="pylib.numerical.ode.html" title="previous chapter">pylib.numerical.ode module</a></li>
<li>Next: <a href="pylib.data.html" title="next chapter">pylib.data module</a></li>
</ul></li>
</ul></li>
</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">
&copy;2019, Daniel Weschke.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/pylib.numerical.ode_model.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>time_of_day module &#8212; pylib 2019.5.19 documentation</title> <title>pylib.time_of_day module &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -16,6 +16,7 @@
<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> <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="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="prev" title="pylib.mathematics module" href="pylib.mathematics.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -32,8 +33,8 @@
<div class="body" role="main"> <div class="body" role="main">
<div class="section" id="module-time_of_day"> <div class="section" id="module-pylib.time_of_day">
<span id="time-of-day-module"></span><h1>time_of_day module<a class="headerlink" href="#module-time_of_day" title="Permalink to this headline"></a></h1> <span id="pylib-time-of-day-module"></span><h1>pylib.time_of_day module<a class="headerlink" href="#module-pylib.time_of_day" title="Permalink to this headline"></a></h1>
<p>Calculate time.</p> <p>Calculate time.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Date</dt> <dt class="field-odd">Date</dt>
@@ -41,8 +42,8 @@
</dd> </dd>
</dl> </dl>
<span class="target" id="module-time_of_day"></span><dl class="function"> <span class="target" id="module-time_of_day"></span><dl class="function">
<dt id="time_of_day.days"> <dt id="pylib.time_of_day.days">
<code class="sig-name descname">days</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#days"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.days" title="Permalink to this definition"></a></dt> <code class="sig-name descname">days</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#days"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.days" title="Permalink to this definition"></a></dt>
<dd><p>The days of the time (year).</p> <dd><p>The days of the time (year).</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -58,8 +59,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.days_norm"> <dt id="pylib.time_of_day.days_norm">
<code class="sig-name descname">days_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#days_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.days_norm" title="Permalink to this definition"></a></dt> <code class="sig-name descname">days_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#days_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.days_norm" title="Permalink to this definition"></a></dt>
<dd><p>The days normalized to 365.2425 (Gregorian, on average) days.</p> <dd><p>The days normalized to 365.2425 (Gregorian, on average) days.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -75,8 +76,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.hours"> <dt id="pylib.time_of_day.hours">
<code class="sig-name descname">hours</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#hours"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.hours" title="Permalink to this definition"></a></dt> <code class="sig-name descname">hours</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#hours"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.hours" title="Permalink to this definition"></a></dt>
<dd><p>The hours of the time.</p> <dd><p>The hours of the time.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -92,8 +93,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.hours_norm"> <dt id="pylib.time_of_day.hours_norm">
<code class="sig-name descname">hours_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#hours_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.hours_norm" title="Permalink to this definition"></a></dt> <code class="sig-name descname">hours_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#hours_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.hours_norm" title="Permalink to this definition"></a></dt>
<dd><p>The hours normalized to 24 hours.</p> <dd><p>The hours normalized to 24 hours.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -109,8 +110,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.in_seconds"> <dt id="pylib.time_of_day.in_seconds">
<code class="sig-name descname">in_seconds</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#in_seconds"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.in_seconds" title="Permalink to this definition"></a></dt> <code class="sig-name descname">in_seconds</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#in_seconds"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.in_seconds" title="Permalink to this definition"></a></dt>
<dd><p>If time is <cite>time.struct_time</cite> convert to float seconds.</p> <dd><p>If time is <cite>time.struct_time</cite> convert to float seconds.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -126,8 +127,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.minutes"> <dt id="pylib.time_of_day.minutes">
<code class="sig-name descname">minutes</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#minutes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.minutes" title="Permalink to this definition"></a></dt> <code class="sig-name descname">minutes</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#minutes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.minutes" title="Permalink to this definition"></a></dt>
<dd><p>The minutes of the time.</p> <dd><p>The minutes of the time.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -143,8 +144,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.minutes_norm"> <dt id="pylib.time_of_day.minutes_norm">
<code class="sig-name descname">minutes_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#minutes_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.minutes_norm" title="Permalink to this definition"></a></dt> <code class="sig-name descname">minutes_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#minutes_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.minutes_norm" title="Permalink to this definition"></a></dt>
<dd><p>The minutes normalized to 60 minutes.</p> <dd><p>The minutes normalized to 60 minutes.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -160,8 +161,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.seconds"> <dt id="pylib.time_of_day.seconds">
<code class="sig-name descname">seconds</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#seconds"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.seconds" title="Permalink to this definition"></a></dt> <code class="sig-name descname">seconds</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#seconds"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.seconds" title="Permalink to this definition"></a></dt>
<dd><p>The seconds of the time.</p> <dd><p>The seconds of the time.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -177,8 +178,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.seconds_norm"> <dt id="pylib.time_of_day.seconds_norm">
<code class="sig-name descname">seconds_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#seconds_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.seconds_norm" title="Permalink to this definition"></a></dt> <code class="sig-name descname">seconds_norm</code><span class="sig-paren">(</span><em class="sig-param">time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#seconds_norm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.seconds_norm" title="Permalink to this definition"></a></dt>
<dd><p>The seconds normalized to 60 seconds.</p> <dd><p>The seconds normalized to 60 seconds.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -194,8 +195,8 @@
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="time_of_day.transform"> <dt id="pylib.time_of_day.transform">
<code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">time_norm</em>, <em class="sig-param">length</em>, <em class="sig-param">offset=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/time_of_day.html#transform"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#time_of_day.transform" title="Permalink to this definition"></a></dt> <code class="sig-name descname">transform</code><span class="sig-paren">(</span><em class="sig-param">time_norm</em>, <em class="sig-param">length</em>, <em class="sig-param">offset=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/time_of_day.html#transform"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.time_of_day.transform" title="Permalink to this definition"></a></dt>
<dd><p>Transform normalized time value to new length.</p> <dd><p>Transform normalized time value to new length.</p>
<dl class="field-list simple"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
@@ -233,11 +234,23 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="modules.html">pylib</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="pylib.html">pylib package</a></li>
</ul>
</li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>
<ul> <ul>
<li><a href="index.html">Documentation overview</a><ul> <li><a href="index.html">Documentation overview</a><ul>
<li><a href="modules.html">pylib</a><ul>
<li><a href="pylib.html">pylib package</a><ul>
<li>Previous: <a href="pylib.mathematics.html" title="previous chapter">pylib.mathematics module</a></li>
</ul></li>
</ul></li>
</ul></li> </ul></li>
</ul> </ul>
</div> </div>
@@ -271,7 +284,7 @@
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a> &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
| |
<a href="_sources/time_of_day.rst.txt" <a href="_sources/pylib.time_of_day.rst.txt"
rel="nofollow">Page source</a> rel="nofollow">Page source</a>
</div> </div>

View File

@@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Search &#8212; pylib 2019.5.19 documentation</title> <title>Search &#8212; pylib 2019.12.21 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" /> <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/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -77,6 +77,10 @@
<h3>Navigation</h3> <h3>Navigation</h3>
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules.html">pylib</a></li>
</ul>
<div class="relations"> <div class="relations">
<h3>Related Topics</h3> <h3>Related Topics</h3>

File diff suppressed because one or more lines are too long

View File

@@ -25,7 +25,7 @@ copyright = '2019, Daniel Weschke'
author = 'Daniel Weschke' author = 'Daniel Weschke'
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
release = '2019.5.19' release = '2019.12.21'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------

View File

@@ -1,7 +0,0 @@
data module
===========
.. automodule:: data
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
date module
===========
.. automodule:: date
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
function module
===============
.. automodule:: function
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
geometry module
===============
.. automodule:: geometry
:members:
:undoc-members:
:show-inheritance:

View File

@@ -10,6 +10,8 @@ Welcome to pylib's documentation!
:maxdepth: 2 :maxdepth: 2
:caption: Contents: :caption: Contents:
modules
Indices and tables Indices and tables

View File

@@ -1,7 +0,0 @@
mathematics module
==================
.. automodule:: mathematics
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,46 +0,0 @@
numerical package
=================
Submodules
----------
numerical.fit module
--------------------
.. automodule:: numerical.fit
:members:
:undoc-members:
:show-inheritance:
numerical.integration module
----------------------------
.. automodule:: numerical.integration
:members:
:undoc-members:
:show-inheritance:
numerical.ode module
--------------------
.. automodule:: numerical.ode
:members:
:undoc-members:
:show-inheritance:
numerical.ode\_model module
---------------------------
.. automodule:: numerical.ode_model
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: numerical
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.data module
=================
.. automodule:: pylib.data
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.date module
=================
.. automodule:: pylib.date
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.drawblock module
======================
.. automodule:: pylib.drawblock
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.function module
=====================
.. automodule:: pylib.function
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.geometry module
=====================
.. automodule:: pylib.geometry
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.geometry2d module
=======================
.. automodule:: pylib.geometry2d
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.geometry2d\_plot module
=============================
.. automodule:: pylib.geometry2d_plot
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.mathematics module
========================
.. automodule:: pylib.mathematics
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.fit module
==========================
.. automodule:: pylib.numerical.fit
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.integration module
==================================
.. automodule:: pylib.numerical.integration
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.ode module
==========================
.. automodule:: pylib.numerical.ode
:members:
:undoc-members:
:show-inheritance:

View File

@@ -0,0 +1,7 @@
pylib.numerical.ode\_model module
=================================
.. automodule:: pylib.numerical.ode_model
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,46 +1,17 @@
pylib.numerical package 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 .. automodule:: pylib.numerical
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
Submodules
----------
.. toctree::
pylib.numerical.fit
pylib.numerical.integration
pylib.numerical.ode
pylib.numerical.ode_model

View File

@@ -1,6 +1,11 @@
pylib package pylib package
============= =============
.. automodule:: pylib
:members:
:undoc-members:
:show-inheritance:
Subpackages Subpackages
----------- -----------
@@ -11,75 +16,14 @@ Subpackages
Submodules Submodules
---------- ----------
pylib.data module .. toctree::
-----------------
.. automodule:: pylib.data pylib.data
:members: pylib.date
:undoc-members: pylib.drawblock
:show-inheritance: pylib.function
pylib.geometry
pylib.date module pylib.geometry2d
----------------- pylib.geometry2d_plot
pylib.mathematics
.. automodule:: pylib.date pylib.time_of_day
:members:
:undoc-members:
:show-inheritance:
pylib.drawblock module
----------------------
.. automodule:: pylib.drawblock
: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:

View File

@@ -0,0 +1,7 @@
pylib.time\_of\_day module
==========================
.. automodule:: pylib.time_of_day
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
time\_of\_day module
====================
.. automodule:: time_of_day
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,11 +1,22 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Draw with block characters.
:Date: 2019-11-15
.. module:: drawblock
:platform: *nix, Windows
:synopsis: Draw with block characters.
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
"""
def histogram(f, x=None): def histogram(f, x=None):
"""Histogram chart with block symbols. """Histogram chart with block symbols.
dots: ::
dots
,_, ,_,
|8| |8|
|7| |7|

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""2D geometry objects. """2D geometry objects.
:Date: 2019-08-28 :Date: 2019-12-21
.. module:: geometry .. module:: geometry
:platform: *nix, Windows :platform: *nix, Windows
@@ -11,501 +11,215 @@
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de> .. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
""" """
import math import math
import numpy as np import copy
from mathematics import vector, matrix
class Direction(vector):
"""Direction in local coordinate system"""
def __init__(self, x=1, y=0, z=0):
super().__init__([x, y, z, 0])
def distance(point1, point2): def __str__(self):
"""Distance between two points (or length of a straight line). return str(self.xyz())
:param point1: first point (first end point of straight line) class Point(vector):
:type point1: tuple """Point in local coordinate system"""
:param point2: second point (second end point of straight line) def __init__(self, x=0, y=0, z=0):
:type point2: tuple super().__init__([x, y, z, 1])
:returns: distance between the two points def __str__(self):
:rtype: float return str(self.xyz())
class CS(matrix):
"""Coordinate system
""" """
return math.sqrt((point2[0]-point1[0])**2 + (point2[1]-point1[1])**2) def __init__(self, x=[1, 0, 0], y=[0, 1, 0], z=[0, 0, 1]):
super().__init__([[*x, 0], [*y, 0], [*z, 0], [0, 0, 0, 1]])
def __str__(self):
return '[' + ', '.join([str(i) for i in self.get_coordinates()]) + ']'
def angle(point1, point2=None): @staticmethod
"""Angle of point or between two points. def x90():
return CS((1, 0, 0), (0, 0, -1), (0, 1, 0))
:param point1: (first) point @staticmethod
:type point1: tuple def xm90():
:param point2: second point (default = None) return CS((1, 0, 0), (0, 0, 1), (0, -1, 0))
:type point2: tuple
:returns: angle of point or between two points @staticmethod
:rtype: float def y90():
return CS((0, 0, 1), (0, 1, 0), (-1, 0, 0))
@staticmethod
def ym90():
return CS((0, 0, -1), (0, 1, 0), (1, 0, 0))
def get_coordinates(self):
"""Get coordinates in 3d space"""
return self[:3,:3]
class World():
"""World-space with world-space coordinates
""" """
if point2 is None: def __init__(self):
return math.atan2(point1[1], point1[0]) self._cs = CS() # Camera
return math.atan2(point2[1]-point1[1], point2[0]-point1[0]) self._objects = []
self._store_init()
def __iter__(self):
"""Returns the Iterator object"""
return iter(self.objects())
def translate(vec, *pts): def _store_init(self):
"""Translate a point or polygon by a given vector. """Initialize or reset calculated values, because a new object was added.
:param vec: translation vector
:type vec: tuple
:param `*pts`: points to translate
:returns: (point_x, point_y) or (point1, point2, ...)
:rtype: tuple
.. seealso::
:meth:`translate_xy`
""" """
vx, vy = vec self._bb = None
return tuple([(x+vx, y+vy) for (x, y) in pts]) self._sd = None
def cs(self, cs=None):
if cs:
self._cs = cs
return self._cs
def translate_xy(vec, x, y): def ch_cs(self, cs):
"""Translate a point or polygon by a given vector. self._cs = self._cs * cs
return self
:param vec: translation vector def rotate_x(self, theta):
:type vec: tuple self._cs.rotate_x(theta)
:param x: points to translate return self
:type x: int or float or list
:param y: points to translate
:type y: int or float or list
:returns: (x', y') def rotate_y(self, theta):
:rtype: tuple self._cs.rotate_y(theta)
return self
.. seealso:: def rotate_z(self, theta):
:meth:`translate` self._cs.rotate_z(theta)
return self
def translate(self, tx, ty, tz):
self._cs.translate(tx, ty, tz)
return self
def scale(self, sx, sy=None, sz=None):
self._cs.scale(sx, sy, sz)
return self
def objects(self):
return [copy.deepcopy(i).ch_cs(self._cs) for i in self._objects]
def add(self, *objects):
self._store_init() # calculated values are not correct anymore
[self._objects.append(i) for i in objects]
return self
def bounding_box(self):
if self._bb is not None:
return self._bb
xmin = math.inf
ymin = math.inf
zmin = math.inf
xmax = -math.inf
ymax = -math.inf
zmax = -math.inf
for i in self._objects:
xi, yi, zi = map(min, i.xyz())
xs, ys, zs = map(max, i.xyz())
#xmax = x if x > xmax: xmax = x
xmin = xi if xi < xmin else xmin
ymin = yi if yi < ymin else ymin
zmin = zi if zi < zmin else zmin
xmax = xs if xs > xmax else xmax
ymax = ys if ys > ymax else ymax
zmax = zs if zs > zmax else zmax
self._bb = xmin, xmax, ymin, ymax, zmin, zmax
return self._bb
def space_diagonal(self):
if self._sd is not None:
return self._sd
bb = self.bounding_box()
a, b, c = bb[1]-bb[0], bb[3]-bb[2], bb[5]-bb[4]
return math.sqrt(a**2+b**2+c**2)
def center(self):
bb = self.bounding_box()
self.ch_cs([[1,0,0,-(bb[1]-bb[0])/2],[0,1,0,-(bb[3]-bb[2])/2],[0,0,1,-(bb[5]-bb[4])/2],[0,0,0,1]])
return self
# TODO: Wireframe(list) or Wireframe(matrix) ?
# list of Points
class Wireframe():
"""Open and closed wireframe object in local coordinate system
This class create its own points (copy).
""" """
vx, vy = vec def __init__(self, *points, closed=False):
self._points = [copy.copy(i) for i in points]
if not hasattr(x, "__len__"): self.closed = closed
x = [x]
def __str__(self):
if not hasattr(y, "__len__"): return '[' + ', '.join([str(point) for point in self._points]) + ']'
y = [y]
def __iter__(self):
xp = [xi+vx for xi in x] """Returns the Iterator object"""
yp = [yi+vy for yi in y] return iter(self.points())
# no list if it is only one value def points(self):
if len(xp) == 1: """Get coordinates in 3d space"""
return xp[0], yp[0] result = [i for i in self._points]
return result if not self.closed else result + [result[0]]
return xp, yp
def xyz(self):
return zip(*[i.xyz() for i in self.points()])
def rotate(origin, angle, *pts, **kwargs):
"""Rotate a point or polygon counterclockwise by a given angle def rotate_x(self, theta):
around a given origin. The angle should be given in radians. self._points = [point.rotate_x(theta) for point in self._points]
return self
:param origin: the center of rotation
:type origin: tuple def rotate_y(self, theta):
:param angle: the rotation angle self._points = [point.rotate_y(theta) for point in self._points]
:type angle: int or float return self
:param `*pts`: points to rotate
:param `**kwargs`: options def rotate_z(self, theta):
self._points = [point.rotate_z(theta) for point in self._points]
:returns: (point_x, point_y) or (point1, point2, ...) return self
:rtype: tuple
def translate(self, tx, ty, tz):
.. seealso:: self._points = [point.translate(tx, ty, tz) for point in self._points]
:meth:`rotate_xy` return self
"""
ox, oy = origin def scale(self, sx, sy=None, sz=None):
if not sy:
# add first point to the end sy = sx
if "closed" in kwargs and kwargs["closed"] is True: sz = sx
pts += (pts[0],) self._points = [point.scale(sx, sy, sz) for point in self._points]
return self
result = tuple([(ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy),
oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)) def ch_cs(self, cs):
for (px, py) in pts]) self._points = [point.ch_cs(cs) for point in self._points]
return self
# no tuple in tuple if it is only one point
if len(pts) == 1: class Line(Wireframe):
return result[0][0], result[0][1] """Line a open wireframe object in local coordinate system"""
def __init__(self, point1=Point(-1, 0, 0), point2=Point(1, 0, 0)):
return result super().__init__(point1, point2)
class Polygon(Wireframe):
def rotate_deg(origin, angle, *pts, **kwargs): """Polygon as closed wireframe object in local coordinate system"""
"""Rotate a point or polygon counterclockwise by a given angle def __init__(self, *points):
around a given origin. The angle should be given in degrees. super().__init__(*points, closed=True)
:param origin: the center of rotation class Circle(Polygon):
:type origin: tuple """Circle a closed wireframe object in local coordinate system"""
:param angle: the rotation angle def __init__(self, radius=1, n=10):
:type angle: int or float points = []
:param `*pts`: points to rotate for i in range(n):
:param `**kwargs`: options x = radius * math.sin(i*2*math.pi/n)
y = radius * math.cos(i*2*math.pi/n)
:returns: (point_x, point_y) or (point1, point2, ...) points.append(Point(x, y, 0))
:rtype: tuple super().__init__(*points)
.. seealso::
:meth:`rotate`
"""
return rotate(origin, angle*math.pi/180, *pts, **kwargs)
def rotate_xy(origin, angle, x, y, **kwargs):
"""Rotate x and y coordinates counterclockwise by a given angle
around a given origin. The angle should be given in radians.
:param origin: the center of rotation
:type origin: tuple
:param angle: the rotation angle
:type angle: int or float
:param x: x coordinates
:type x: int or float or list
:param y: y coordinates
:type y: int or float or list
:param `**kwargs`: options
.. seealso::
:meth:`rotate`
"""
ox, oy = origin
if not hasattr(x, "__len__"):
x = [x]
if not hasattr(y, "__len__"):
y = [y]
# add first point to the end
if "closed" in kwargs and kwargs["closed"] is True:
x.append(x[0])
y.append(y[0])
x_result = [ox + math.cos(angle) * (xi - ox) - math.sin(angle) * (yi - oy)
for xi, yi in zip(x, y)]
y_result = [oy + math.sin(angle) * (xi - ox) + math.cos(angle) * (yi - oy)
for xi, yi in zip(x, y)]
# no list if it is only one value
if len(x_result) == 1:
return x_result[0], y_result[0]
return x_result, y_result
def rectangle(width, height):
"""\
:param width: the width of the rectangle
:type width: int or float
:param height: the height of the rectangle
:type height: int or float
:returns: (point1, point2, point3, point4)
:rtype: tuple
"""
pt1 = (-width/2, -height/2)
pt2 = (width/2, -height/2)
pt3 = (width/2, height/2)
pt4 = (-width/2, height/2)
return pt1, pt2, pt3, pt4, pt1
def square(width):
"""\
:param width: the edge size of the square
:type width: int or float
:returns: (point1, point2, point3, point4)
:rtype: tuple
.. seealso::
:meth:`rectangle`
"""
return rectangle(width, width)
def lines(pts, **kwargs):
"""Lines defined by a list of end points.
:param pts: list of points in absolute global coordinate system. If
keyword inc is given than the inc decides what the left and the
right end point of the line is, otherwise it is assumed that the
points build a solid line, that is lines between the given points
in given order.
:type pts: list
:param `**kwargs`: options:
* deformation -- list of points. Additional deformation
(translation) at point.
* factor -- factor of the deformation (default = 1).
* inc -- the incidence table, a list of 2 element lists. The inc
decides what the left and the right end point of the line is.
* index_offset -- starting index of lists (default = 0).
:returns: list of endpoints for each line;
[((point1_x, point1_y), (point2_x, point2_y)),
(p1, p2),
...]
:rtype: list
.. seealso::
:meth:`~geometry_plot.plot_lines` of the :mod:`geometry_plot`
module to plot the lines
"""
if 'index_offset' not in kwargs:
kwargs['index_offset'] = 0
if 'deformation' in kwargs:
if 'factor' not in kwargs:
kwargs['factor'] = 1
pts = [(p[0]+d[0]*kwargs['factor'], p[1]+d[1]*kwargs['factor']) for
p, d in zip(pts, kwargs['deformation'])]
if 'inc' in kwargs:
return [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']]) for l, r in kwargs['inc']]
return list(zip(pts[:-1], pts[1:]))
def cubics(pts, **kwargs):
"""Cubic lines defined by a list of two end points. The deformation
as displacement and rotation (radians) is defined element wise as
keyword argument deformation or global node wise as
global_deformation. The global coordinate system is xy. x in the
right direction and y in the top direction.
:param pts: list of points in absolute global coordinate system. If
keyword inc is given than the inc decides what the left and the
right end point of the line is, otherwise it is assumed that the
points build a solid line, that is lines between the given points
in given order.
:type pts_rot: list
:param `**kwargs`: options:
* deformation -- list of deformation element wise. Additional
deformation (translation and rotation in radians) at element
left and right node.
* rotation_plane -- rotation plane of the element wise
deformation defined by a string; either 'xy' or 'xz' (default
= 'xy'). x in the right direction and y in the top direction
or z in the bottom direction.
* global_deformation -- list of deformation global node wise.
Additional deformation (horizontal translation, vertical
translation and rotation in radians) at node.
* factor -- factor of the derformation (default = 1).
* inc -- the incidence table, a list of 2 element lists. The inc
decides what the left and the right end point of the line is.
* index_offset -- starting index of lists (default = 0).
:returns: list of endpoints for each line;
[(((point1_x, point1_y) angle1), ((point2_x, point2_y), angle2),
(p1, angle1, p2, angle2),
...]
:rtype: list
"""
if 'index_offset' not in kwargs:
kwargs['index_offset'] = 0
if 'deformation' in kwargs or 'global_deformation' in kwargs:
if 'factor' not in kwargs:
kwargs['factor'] = 1
if 'inc' in kwargs:
if 'global_deformation' in kwargs:
lr = [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']]) for l, r in kwargs['inc']]
ang = [angle(l, r) for l, r in lr]
# system deformation
U = kwargs['global_deformation']
if 'rotation_plane' in kwargs and 'xz' == kwargs['rotation_plane']:
# system deformation left X Z RY right X Z RY element wise
# Z downwards -> convert to X Y RZ
Ue = [[ U[(l-kwargs['index_offset'])][0],
-U[(l-kwargs['index_offset'])][1],
U[(l-kwargs['index_offset'])][2],
U[(r-kwargs['index_offset'])][0],
-U[(r-kwargs['index_offset'])][1],
U[(r-kwargs['index_offset'])][2]] for l, r in kwargs['inc']]
else:
# system deformation left X Y RZ right X Y RZ element wise
Ue = [[U[(l-kwargs['index_offset'])][0],
U[(l-kwargs['index_offset'])][1],
U[(l-kwargs['index_offset'])][2],
U[(r-kwargs['index_offset'])][0],
U[(r-kwargs['index_offset'])][1],
U[(r-kwargs['index_offset'])][2]] for l, r in kwargs['inc']]
# element deformation, X Y RZ to x r rz
# back transformation T^T = [[c, s, 0], [-s, c, 0], [0, 0, 1]]
u = [[( math.cos(angi)*Uei[0]+math.sin(angi)*Uei[1])*kwargs['factor'],
(-math.sin(angi)*Uei[0]+math.cos(angi)*Uei[1])*kwargs['factor'],
Uei[2] *kwargs['factor'],
( math.cos(angi)*Uei[3]+math.sin(angi)*Uei[4])*kwargs['factor'],
(-math.sin(angi)*Uei[3]+math.cos(angi)*Uei[4])*kwargs['factor'],
Uei[5] *kwargs['factor']]
for Uei, angi in zip(Ue, ang)]
else: # deformation
# the deformation is in element coordinate system, therefore the angle is needed
if 'rotation_plane' in kwargs and 'xz' == kwargs['rotation_plane']:
u = [[ ue[0]*kwargs['factor'],
-ue[1]*kwargs['factor'],
ue[2]*kwargs['factor'],
ue[3]*kwargs['factor'],
-ue[4]*kwargs['factor'],
ue[5]*kwargs['factor']] for ue in kwargs['deformation']]
else:
u = [[ui*kwargs['factor'] for ui in ue] for ue in kwargs['deformation']]
return [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']],
d) for (l, r), d in zip(kwargs['inc'], u)]
return list(zip(pts[:-1], pts[1:]))
def interpolate_hermite(lvd, lr, rvd, rr, lhd=0, rhd=0, scale_x=1, scale_y=1, samples=10):
r"""Interpolate cubic line with hermite boundary conditions.
:param lvd: left vertcal deflection
:type lvd: int or float
:param lr: left rotation
:type lr: int or float
:param rvd: right vertical deflection
:type rvd: int or float
:param rr: right rotation
:type rr: int or float
:param lhd: left horizontal deformation (default = 0)
:type lhd: int or float
:param rhd: right horizontal deformation (default = 0)
:type rhd: int or float
:param scale_x: length of element (default = 1)
:type scale_x: int or float
:param scale_y: factor of the deformation (default = 1).
This does not change the length.
:type scale_y: int or float
:param samples: number of sampling points (default = 10)
:type samples: int
.. math::
s = \frac{x - x_1}{L} \\
x = s\,L + x_1
"""
L = scale_x
Lp = L + rhd - lhd
# x=[0,1] in non-dimensional coordinates
x = np.linspace(0, 1, num=samples)
N1 = 1 - 3*x**2 + 2*x**3
N2 = ( x - 2*x**2 + x**3)*Lp
N3 = 3*x**2 - 2*x**3
N4 = ( - x**2 + x**3)*Lp
x = x*Lp
# x=[0,L] in global coordinates
x = np.linspace(0, Lp, num=samples)
N1 = 1 - 3*x**2/Lp**2 + 2*x**3/Lp**3
N2 = x - 2*x**2/Lp + x**3/Lp**2
N3 = 3*x**2/Lp**2 - 2*x**3/Lp**3
N4 = - x**2/Lp + x**3/Lp**2
v = N1*lvd + N2*lr + N3*rvd + N4*rr
x = x + lhd
y = v*scale_y
return x, y
#
# matplotlib format, return lists for x and y
#
def line(point1, point2, samples=2):
"""Line defined by two end points.
.. math::
y = \\frac{y_2-y_1}{x_2-x_1}(x-x_1) + y_1
:param point1: one end point
:type point1: tuple
:param point2: other end point
:type point2: tuple
:param samples: number of sampling points (default = 2)
:type samples: int
:returns: ((point1_x, point2_x), (points1_y, point2_y)) or
([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
:Example:
>>> x, y = line((0, 0), (1, 0))
>>> print(x, y)
((0, 1), (0, 0))
"""
p1x, p1y = point1
p2x, p2y = point2
denominator = (p1x - p2x)
if samples > 2 and denominator > 0:
x = np.linspace(p1x, p2x, samples)
a = (p1y - p2y) / denominator
b = (p1x*p2y - p2x*p1y) / denominator
y = a*x + b
return x, y
return (p1x, p2x), (p1y, p2y) # matplotlib format
def cubic(point1, angle1, point2, angle2, samples=10):
"""Cubic line defined by two end points and the rotation in radians
at the points.
:param point1: one end point
:type point1: tuple
:param angle1: the slope at the one end point
:type angle1: int or float
:param point2: other end point
:type point2: tuple
:param angle2: the slope at the other end point
:type angle2: int or float
:param samples: number of sampling points (default = 10)
:type samples: int
:returns: ([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
"""
p1x, p1y = point1
p2x, p2y = point2
x = np.linspace(p1x, p2x, num=samples)
p1ys = math.tan(angle1)
p2ys = math.tan(angle2)
a = (p1x*p1ys + p1x*p2ys - p2x*p1ys - p2x*p2ys - 2*p1y + 2*p2y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
b = (- p1x**2*p1ys - 2*p1x**2*p2ys - p1x*p2x*p1ys + p1x*p2x*p2ys + 3*p1x*p1y - 3*p1x*p2y + 2*p2x**2*p1ys + p2x**2*p2ys + 3*p2x*p1y - 3*p2x*p2y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
c = (p1x**3*p2ys + 2*p1x**2*p2x*p1ys + p1x**2*p2x*p2ys - p1x*p2x**2*p1ys - 2*p1x*p2x**2*p2ys - 6*p1x*p2x*p1y + 6*p1x*p2x*p2y - p2x**3*p1ys)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
d = (- p1x**3*p2x*p2ys + p1x**3*p2y - p1x**2*p2x**2*p1ys + p1x**2*p2x**2*p2ys - 3*p1x**2*p2x*p2y + p1x*p2x**3*p1ys + 3*p1x*p2x**2*p1y - p2x**3*p1y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
y = a*x**3 + b*x**2 + c*x + d
return x, y
def cubic_deg(point1, angle1, point2, angle2):
"""Cubic line defined by two end points and the roation in degree
at the points.
:param point1: one end point
:type point1: tuple
:param angle1: the slope at the one end point
:type angle1: int or float
:param point2: other end point
:type point2: tuple
:param angle2: the slope at the other end point
:type angle2: int or float
:returns: ([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
.. seealso::
:meth:`cubic`
"""
return cubic(point1, angle1 * math.pi/180, point2, angle2 * math.pi/180)

511
pylib/geometry2d.py Normal file
View File

@@ -0,0 +1,511 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""2D geometry objects.
:Date: 2019-08-28
.. module:: geometry2d
:platform: *nix, Windows
:synopsis: 2D geometry objects.
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
"""
import math
import numpy as np
def distance(point1, point2):
"""Distance between two points (or length of a straight line).
:param point1: first point (first end point of straight line)
:type point1: tuple
:param point2: second point (second end point of straight line)
:type point2: tuple
:returns: distance between the two points
:rtype: float
"""
return math.sqrt((point2[0]-point1[0])**2 + (point2[1]-point1[1])**2)
def angle(point1, point2=None):
"""Angle of point or between two points.
:param point1: (first) point
:type point1: tuple
:param point2: second point (default = None)
:type point2: tuple
:returns: angle of point or between two points
:rtype: float
"""
if point2 is None:
return math.atan2(point1[1], point1[0])
return math.atan2(point2[1]-point1[1], point2[0]-point1[0])
def translate(vec, *pts):
"""Translate a point or polygon by a given vector.
:param vec: translation vector
:type vec: tuple
:param `*pts`: points to translate
:returns: (point_x, point_y) or (point1, point2, ...)
:rtype: tuple
.. seealso::
:meth:`translate_xy`
"""
vx, vy = vec
return tuple([(x+vx, y+vy) for (x, y) in pts])
def translate_xy(vec, x, y):
"""Translate a point or polygon by a given vector.
:param vec: translation vector
:type vec: tuple
:param x: points to translate
:type x: int or float or list
:param y: points to translate
:type y: int or float or list
:returns: (x', y')
:rtype: tuple
.. seealso::
:meth:`translate`
"""
vx, vy = vec
if not hasattr(x, "__len__"):
x = [x]
if not hasattr(y, "__len__"):
y = [y]
xp = [xi+vx for xi in x]
yp = [yi+vy for yi in y]
# no list if it is only one value
if len(xp) == 1:
return xp[0], yp[0]
return xp, yp
def rotate(origin, angle, *pts, **kwargs):
"""Rotate a point or polygon counterclockwise by a given angle
around a given origin. The angle should be given in radians.
:param origin: the center of rotation
:type origin: tuple
:param angle: the rotation angle
:type angle: int or float
:param `*pts`: points to rotate
:param `**kwargs`: options
:returns: (point_x, point_y) or (point1, point2, ...)
:rtype: tuple
.. seealso::
:meth:`rotate_xy`
"""
ox, oy = origin
# add first point to the end
if "closed" in kwargs and kwargs["closed"] is True:
pts += (pts[0],)
result = tuple([(ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy),
oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy))
for (px, py) in pts])
# no tuple in tuple if it is only one point
if len(pts) == 1:
return result[0][0], result[0][1]
return result
def rotate_deg(origin, angle, *pts, **kwargs):
"""Rotate a point or polygon counterclockwise by a given angle
around a given origin. The angle should be given in degrees.
:param origin: the center of rotation
:type origin: tuple
:param angle: the rotation angle
:type angle: int or float
:param `*pts`: points to rotate
:param `**kwargs`: options
:returns: (point_x, point_y) or (point1, point2, ...)
:rtype: tuple
.. seealso::
:meth:`rotate`
"""
return rotate(origin, angle*math.pi/180, *pts, **kwargs)
def rotate_xy(origin, angle, x, y, **kwargs):
"""Rotate x and y coordinates counterclockwise by a given angle
around a given origin. The angle should be given in radians.
:param origin: the center of rotation
:type origin: tuple
:param angle: the rotation angle
:type angle: int or float
:param x: x coordinates
:type x: int or float or list
:param y: y coordinates
:type y: int or float or list
:param `**kwargs`: options
.. seealso::
:meth:`rotate`
"""
ox, oy = origin
if not hasattr(x, "__len__"):
x = [x]
if not hasattr(y, "__len__"):
y = [y]
# add first point to the end
if "closed" in kwargs and kwargs["closed"] is True:
x.append(x[0])
y.append(y[0])
x_result = [ox + math.cos(angle) * (xi - ox) - math.sin(angle) * (yi - oy)
for xi, yi in zip(x, y)]
y_result = [oy + math.sin(angle) * (xi - ox) + math.cos(angle) * (yi - oy)
for xi, yi in zip(x, y)]
# no list if it is only one value
if len(x_result) == 1:
return x_result[0], y_result[0]
return x_result, y_result
def rectangle(width, height):
"""\
:param width: the width of the rectangle
:type width: int or float
:param height: the height of the rectangle
:type height: int or float
:returns: (point1, point2, point3, point4)
:rtype: tuple
"""
pt1 = (-width/2, -height/2)
pt2 = (width/2, -height/2)
pt3 = (width/2, height/2)
pt4 = (-width/2, height/2)
return pt1, pt2, pt3, pt4, pt1
def square(width):
"""\
:param width: the edge size of the square
:type width: int or float
:returns: (point1, point2, point3, point4)
:rtype: tuple
.. seealso::
:meth:`rectangle`
"""
return rectangle(width, width)
def lines(pts, **kwargs):
"""Lines defined by a list of end points.
:param pts: list of points in absolute global coordinate system. If
keyword inc is given than the inc decides what the left and the
right end point of the line is, otherwise it is assumed that the
points build a solid line, that is lines between the given points
in given order.
:type pts: list
:param `**kwargs`: options:
* deformation -- list of points. Additional deformation
(translation) at point.
* factor -- factor of the deformation (default = 1).
* inc -- the incidence table, a list of 2 element lists. The inc
decides what the left and the right end point of the line is.
* index_offset -- starting index of lists (default = 0).
:returns: list of endpoints for each line;
[((point1_x, point1_y), (point2_x, point2_y)),
(p1, p2),
...]
:rtype: list
.. seealso::
:meth:`~geometry_plot.plot_lines` of the :mod:`geometry_plot`
module to plot the lines
"""
if 'index_offset' not in kwargs:
kwargs['index_offset'] = 0
if 'deformation' in kwargs:
if 'factor' not in kwargs:
kwargs['factor'] = 1
pts = [(p[0]+d[0]*kwargs['factor'], p[1]+d[1]*kwargs['factor']) for
p, d in zip(pts, kwargs['deformation'])]
if 'inc' in kwargs:
return [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']]) for l, r in kwargs['inc']]
return list(zip(pts[:-1], pts[1:]))
def cubics(pts, **kwargs):
"""Cubic lines defined by a list of two end points. The deformation
as displacement and rotation (radians) is defined element wise as
keyword argument deformation or global node wise as
global_deformation. The global coordinate system is xy. x in the
right direction and y in the top direction.
:param pts: list of points in absolute global coordinate system. If
keyword inc is given than the inc decides what the left and the
right end point of the line is, otherwise it is assumed that the
points build a solid line, that is lines between the given points
in given order.
:type pts_rot: list
:param `**kwargs`: options:
* deformation -- list of deformation element wise. Additional
deformation (translation and rotation in radians) at element
left and right node.
* rotation_plane -- rotation plane of the element wise
deformation defined by a string; either 'xy' or 'xz' (default
= 'xy'). x in the right direction and y in the top direction
or z in the bottom direction.
* global_deformation -- list of deformation global node wise.
Additional deformation (horizontal translation, vertical
translation and rotation in radians) at node.
* factor -- factor of the derformation (default = 1).
* inc -- the incidence table, a list of 2 element lists. The inc
decides what the left and the right end point of the line is.
* index_offset -- starting index of lists (default = 0).
:returns: list of endpoints for each line;
[(((point1_x, point1_y) angle1), ((point2_x, point2_y), angle2),
(p1, angle1, p2, angle2),
...]
:rtype: list
"""
if 'index_offset' not in kwargs:
kwargs['index_offset'] = 0
if 'deformation' in kwargs or 'global_deformation' in kwargs:
if 'factor' not in kwargs:
kwargs['factor'] = 1
if 'inc' in kwargs:
if 'global_deformation' in kwargs:
lr = [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']]) for l, r in kwargs['inc']]
ang = [angle(l, r) for l, r in lr]
# system deformation
U = kwargs['global_deformation']
if 'rotation_plane' in kwargs and 'xz' == kwargs['rotation_plane']:
# system deformation left X Z RY right X Z RY element wise
# Z downwards -> convert to X Y RZ
Ue = [[ U[(l-kwargs['index_offset'])][0],
-U[(l-kwargs['index_offset'])][1],
U[(l-kwargs['index_offset'])][2],
U[(r-kwargs['index_offset'])][0],
-U[(r-kwargs['index_offset'])][1],
U[(r-kwargs['index_offset'])][2]] for l, r in kwargs['inc']]
else:
# system deformation left X Y RZ right X Y RZ element wise
Ue = [[U[(l-kwargs['index_offset'])][0],
U[(l-kwargs['index_offset'])][1],
U[(l-kwargs['index_offset'])][2],
U[(r-kwargs['index_offset'])][0],
U[(r-kwargs['index_offset'])][1],
U[(r-kwargs['index_offset'])][2]] for l, r in kwargs['inc']]
# element deformation, X Y RZ to x r rz
# back transformation T^T = [[c, s, 0], [-s, c, 0], [0, 0, 1]]
u = [[( math.cos(angi)*Uei[0]+math.sin(angi)*Uei[1])*kwargs['factor'],
(-math.sin(angi)*Uei[0]+math.cos(angi)*Uei[1])*kwargs['factor'],
Uei[2] *kwargs['factor'],
( math.cos(angi)*Uei[3]+math.sin(angi)*Uei[4])*kwargs['factor'],
(-math.sin(angi)*Uei[3]+math.cos(angi)*Uei[4])*kwargs['factor'],
Uei[5] *kwargs['factor']]
for Uei, angi in zip(Ue, ang)]
else: # deformation
# the deformation is in element coordinate system, therefore the angle is needed
if 'rotation_plane' in kwargs and 'xz' == kwargs['rotation_plane']:
u = [[ ue[0]*kwargs['factor'],
-ue[1]*kwargs['factor'],
ue[2]*kwargs['factor'],
ue[3]*kwargs['factor'],
-ue[4]*kwargs['factor'],
ue[5]*kwargs['factor']] for ue in kwargs['deformation']]
else:
u = [[ui*kwargs['factor'] for ui in ue] for ue in kwargs['deformation']]
return [(pts[l-kwargs['index_offset']],
pts[r-kwargs['index_offset']],
d) for (l, r), d in zip(kwargs['inc'], u)]
return list(zip(pts[:-1], pts[1:]))
def interpolate_hermite(lvd, lr, rvd, rr, lhd=0, rhd=0, scale_x=1, scale_y=1, samples=10):
r"""Interpolate cubic line with hermite boundary conditions.
:param lvd: left vertcal deflection
:type lvd: int or float
:param lr: left rotation
:type lr: int or float
:param rvd: right vertical deflection
:type rvd: int or float
:param rr: right rotation
:type rr: int or float
:param lhd: left horizontal deformation (default = 0)
:type lhd: int or float
:param rhd: right horizontal deformation (default = 0)
:type rhd: int or float
:param scale_x: length of element (default = 1)
:type scale_x: int or float
:param scale_y: factor of the deformation (default = 1).
This does not change the length.
:type scale_y: int or float
:param samples: number of sampling points (default = 10)
:type samples: int
.. math::
s = \frac{x - x_1}{L} \\
x = s\,L + x_1
"""
L = scale_x
Lp = L + rhd - lhd
# x=[0,1] in non-dimensional coordinates
x = np.linspace(0, 1, num=samples)
N1 = 1 - 3*x**2 + 2*x**3
N2 = ( x - 2*x**2 + x**3)*Lp
N3 = 3*x**2 - 2*x**3
N4 = ( - x**2 + x**3)*Lp
x = x*Lp
# x=[0,L] in global coordinates
x = np.linspace(0, Lp, num=samples)
N1 = 1 - 3*x**2/Lp**2 + 2*x**3/Lp**3
N2 = x - 2*x**2/Lp + x**3/Lp**2
N3 = 3*x**2/Lp**2 - 2*x**3/Lp**3
N4 = - x**2/Lp + x**3/Lp**2
v = N1*lvd + N2*lr + N3*rvd + N4*rr
x = x + lhd
y = v*scale_y
return x, y
#
# matplotlib format, return lists for x and y
#
def line(point1, point2, samples=2):
"""Line defined by two end points.
.. math::
y = \\frac{y_2-y_1}{x_2-x_1}(x-x_1) + y_1
:param point1: one end point
:type point1: tuple
:param point2: other end point
:type point2: tuple
:param samples: number of sampling points (default = 2)
:type samples: int
:returns: ((point1_x, point2_x), (points1_y, point2_y)) or
([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
:Example:
>>> x, y = line((0, 0), (1, 0))
>>> print(x, y)
((0, 1), (0, 0))
"""
p1x, p1y = point1
p2x, p2y = point2
denominator = (p1x - p2x)
if samples > 2 and denominator > 0:
x = np.linspace(p1x, p2x, samples)
a = (p1y - p2y) / denominator
b = (p1x*p2y - p2x*p1y) / denominator
y = a*x + b
return x, y
return (p1x, p2x), (p1y, p2y) # matplotlib format
def cubic(point1, angle1, point2, angle2, samples=10):
"""Cubic line defined by two end points and the rotation in radians
at the points.
:param point1: one end point
:type point1: tuple
:param angle1: the slope at the one end point
:type angle1: int or float
:param point2: other end point
:type point2: tuple
:param angle2: the slope at the other end point
:type angle2: int or float
:param samples: number of sampling points (default = 10)
:type samples: int
:returns: ([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
"""
p1x, p1y = point1
p2x, p2y = point2
x = np.linspace(p1x, p2x, num=samples)
p1ys = math.tan(angle1)
p2ys = math.tan(angle2)
a = (p1x*p1ys + p1x*p2ys - p2x*p1ys - p2x*p2ys - 2*p1y + 2*p2y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
b = (- p1x**2*p1ys - 2*p1x**2*p2ys - p1x*p2x*p1ys + p1x*p2x*p2ys + 3*p1x*p1y - 3*p1x*p2y + 2*p2x**2*p1ys + p2x**2*p2ys + 3*p2x*p1y - 3*p2x*p2y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
c = (p1x**3*p2ys + 2*p1x**2*p2x*p1ys + p1x**2*p2x*p2ys - p1x*p2x**2*p1ys - 2*p1x*p2x**2*p2ys - 6*p1x*p2x*p1y + 6*p1x*p2x*p2y - p2x**3*p1ys)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
d = (- p1x**3*p2x*p2ys + p1x**3*p2y - p1x**2*p2x**2*p1ys + p1x**2*p2x**2*p2ys - 3*p1x**2*p2x*p2y + p1x*p2x**3*p1ys + 3*p1x*p2x**2*p1y - p2x**3*p1y)/(p1x**3 - 3*p1x**2*p2x + 3*p1x*p2x**2 - p2x**3)
y = a*x**3 + b*x**2 + c*x + d
return x, y
def cubic_deg(point1, angle1, point2, angle2):
"""Cubic line defined by two end points and the roation in degree
at the points.
:param point1: one end point
:type point1: tuple
:param angle1: the slope at the one end point
:type angle1: int or float
:param point2: other end point
:type point2: tuple
:param angle2: the slope at the other end point
:type angle2: int or float
:returns: ([sample_point1_x, sample_point2_x, ...],
[sample_points1_y, sample_point2_y, ...])
:rtype: tuple
.. seealso::
:meth:`cubic`
"""
return cubic(point1, angle1 * math.pi/180, point2, angle2 * math.pi/180)

View File

@@ -4,15 +4,14 @@
:Date: 2019-08-20 :Date: 2019-08-20
.. module:: geometry_plot .. module:: geometry2d_plot
:platform: *nix, Windows :platform: *nix, Windows
:synopsis: Geometry plotting. :synopsis: 2D geometry plotting.
.. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de> .. moduleauthor:: Daniel Weschke <daniel.weschke@directbox.de>
""" """
import math
import pylab import pylab
from geometry import ( from geometry2d import (
distance, angle, line, interpolate_hermite, rotate_xy, translate_xy distance, angle, line, interpolate_hermite, rotate_xy, translate_xy
) )

Some files were not shown because too many files have changed in this diff Show More