mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-15 12:03:42 +02:00
Documentation updated
This commit is contained in:
parent
06a99c8be7
commit
26a7593c74
5 changed files with 34 additions and 170 deletions
|
@ -99,10 +99,7 @@
|
|||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># coding: utf-8</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">autograd</span> <span class="kn">import</span> <span class="n">jacobian</span>
|
||||
<span class="kn">import</span> <span class="nn">autograd.numpy</span> <span class="k">as</span> <span class="nn">anp</span> <span class="c1"># Thinly-wrapped numpy</span>
|
||||
<span class="kn">from</span> <span class="nn">.obs</span> <span class="kn">import</span> <span class="n">derived_observable</span><span class="p">,</span> <span class="n">CObs</span><span class="p">,</span> <span class="n">Obs</span>
|
||||
|
|
|
@ -69,10 +69,7 @@
|
|||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># coding: utf-8</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">.obs</span> <span class="kn">import</span> <span class="n">Obs</span>
|
||||
|
||||
|
||||
|
|
|
@ -50,9 +50,6 @@
|
|||
<li>
|
||||
<a class="function" href="#matrix_pencil_method">matrix_pencil_method</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#matrix_pencil_method_old">matrix_pencil_method_old</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -72,13 +69,10 @@
|
|||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># coding: utf-8</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<div class="codehilite"><pre><span></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">scipy.linalg</span>
|
||||
<span class="kn">from</span> <span class="nn">.obs</span> <span class="kn">import</span> <span class="n">Obs</span>
|
||||
<span class="kn">from</span> <span class="nn">.linalg</span> <span class="kn">import</span> <span class="n">svd</span><span class="p">,</span> <span class="n">eig</span><span class="p">,</span> <span class="n">pinv</span>
|
||||
<span class="kn">from</span> <span class="nn">.linalg</span> <span class="kn">import</span> <span class="n">svd</span><span class="p">,</span> <span class="n">eig</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">matrix_pencil_method</span><span class="p">(</span><span class="n">corrs</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">p</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
@ -89,10 +83,13 @@
|
|||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data -- can be a list of Obs for the analysis of a single correlator, or a list of lists</span>
|
||||
<span class="sd"> data : list</span>
|
||||
<span class="sd"> can be a list of Obs for the analysis of a single correlator, or a list of lists</span>
|
||||
<span class="sd"> of Obs if several correlators are to analyzed at once.</span>
|
||||
<span class="sd"> k -- Number of states to extract (default 1).</span>
|
||||
<span class="sd"> p -- matrix pencil parameter which filters noise. The optimal value is expected between</span>
|
||||
<span class="sd"> k : int</span>
|
||||
<span class="sd"> Number of states to extract (default 1).</span>
|
||||
<span class="sd"> p : int</span>
|
||||
<span class="sd"> matrix pencil parameter which filters noise. The optimal value is expected between</span>
|
||||
<span class="sd"> len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is</span>
|
||||
<span class="sd"> to len(data)/2 but could possibly suppress more noise (default len(data)//2).</span>
|
||||
<span class="sd"> """</span>
|
||||
|
@ -130,58 +127,6 @@
|
|||
<span class="c1"># Return the sorted logarithms of the real eigenvalues as Obs</span>
|
||||
<span class="n">energy_levels</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">eig</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)))</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">energy_levels</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">abs</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">matrix_pencil_method_old</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">noise_level</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="mi">1</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">""" Older impleentation of the matrix pencil method with pencil p on given data to</span>
|
||||
<span class="sd"> extract energy levels.</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data -- lists of Obs, where the nth entry is considered to be the correlation function</span>
|
||||
<span class="sd"> at x0=n+offset.</span>
|
||||
<span class="sd"> p -- matrix pencil parameter which corresponds to the number of energy levels to extract.</span>
|
||||
<span class="sd"> higher values for p can help decreasing noise.</span>
|
||||
<span class="sd"> noise_level -- If this argument is not None an additional prefiltering via singular</span>
|
||||
<span class="sd"> value decomposition is performed in which all singular values below 10^(-noise_level)</span>
|
||||
<span class="sd"> times the largest singular value are discarded. This increases the computation time.</span>
|
||||
<span class="sd"> verbose -- if larger than zero details about the noise filtering are printed to stdout</span>
|
||||
<span class="sd"> (default 1)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">n_data</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">n_data</span> <span class="o"><=</span> <span class="n">p</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The pencil p has to be smaller than the number of data samples.'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">matrix</span> <span class="o">=</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">hankel</span><span class="p">(</span><span class="n">data</span><span class="p">[:</span><span class="n">n_data</span> <span class="o">-</span> <span class="n">p</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="n">n_data</span> <span class="o">-</span> <span class="n">p</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:])</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">p</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">noise_level</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">u</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">vh</span> <span class="o">=</span> <span class="n">svd</span><span class="p">(</span><span class="n">matrix</span><span class="p">)</span>
|
||||
|
||||
<span class="n">s_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</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="n">value</span><span class="p">)(</span><span class="n">s</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Singular values: '</span><span class="p">,</span> <span class="n">s_values</span><span class="p">)</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argwhere</span><span class="p">(</span><span class="n">s_values</span> <span class="o">/</span> <span class="n">s_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><</span> <span class="mf">10.0</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">noise_level</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">digit</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">s_values</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">digit</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="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Consider only'</span><span class="p">,</span> <span class="n">digit</span><span class="p">,</span> <span class="s1">'out of'</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="s1">'singular values'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">new_matrix</span> <span class="o">=</span> <span class="n">u</span><span class="p">[:,</span> <span class="p">:</span><span class="n">digit</span><span class="p">]</span> <span class="o">*</span> <span class="n">s</span><span class="p">[:</span><span class="n">digit</span><span class="p">]</span> <span class="o">@</span> <span class="n">vh</span><span class="p">[:</span><span class="n">digit</span><span class="p">,</span> <span class="p">:]</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">new_matrix</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">new_matrix</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span>
|
||||
|
||||
<span class="c1"># Moore–Penrose pseudoinverse</span>
|
||||
<span class="n">pinv_y1</span> <span class="o">=</span> <span class="n">pinv</span><span class="p">(</span><span class="n">y1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">e</span> <span class="o">=</span> <span class="n">eig</span><span class="p">((</span><span class="n">pinv_y1</span> <span class="o">@</span> <span class="n">y2</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">energy_levels</span> <span class="o">=</span> <span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">energy_levels</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">abs</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
||||
</details>
|
||||
|
@ -205,10 +150,13 @@
|
|||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data -- can be a list of Obs for the analysis of a single correlator, or a list of lists</span>
|
||||
<span class="sd"> data : list</span>
|
||||
<span class="sd"> can be a list of Obs for the analysis of a single correlator, or a list of lists</span>
|
||||
<span class="sd"> of Obs if several correlators are to analyzed at once.</span>
|
||||
<span class="sd"> k -- Number of states to extract (default 1).</span>
|
||||
<span class="sd"> p -- matrix pencil parameter which filters noise. The optimal value is expected between</span>
|
||||
<span class="sd"> k : int</span>
|
||||
<span class="sd"> Number of states to extract (default 1).</span>
|
||||
<span class="sd"> p : int</span>
|
||||
<span class="sd"> matrix pencil parameter which filters noise. The optimal value is expected between</span>
|
||||
<span class="sd"> len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is</span>
|
||||
<span class="sd"> to len(data)/2 but could possibly suppress more noise (default len(data)//2).</span>
|
||||
<span class="sd"> """</span>
|
||||
|
@ -258,94 +206,19 @@ eq. (2.17) of Y. Hua, T. K. Sarkar, IEEE Trans. Acoust. 38, 814-824 (1990)</p>
|
|||
<h6 id="parameters">Parameters</h6>
|
||||
|
||||
<ul>
|
||||
<li><strong>data -- can be a list of Obs for the analysis of a single correlator, or a list of lists</strong>: of Obs if several correlators are to analyzed at once.</li>
|
||||
<li><strong>k -- Number of states to extract (default 1).</strong></li>
|
||||
<li><strong>p -- matrix pencil parameter which filters noise. The optimal value is expected between</strong>: len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is
|
||||
<li><strong>data</strong> (list):
|
||||
can be a list of Obs for the analysis of a single correlator, or a list of lists
|
||||
of Obs if several correlators are to analyzed at once.</li>
|
||||
<li><strong>k</strong> (int):
|
||||
Number of states to extract (default 1).</li>
|
||||
<li><strong>p</strong> (int):
|
||||
matrix pencil parameter which filters noise. The optimal value is expected between
|
||||
len(data)/3 and 2*len(data)/3. The computation is more expensive the closer p is
|
||||
to len(data)/2 but could possibly suppress more noise (default len(data)//2).</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
<section id="matrix_pencil_method_old">
|
||||
<div class="attr function"><a class="headerlink" href="#matrix_pencil_method_old">#  </a>
|
||||
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">matrix_pencil_method_old</span><span class="signature">(data, p, noise_level=None, verbose=1, **kwargs)</span>:
|
||||
</div>
|
||||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span><span class="k">def</span> <span class="nf">matrix_pencil_method_old</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">noise_level</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="mi">1</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">""" Older impleentation of the matrix pencil method with pencil p on given data to</span>
|
||||
<span class="sd"> extract energy levels.</span>
|
||||
|
||||
<span class="sd"> Parameters</span>
|
||||
<span class="sd"> ----------</span>
|
||||
<span class="sd"> data -- lists of Obs, where the nth entry is considered to be the correlation function</span>
|
||||
<span class="sd"> at x0=n+offset.</span>
|
||||
<span class="sd"> p -- matrix pencil parameter which corresponds to the number of energy levels to extract.</span>
|
||||
<span class="sd"> higher values for p can help decreasing noise.</span>
|
||||
<span class="sd"> noise_level -- If this argument is not None an additional prefiltering via singular</span>
|
||||
<span class="sd"> value decomposition is performed in which all singular values below 10^(-noise_level)</span>
|
||||
<span class="sd"> times the largest singular value are discarded. This increases the computation time.</span>
|
||||
<span class="sd"> verbose -- if larger than zero details about the noise filtering are printed to stdout</span>
|
||||
<span class="sd"> (default 1)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">n_data</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">n_data</span> <span class="o"><=</span> <span class="n">p</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The pencil p has to be smaller than the number of data samples.'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">matrix</span> <span class="o">=</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">hankel</span><span class="p">(</span><span class="n">data</span><span class="p">[:</span><span class="n">n_data</span> <span class="o">-</span> <span class="n">p</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="n">n_data</span> <span class="o">-</span> <span class="n">p</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:])</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">p</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">noise_level</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">u</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">vh</span> <span class="o">=</span> <span class="n">svd</span><span class="p">(</span><span class="n">matrix</span><span class="p">)</span>
|
||||
|
||||
<span class="n">s_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</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="n">value</span><span class="p">)(</span><span class="n">s</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Singular values: '</span><span class="p">,</span> <span class="n">s_values</span><span class="p">)</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argwhere</span><span class="p">(</span><span class="n">s_values</span> <span class="o">/</span> <span class="n">s_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><</span> <span class="mf">10.0</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">noise_level</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">digit</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">s_values</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">digit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">digit</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="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'Consider only'</span><span class="p">,</span> <span class="n">digit</span><span class="p">,</span> <span class="s1">'out of'</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="s1">'singular values'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">new_matrix</span> <span class="o">=</span> <span class="n">u</span><span class="p">[:,</span> <span class="p">:</span><span class="n">digit</span><span class="p">]</span> <span class="o">*</span> <span class="n">s</span><span class="p">[:</span><span class="n">digit</span><span class="p">]</span> <span class="o">@</span> <span class="n">vh</span><span class="p">[:</span><span class="n">digit</span><span class="p">,</span> <span class="p">:]</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">new_matrix</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">new_matrix</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">y1</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">[:,</span> <span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">y2</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">:]</span>
|
||||
|
||||
<span class="c1"># Moore–Penrose pseudoinverse</span>
|
||||
<span class="n">pinv_y1</span> <span class="o">=</span> <span class="n">pinv</span><span class="p">(</span><span class="n">y1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">e</span> <span class="o">=</span> <span class="n">eig</span><span class="p">((</span><span class="n">pinv_y1</span> <span class="o">@</span> <span class="n">y2</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">energy_levels</span> <span class="o">=</span> <span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">energy_levels</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">abs</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
||||
</details>
|
||||
|
||||
<div class="docstring"><p>Older impleentation of the matrix pencil method with pencil p on given data to
|
||||
extract energy levels.</p>
|
||||
|
||||
<h6 id="parameters">Parameters</h6>
|
||||
|
||||
<ul>
|
||||
<li><strong>data -- lists of Obs, where the nth entry is considered to be the correlation function</strong>: at x0=n+offset.</li>
|
||||
<li><strong>p -- matrix pencil parameter which corresponds to the number of energy levels to extract.</strong>: higher values for p can help decreasing noise.</li>
|
||||
<li><strong>noise_level -- If this argument is not None an additional prefiltering via singular</strong>: value decomposition is performed in which all singular values below 10^(-noise_level)
|
||||
times the largest singular value are discarded. This increases the computation time.</li>
|
||||
<li><strong>verbose -- if larger than zero details about the noise filtering are printed to stdout</strong>: (default 1)</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
</main>
|
||||
<script>
|
||||
|
|
|
@ -327,10 +327,7 @@
|
|||
|
||||
<details>
|
||||
<summary>View Source</summary>
|
||||
<div class="codehilite"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||||
<span class="c1"># coding: utf-8</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<span class="kn">import</span> <span class="nn">pickle</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">autograd.numpy</span> <span class="k">as</span> <span class="nn">anp</span> <span class="c1"># Thinly-wrapped numpy</span>
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue