freealg 0.1.14__tar.gz → 0.1.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {freealg-0.1.14 → freealg-0.1.15}/PKG-INFO +1 -1
  2. {freealg-0.1.14 → freealg-0.1.15}/freealg/__init__.py +2 -2
  3. freealg-0.1.15/freealg/__version__.py +1 -0
  4. {freealg-0.1.14 → freealg-0.1.15}/freealg/_chebyshev.py +0 -8
  5. {freealg-0.1.14 → freealg-0.1.15}/freealg/_decompress.py +1 -1
  6. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/_kesten_mckay.py +1 -1
  7. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/_marchenko_pastur.py +1 -1
  8. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/_meixner.py +1 -1
  9. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/_wachter.py +1 -1
  10. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/_wigner.py +1 -1
  11. {freealg-0.1.14 → freealg-0.1.15}/freealg/eigfree.py +52 -2
  12. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/PKG-INFO +1 -1
  13. freealg-0.1.14/freealg/__version__.py +0 -1
  14. {freealg-0.1.14 → freealg-0.1.15}/AUTHORS.txt +0 -0
  15. {freealg-0.1.14 → freealg-0.1.15}/CHANGELOG.rst +0 -0
  16. {freealg-0.1.14 → freealg-0.1.15}/LICENSE.txt +0 -0
  17. {freealg-0.1.14 → freealg-0.1.15}/MANIFEST.in +0 -0
  18. {freealg-0.1.14 → freealg-0.1.15}/README.rst +0 -0
  19. {freealg-0.1.14 → freealg-0.1.15}/freealg/_damp.py +0 -0
  20. {freealg-0.1.14 → freealg-0.1.15}/freealg/_jacobi.py +0 -0
  21. {freealg-0.1.14 → freealg-0.1.15}/freealg/_pade.py +0 -0
  22. {freealg-0.1.14 → freealg-0.1.15}/freealg/_plot_util.py +0 -0
  23. {freealg-0.1.14 → freealg-0.1.15}/freealg/_sample.py +0 -0
  24. {freealg-0.1.14 → freealg-0.1.15}/freealg/_support.py +0 -0
  25. {freealg-0.1.14 → freealg-0.1.15}/freealg/_util.py +0 -0
  26. {freealg-0.1.14 → freealg-0.1.15}/freealg/distributions/__init__.py +0 -0
  27. {freealg-0.1.14 → freealg-0.1.15}/freealg/freeform.py +0 -0
  28. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/SOURCES.txt +0 -0
  29. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/dependency_links.txt +0 -0
  30. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/not-zip-safe +0 -0
  31. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/requires.txt +0 -0
  32. {freealg-0.1.14 → freealg-0.1.15}/freealg.egg-info/top_level.txt +0 -0
  33. {freealg-0.1.14 → freealg-0.1.15}/pyproject.toml +0 -0
  34. {freealg-0.1.14 → freealg-0.1.15}/requirements.txt +0 -0
  35. {freealg-0.1.14 → freealg-0.1.15}/setup.cfg +0 -0
  36. {freealg-0.1.14 → freealg-0.1.15}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: freealg
3
- Version: 0.1.14
3
+ Version: 0.1.15
4
4
  Summary: Free probability for large matrices
5
5
  Keywords: leaderboard bot chat
6
6
  Platform: Linux
@@ -7,9 +7,9 @@
7
7
  # directory of this source tree.
8
8
 
9
9
  from .freeform import FreeForm
10
- from .eigfree import eigfree
10
+ from .eigfree import eigfree, condfree
11
11
  from . import distributions
12
12
 
13
- __all__ = ['FreeForm', 'distributions', 'eigfree']
13
+ __all__ = ['FreeForm', 'distributions', 'eigfree', 'condfree']
14
14
 
15
15
  from .__version__ import __version__ # noqa: F401 E402
@@ -0,0 +1 @@
1
+ __version__ = "0.1.15"
@@ -224,14 +224,6 @@ def chebyshev_stieltjes(z, psi, support):
224
224
  psi_zero = numpy.concatenate([[0], psi])
225
225
  S = wynn_pade(psi_zero, J)
226
226
 
227
- # build powers J^(k+1) for k=0..K
228
- # K = len(psi) - 1
229
- # shape: (..., K+1)
230
- # Jpow = J[..., None] ** numpy.arange(1, K+2)
231
-
232
- # sum psi_k * J^(k+1)
233
- # S = numpy.sum(psi * Jpow, axis=-1)
234
-
235
227
  # assemble m(z)
236
228
  m_z = -2 / span * numpy.pi * S
237
229
 
@@ -21,7 +21,7 @@ __all__ = ['decompress', 'reverse_characteristics']
21
21
 
22
22
 
23
23
  def secant_complex(f, z0, z1, a=0+0j, tol=1e-12, max_iter=100,
24
- alpha=0.5, max_bt=2, eps=1e-30, step_factor=5.0,
24
+ alpha=0.5, max_bt=1, eps=1e-30, step_factor=5.0,
25
25
  post_smooth=True, jump_tol=10.0, verbose=False):
26
26
  """
27
27
  Solves :math:``f(z) = a`` for many starting points simultaneously
@@ -178,7 +178,7 @@ class KestenMcKay(object):
178
178
 
179
179
  if plot:
180
180
  if eig is not None:
181
- label = 'Estimate'
181
+ label = 'Theoretical'
182
182
  else:
183
183
  label = ''
184
184
  plot_density(x, rho, label=label, latex=latex, save=save, eig=eig)
@@ -176,7 +176,7 @@ class MarchenkoPastur(object):
176
176
 
177
177
  if plot:
178
178
  if eig is not None:
179
- label = 'Estimate'
179
+ label = 'Theoretical'
180
180
  else:
181
181
  label = ''
182
182
  plot_density(x, rho, label=label, latex=latex, save=save, eig=eig)
@@ -193,7 +193,7 @@ class Meixner(object):
193
193
 
194
194
  if plot:
195
195
  if eig is not None:
196
- label = 'Estimate'
196
+ label = 'Theoretical'
197
197
  else:
198
198
  label = ''
199
199
  plot_density(x, rho, label=label, latex=latex, save=save, eig=eig)
@@ -184,7 +184,7 @@ class Wachter(object):
184
184
 
185
185
  if plot:
186
186
  if eig is not None:
187
- label = 'Estimate'
187
+ label = 'Theoretical'
188
188
  else:
189
189
  label = ''
190
190
  plot_density(x, rho, label=label, latex=latex, save=save, eig=eig)
@@ -164,7 +164,7 @@ class Wigner(object):
164
164
 
165
165
  if plot:
166
166
  if eig is not None:
167
- label = 'Estimate'
167
+ label = 'Theoretical'
168
168
  else:
169
169
  label = ''
170
170
  plot_density(x, rho, label=label, latex=latex, save=save, eig=eig)
@@ -15,7 +15,7 @@ import numpy
15
15
  from ._util import compute_eig
16
16
  from .freeform import FreeForm
17
17
 
18
- __all__ = ['eigfree']
18
+ __all__ = ['eigfree', 'condfree']
19
19
 
20
20
 
21
21
  # ========
@@ -69,7 +69,11 @@ def eigfree(A, N=None, psd=None, plots=False):
69
69
 
70
70
  .. code-block:: python
71
71
 
72
- >>> from freealg import FreeForm
72
+ >>> from freealg import condfree
73
+ >>> from freealg.distributions import MarchenkoPastur
74
+ >>> mp = MarchenkoPastur(1/50)
75
+ >>> A = mp.matrix(3000)
76
+ >>> eigs = eigfree(A)
73
77
  """
74
78
 
75
79
  if A.ndim != 2 or A.shape[0] != A.shape[1]:
@@ -118,3 +122,49 @@ def eigfree(A, N=None, psd=None, plots=False):
118
122
  eigs.sort()
119
123
 
120
124
  return eigs
125
+
126
+
127
+ # ========
128
+ # cond free
129
+ # ========
130
+
131
+ def condfree(A, N=None):
132
+ """
133
+ Estimate the condition number of a positive-definite matrix.
134
+
135
+ This function estimates the condition number of the matrix
136
+ :math:`\\mathbf{A}` or a larger matrix containing :math:`\\mathbf{A}`
137
+ using free decompression.
138
+
139
+ Parameters
140
+ ----------
141
+
142
+ A : numpy.ndarray
143
+ The symmetric real-valued matrix :math:`\\mathbf{A}` whose condition
144
+ number (or that of a matrix containing :math:`\\mathbf{A}`) are to be
145
+ computed.
146
+
147
+ N : int, default=None
148
+ The size of the matrix containing :math:`\\mathbf{A}` to estimate
149
+ eigenvalues of. If None, returns estimates of the eigenvalues of
150
+ :math:`\\mathbf{A}` itself.
151
+
152
+ Notes
153
+ -----
154
+
155
+ This is a convenience function using the eigfree procedure.
156
+
157
+ Examples
158
+ --------
159
+
160
+ .. code-block:: python
161
+
162
+ >>> from freealg import condfree
163
+ >>> from freealg.distributions import MarchenkoPastur
164
+ >>> mp = MarchenkoPastur(1/50)
165
+ >>> A = mp.matrix(3000)
166
+ >>> condfree(A)
167
+ """
168
+
169
+ eigs = eigfree(A, N)
170
+ return eigs.max() / eigs.min()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: freealg
3
- Version: 0.1.14
3
+ Version: 0.1.15
4
4
  Summary: Free probability for large matrices
5
5
  Keywords: leaderboard bot chat
6
6
  Platform: Linux
@@ -1 +0,0 @@
1
- __version__ = "0.1.14"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes