Pure-Python toolkit for Tikhonov regularization of linear inverse problems, with GSVD-based diagnostics and parameter selection.
Project description
PyTikhonov
PyTikhonov is a pure-Python toolkit for Tikhonov regularization of linear inverse problems, with a focus on regularization parameter selection and GSVD-based diagnostics.
It is primarily intended for small to moderate-scale problems (e.g., $N$ up to a few thousand) where matrix-like access to $A$ and $L$ is available. For larger problems, it provides a ProjectedTikhonovFamily interface designed to be combined with iterative methods (e.g., Krylov / model reduction bases).
Installation
pip install pytikhonov
Features
-
Core object:
TikhonovFamily(A, L, b, d, ...)representing the entire family $$x_\lambda = \arg\min_x |Ax - b|_2^2 + \lambda |Lx - d|_2^2$$ for $\lambda > 0$. -
GSVD-based implementation (via
easygsvd):- Fast evaluation of $x_\lambda$ for many $\lambda$.
- Efficient computation of $|Ax - b|_2^2$, $|Lx - d|_2^2$, and their derivatives.
- Support for both $\lambda$ and reciprocal parameterization $\beta = 1/\lambda$.
-
Diagnostic tools:
- Picard plot (discrete Picard condition).
- L-curve (and curvature-based “L-corner”).
- Monitoring function and degrees of freedom.
-
Regularization parameter selection:
- L-corner heuristic.
- Discrepancy principle (DP).
- Generalized cross validation (GCV).
- Convenience function to compare all methods on a given problem.
- Randomization experiments to study robustness of parameter choices.
-
Performing projections:
ProjectedTikhonovFamilyfor reduced problems on subspaces $\underline{x} + \mathrm{col}(V)$.- Designed to plug into Krylov / model-reduction pipelines (e.g., GKB, Arnoldi) for large-scale problems.
Minimal example
import numpy as np
from pytikhonov import TikhonovFamily, lcorner
# Example problem (A, L, b, d as dense arrays)
A = ...
L = ...
b = ...
d = np.zeros(L.shape[0])
# Build the Tikhonov family
tf = TikhonovFamily(A, L, b, d)
# Select lambda via the L-corner heuristic
lcorner_data = lcorner(tf)
lambdah_star = lcorner_data["lambdah"]
x_star = lcorner_data["x_lambdah"]
For full details, mathematical background, and additional examples (Picard plots, monitoring function, IRLS, projected problems, etc.), see the documentation PDF included in the repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytikhonov-0.0.1.tar.gz.
File metadata
- Download URL: pytikhonov-0.0.1.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aff4851a4388eb4c556b3f0e3f1399039b0b680f273ec439f33991b05cb9ff97
|
|
| MD5 |
ff007993115a9c68675d761d01d3020c
|
|
| BLAKE2b-256 |
db1a4357d817a49f813b7efcd2477379fb99c07193c2840632fdd04ddb8c1c5d
|
File details
Details for the file pytikhonov-0.0.1-py3-none-any.whl.
File metadata
- Download URL: pytikhonov-0.0.1-py3-none-any.whl
- Upload date:
- Size: 33.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84786dc6d914349cc58c6e7430b012b7e3f700f63b74a3dc533d4b69b9da240f
|
|
| MD5 |
5f4494466a18292ff2bc3b43df97d242
|
|
| BLAKE2b-256 |
0570dcc24ccec252bf8411ac0b09ec0b0fc47a37298eabdf701fdc12a659ae24
|