Equations that can be algebraicly manipulated.
Project description
Algebraic Equations with SymPy
Introduction | Output Formatting | Installation | Try Live | Issues or Comments | Change Log | License | GIT Repository | PyPi Link
Website/Documentation (including API)
Introduction
This tool defines relations that all high school and college students would recognize as mathematical equations. They consist of a left hand side (lhs) and a right hand side (rhs) connected by the relation operator "=".
This tool applies operations to both sides of the equation simultaneously, just
as students are taught to do when
attempting to isolate (solve for) a variable. Thus the statement Equation/b
yields a new equation Equation.lhs/b = Equation.rhs/b
The intent is to allow using the mathematical tools in SymPy to rearrange equations and perform algebra in a stepwise fashion using as close to standard mathematical notation as possible. In this way more people can successfully perform algebraic rearrangements without stumbling over missed details such as a negative sign.
A simple example as it would appear in a Jupyter notebook is shown immediately below:
Once the algebra is complete it is possible to substitute numbers with units into the solved equation to calculate a numerical solution with proper units.
In IPython environments (IPython and Jupyter) there is also a shorthand
syntax for entering equations provided through the IPython preparser. An
equation can be specified as eq1 =@ a/b = c/d
. If no Python name is
specified for the equation (eq1
left out in the previous example), the
equation will still
be defined, but will not be easily accessible for further computation. The
=@
symbol combination was chosen to avoid conflicts with reserved python
symbols while minimizing impacts on syntax highlighting and autoformatting. A
screenshot of an example in Jupyter is shown immediately below:
More examples of the capabilities of Algebra with Sympy are here.
Many math packages such as SageMath and Maxima have similar capabilities, but require more knowledge of command syntax, plus they cannot easily be installed in a generic python environment.
Controlling the Format of Interactive Outputs
-
In graphical environments (Jupyter) you will get rendered Latex such as $\frac{a}{b} = \frac{c}{d}$. To also see the code representation (what can be copied and pasted for additional computation) set
algwsym_config.output.show_code = True
. This will print the code version (e.g.Equation(a,b/c)
) of the equation as well. This code version can be accessed directly by callingrepr()
on the equation. -
In interactive text environments (ipython and command line) the representation (code version) is returned by default. Calling
print()
orstr()
on an equation will return the human readable version with an equals sign. To have the human readable version returned by default setalgwsym_config.output.human_text = True
. If combined withalgwsym_config.output.show_code = True
, both code and human readable versions will be shown. -
The equation label can be turned off by setting
algwsym_config.output.label = False
.
Setup/Installation
- Use pip to install in your python environment:
pip install -U Algebra-with-SymPy
- To use in a running python session issue
the following command :
from algebra_with_sympy import *
. This will also import the SymPy tools. - If you want to isolate this tool from the global namespace you are
working with change the import statement
to
import algebra_with_sympy as spa
, wherespa
stands for "SymPy Algebra". Then all calls would be made tospa.funcname()
.
Try in binder
Issues or Comments
- Issues and bug reports should be filed on github.
- Comments, questions, show and tell, etc. should go in the project discussions.
Change Log
- 0.9.3
- Added check for new enough version of IPython to use the preparser.
- If IPython version too old, issue warning and do not accept
=@
shorthand.
- 0.9.2
=@
shorthand syntax for defining equations in IPython compatible environments.- Fixed bug where
root()
override calledsqrt()
on bare expressions.
- 0.9.1
- Equations labeled with their python name, if they have one.
- Added flags to adjust human readable output and equation labeling.
- Accept equation as function argument in any position.
- First pass at
solve()
accepting equations. - Added override of
root()
to avoid warning messages. - More unit tests.
- First pass at documentation.
- 0.9.0 functionality equivalent to extension of SymPy in PR#21333.
This software is distributed under the GNU V3 license
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Copyright - Jonathan Gutow 2021, 2022
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
Hashes for Algebra_with_SymPy-0.9.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdf769cf4bd4c95b879ff36dfe6d269f098266ea34725d10d4e706e2a322063b |
|
MD5 | 4e7c9a80d94c50990113f2e0419d38c9 |
|
BLAKE2b-256 | 65bf670099a460a4f454b67daedb05b784ff565013dd647eab963368fe7230e4 |