Skip to main content

Autoregularized solver plus constraints for ill-conditioned linear systems of any shape.

Project description

ARLS: Automatically Regularized Linear System Solver (Revised)


ARLS is intended for use in solving linear systems, Ax=b, which other solvers
may not be able to handle. Ill-conditioning is the usual reason for people to seek
alternative solvers such as this. ARLS also has a rich set of constraints.

All these solvers apply to any shape of the matrix, A. That is, the
system can have more rows than columns (over-determined), or the same number
of rows and columns (square), or fewer rows than columns (under-determined).
And the matix A can be full rank, or have near zero singular values,
or exactly zero singular values of any number.

Please see the in-code comments for details of calls and returns,
including example applications for each routine.

Also please see the code itself for version history.

USAGE

Our primary solver is:
x = arls(A, b)

If you need to solve many systems with the same matrix, A, but different b vectors, use:
x = arlsusv(b, U, S, Vt)
where U, S, and Vt are the singular value decomposition of A, from:
U, S, Vt = np.linalg.svd(A, full_matrices=False)

If you need to add constraint equations which must be satisfied exactly
(such as "the sum of the solution elements must be 100.0")
then put those equation in a separate system, Ex == f and call:
x = arlseq(A, b, E, f)

If you need to add inequality constraints, such as "x1 + x2 >= 1.0" then
put those equations in a separate system, Gx >= h and call:
x = arlsgt(A, b, G, h)
For "<=" constraints you need to multiply both sides by -1.0 to convert
the constraint to a ">=" constraint.

If you need both equality and inequality constraints, use
x =arlsall(A, b, E, f, G, h)

While you can require many different types of constraints using the above,
we offer three special cases routines which are more efficient and robust
and precise than using general constraints above:

If you know the solution should be non-negative, use:
x = arlsnn(A, b)
If you know the solution should be non-decreasing ("rising") then use:
x = arlsrise(A, b)
If you know the solution should be non-increasing ("falling") then use:
x = arlsfall(A, b)





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

arls-2.1.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

arls-2.1.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file arls-2.1.0.tar.gz.

File metadata

  • Download URL: arls-2.1.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for arls-2.1.0.tar.gz
Algorithm Hash digest
SHA256 b489f05d627516675e386851c0109e74ffb44a136d4267cf1cdfece61f76c12d
MD5 cf2e922d652ca15e943f61bd6b76ce95
BLAKE2b-256 336e6e9f2c9ca88118ab820673ff3e3792267bdcbc6911d54d0b65aaf2db8874

See more details on using hashes here.

File details

Details for the file arls-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: arls-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for arls-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b374d56f98714db881e28e7433c4b0c09d8c862cc81ca4882670d350b09cfb61
MD5 851e381fe41474b5e040902d3b3e1f22
BLAKE2b-256 71ba51327f25308d5061c6ffbdf71f575b906d3dc5aea7676dfcdbdcb11d17c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page