SciPy fixes and extensions
Project description
scipyx
SciPy is large library used everywhere in scientific computing. That's why breaking backwards-compatibility comes as a significant cost and is almost always avoided, even if the API of some methods is arguably lacking. This package provides drop-in wrappers "fixing" those.
If you have a fix for a SciPy method that can't go upstream for some reason, feel free to PR here.
Krylov methods
import numpy as np
import scipy.sparse
import scipyx as spx
# create tridiagonal (-1, 2, -1) matrix
n = 100
data = -np.ones((3, n))
data[1] = 2.0
A = scipy.sparse.spdiags(data, [-1, 0, 1], n, n)
A = A.tocsr()
b = np.ones(n)
sol, info = spx.cg(A, b, tol=1.0e-10)
sol, info = spx.minres(A, b, tol=1.0e-10)
sol, info = spx.gmres(A, b, tol=1.0e-10)
sol, info = spx.bicg(A, b, tol=1.0e-10)
sol, info = spx.bicgstab(A, b, tol=1.0e-10)
sol, info = spx.cgs(A, b, tol=1.0e-10)
sol, info = spx.qmr(A, b, tol=1.0e-10)
sol
is the solution of the linear system A @ x = b
(or None
if no convergence),
and info
contains some useful data, e.g., info.resnorms
. The methods are wrappers
around SciPy's iterative
solvers.
Relevant issues:
Optimization
import scipyx as spx
def f(x):
return (x ** 2 - 2) ** 2
x0 = 1.5
out = spx.minimize(f, x0)
print(out.x)
x0 = -3.2
x, _ = spx.leastsq(f, x0)
print(x)
In scipyx, all intermediate values x
and the result from a minimization out.x
will
have the same shape as x0
. (In SciPy, they always have shape (n,)
, no matter the
input vector.)
Relevant issues:
Root-finding
import scipyx as spx
def f(x):
return x ** 2 - 2
a, b = spx.bisect(f, 0.0, 5.0, tol=1.0e-12)
a, b = spx.regula_falsi(f, 0.0, 5.0, tol=1.0e-12)
scipyx provides some basic nonlinear root-findings algorithms: bisection and regula falsi. They're not as fast-converging as other methods, but are very robust and work with almost any function.
License
This software is published under the BSD-3-Clause license.
Project details
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
File details
Details for the file scipyx-0.0.13.tar.gz
.
File metadata
- Download URL: scipyx-0.0.13.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 304ae93f384ed2be4ae67d03e9f5ef657e2d8838b796226ddf1bbd66d72488d6 |
|
MD5 | 781960933504d2351a7619a63d18448b |
|
BLAKE2b-256 | ef362e75126e1c9ea9aaa11f0215e156ae2b1893e2c7c308f54f6b708b931f8c |
File details
Details for the file scipyx-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: scipyx-0.0.13-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f638825e8db43f28095ca6bbeb27f6ba1137b31445639851c4236a203a9d8c6c |
|
MD5 | 7500bf88e7db3a8fbd174b39e2289ec2 |
|
BLAKE2b-256 | f6da4380a944c6596c28c10c0cbd278de21e3d6ebbabdc39de5c617ad1eefb6a |