A Python module for symbolic calculations
Project description
Python Symbolic Expression 3
A Python module for symbolic calculations
Usage
Optimize expression
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '(x+1) * (x+2)' )
>>> objExpress.optimizeExtended()
>>> print( objExpress )
x^2 + x * 3 + 2
Supported operators
+ - * / ( ) ^ ^^
^ gives root values by fractions
^^ gives principal root values by fractions
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '(4)^(1/2)' )
>>> objExpress.optimizeExtended()
>>> print( objExpress )
[ (-2) | 2 ]
>>> objExpress = symexpress3.SymFormulaParser( '(4)^^(1/2)' )
>>> objExpress.optimizeExtended()
>>> print( objExpress )
2
Numeric values
Only integers are supported. For fractions use /
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '7/10 + 3/11' )
>>> objExpress.optimizeExtended()
>>> print( objExpress )
(107/110)
Get the real value
If there is more the one value, it gives an array back
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '7/10 + 3/11' )
>>> objExpress.optimizeExtended()
>>> print( objExpress.getValue() )
0.9727272727272728
>>> objExpress = symexpress3.SymFormulaParser( '(4)^(1/2)' )
>>> objExpress.optimizeExtended()
>>> print( objExpress.getValue() )
[-2, 2]
Get all defined functions
Get a dictionary of all the defined functions. Key is the functions syntax, value is the description
>>> import symexpress3
>>> print( symexpress3.GetAllFunctions() )
Get all defined optimize actions
Get a dictionary of all the optimize actions. Key is the optimize action, value is the description
>>> import symexpress3
>>> print( symexpress3.GetAllOptimizeActions() )
Get all fixed variables
Get a dictionary of all the fixed variables. Key is the variable name, value is the description
>>> import symexpress3
>>> print( symexpress3.GetFixedVariables() )
Predefined optimization methods
The optimizeNormal method use the multiply, onlyOneRoot, i, power and add optimize actions The power action do not optimize roots. onlyOneRoot get radicals in it lowest form.
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '5 * 2^2 + i * i + (4)^(1/2)' )
>>> objExpress.optimizeNormal()
>>> print( objExpress )
19 + 4^(1/2)
The optimizeExtended method use the optimizeNormal method and the following optimize actions: rootToPrincipalRoot, powerArrays,arrayPower, functionToValues, negRootToI, functionToValues, unnestingRadicals, functionToValues, radicalDenominatorToCounter, rootIToSinCos, functionToValues, rootOfImagNumToCosISin, functionToValues, nestedRadicals, imaginairDenominator, sinTwoCosTwo, cosXplusYtoSinCos, sinXplusYtoSinCos, splitDenominator and expandArrays
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '5 * 2^2 + i * i + (4)^(1/2)' )
>>> objExpress.optimizeExtended()
>>> print( objExpress )
19 + [ (-2) | 2 ]
>>> print( objExpress.getValue() )
[17, 21]
Optimize expression
Use the optimize method for optimization
Remove unnecessary () and optimize the internal structure
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '((2) + (3))' )
>>> objExpress.optimize( None )
>>> print( objExpress )
2 + 3
Use of the optimize actions. Use after SymFormulaParser and each optimize() an optimize( None ) Most of the time use optimizeNormal() instead of optimize( None )
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( 'cos( pi/4 )' )
>>> objExpress.optimize( None )
>>> objExpress.optimize( 'functionToValues' )
>>> objExpress.optimize( None )
>>> print( objExpress )
2^^(1/2) * (1/2)
Output formats
MathMl output
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( 'cos( pi/4 )' )
>>> objExpress.optimize( None )
>>> print( objExpress.mathMl() )
Html output with expression in MathMl and string format. It create the symexpress3_demo.html file in the current directory.
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( 'cos( pi/4 )' )
>>> objExpress.optimize( None )
>>> objOutput = symexpress3.SymToHtml( "symexpress3_demo.html", "SymExpress 3 demo" )
>>> objOutput.writeSymExpress( objExpress )
>>> objOutput.writeLine( str( objExpress ))
>>> objOutput.closeFile()
Calculate value with variables
Define a dictionary for the variables. The key is the variable name and de value is a number.
>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '(x+1) (y+2)' )
>>> dictVar = {}
>>> dictVar[ 'x' ] = 0.33333
>>> dictVar[ 'y' ] = 3
>>> valueExpression = objExpress.getValue( dictVar )
>>> print( valueExpression )
6.66665
Command line
python -m symexpress3
- Help: python -m symexpress3 -h
- Direct optimize: python -m symexpress3 "cos( pi / 4 )^^(1/3)"
Notes
- By big numbers set mpmatch precision accordingly (mpmath.mp.dps)
- Graphical user interface: https://github.com/SWVandenEnden/websym3
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 symexpress3-0.0.15.tar.gz.
File metadata
- Download URL: symexpress3-0.0.15.tar.gz
- Upload date:
- Size: 127.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4d09825c72fb076a11ee8241563d48926d139aa12f5ddeee63faa1fd89857be
|
|
| MD5 |
17c7cf3278272e0c28e6cfaafae47f4a
|
|
| BLAKE2b-256 |
e5621b666fa5729283a2cc92a6ad3251dfebb6f07c860dc0269cba672abb1e1d
|
File details
Details for the file symexpress3-0.0.15-py3-none-any.whl.
File metadata
- Download URL: symexpress3-0.0.15-py3-none-any.whl
- Upload date:
- Size: 214.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dee038735cfad99ab6f9e70a70409c696e18f642cda330c3cf3b6e1f7d7592db
|
|
| MD5 |
fb55633742bc50e8a278a741453f538c
|
|
| BLAKE2b-256 |
c34624836652c89f85a2934633aa02d1a2ad115ac387b6a5f84e44faff2202e2
|