Skip to main content

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.optimizeSpecial()
>>> 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.optimizeSpecial()
>>> print( objExpress )
[ (-2) | 2 ]
>>> objExpress = symexpress3.SymFormulaParser( '(4)^^(1/2)' )
>>> objExpress.optimizeSpecial()
>>> print( objExpress )
2

Nummeric values

Only integers are supported. For fractions use /

>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '7/10 + 3/11' )
>>> objExpress.optimizeSpecial()
>>> 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.optimizeSpecial()
>>> print( objExpress.getValue() )
0.9727272727272728
>>> objExpress = symexpress3.SymFormulaParser( '(4)^(1/2)' )
>>> objExpress.optimizeSpecial()
>>> 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, i, power and add optimize actions
The power action do not optimize roots

>>> import symexpress3
>>> objExpress = symexpress3.SymFormulaParser( '5 * 2^2 + i * i + (4)^(1/2)' )
>>> objExpress.optimizeNormal()
>>> print( objExpress )
19 + 4^(1/2)

The optimizeSpecial 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.optimizeSpecial()
>>> 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

Commandline

python -m symexpress3

  • Help: python -m symexpress3 -h
  • Direct optimize: python -m symexpress3 "cos( pi / 4 )^^(1/3)"

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

symexpress3-0.0.8.tar.gz (111.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

symexpress3-0.0.8-py3-none-any.whl (171.9 kB view details)

Uploaded Python 3

File details

Details for the file symexpress3-0.0.8.tar.gz.

File metadata

  • Download URL: symexpress3-0.0.8.tar.gz
  • Upload date:
  • Size: 111.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.1

File hashes

Hashes for symexpress3-0.0.8.tar.gz
Algorithm Hash digest
SHA256 5382b61f8e29852911b2bb2956967729ffa62d7e2d370af353fabdf23558c462
MD5 6a4ea0c2ae43ddfa64befc2e44eaa1bc
BLAKE2b-256 6765fe6fd0364a4c690473b9196ce99f104dc6aff3fca3c03dc42eefd7af4e0c

See more details on using hashes here.

File details

Details for the file symexpress3-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: symexpress3-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 171.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.1

File hashes

Hashes for symexpress3-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 08482b683ebabf2a99a2c206615ad5e1a6a2589bf9220fcc4bf28401e1624dd9
MD5 1d3b407a40316d1974d78586a62cdd17
BLAKE2b-256 eb7a88cd53cfbcbd3351cfe64650f3b13e3ae4340dc331e5bd161355301a0b74

See more details on using hashes here.

Supported by

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