Package for numerically solving symbolically defined systems of non-linear equations.
Project description
pyneqsys provides a convenience class for representing and solving non-linear equation systems from symbolic expressions (provided e.g. with the help of SymPy).
The numerical root finding is perfomed using either:
scipy: scipy.optimize.root
nleq2: pynleq2.solve (unsettled API)
kinsol: pykinsol.solve
Documentation
Autogenerated API documentation is found here.
Installation
Simplest way to install pyneqsys and its dependencies is through the conda package manager:
$ conda install -c bjodah pyneqsys pytest $ python -m pytest --pyargs pyneqsys
Source distribution is available here: https://pypi.python.org/pypi/pyneqsys
Example
Example reformulated from SciPy documentation:
>>> from pyneqsys.symbolic import SymbolicSys
>>> neqsys = SymbolicSys.from_callback(
... lambda x: [(x[0] - x[1])**3/2 + x[0] - 1,
... (x[1] - x[0])**3/2 + x[1]], 2)
>>> x, info = neqsys.solve([1, 0])
>>> assert info['success']
>>> print(x)
[ 0.8411639 0.1588361]
here we did not need to enter the jacobian manually, SymPy did that for us. For expressions containing transcendental functions we need to provide a “backend” keyword arguemnt to enable symbolic derivation of the jacobian:
>>> import math
>>> def powell(x, params, backend=math):
... A, exp = params[0], backend.exp
... return A*x[0]*x[1] - 1, exp(-x[0]) + exp(-x[1]) - (1 + A**-1)
>>> powell_sys = SymbolicSys.from_callback(powell, 2, 1)
>>> x, info = powell_sys.solve([1, 1], [1000.0])
>>> assert info['success']
>>> print(', '.join(['%.6e' % _ for _ in sorted(x)]))
1.477106e-04, 6.769996e+00
For more examples look see examples/, and rendered jupyter notebooks here: http://hera.physchem.kth.se/~pyneqsys/branches/master/examples
License
The source code is Open Source and is released under the simplified 2-clause BSD license. See LICENSE for further details. Contributors are welcome to suggest improvements at https://github.com/bjodah/pyneqsys
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.