Am now updating the rendering algorithm. Equations will now be drawn using the QPainter instead of using QGraphicsItems. This should improve rendering speed, make the equation object light weight and less memory intensive.
I started a new job 3 weeks ago so development of Miramath has slowed down. I have some new ideas though so when I get some free time....
2D plots can now have left and right y-axes.
See https://sourceforge.net/apps/gallery/miramath/index.php?g2_itemId=77&g2_imageViewsIndex=1 for and example.
This version includes the new polar plots. It requires the modified version of PyQwt on this site which has the additional Python wrapped C++ QwtPolar library.
Polar plots have been added to trunk. The modified version of PyQwt available here: https://sourceforge.net/projects/miramath/files/ is required for polar plots to work.
See here for screenshot: https://sourceforge.net/apps/gallery/miramath/
A modified version of PyQwt-5.2.0 has been added in the PyQwt-Polar directory under the files menu ( https://sourceforge.net/projects/miramath/files/ ). This modified version includes the sources for the QwtPolar (http://qwtpolar.sourceforge.net/) extension to Qwt ( http://pyqwt.sourceforge.net/ ). To build this version of PyQwt follow the same instructions on the PyQwt home page. Once installed importing PyQt4.Qwt5 will provide the QwtPolarPlot widget in addition to the rest of PyQwt.... read more
A slider widget is now available for use. The value of the slider can be assigned to a variable. Moving the slider causes the entire page to be re-computed. See the album for screenshots.
If you have problems building the Qwt3d Python extension then see here for an easy fix: https://bugs.launchpad.net/ubuntu/+source/pyqwt3d/+bug/478230
See https://sourceforge.net/apps/gallery/miramath/
for additional screenshots.
Plots exes limits have been added. Now the min/max values of the axes scales can be manually set. If empty auto scaling is used.
A plot configuration dialog has been added. Now the properties of 2D curves such as aliasing, line color, markers, etc can be configured, as well has grid line colors, thicknesses etc. Also more than one curve can be displayed on a single plot.
New code added to trunk. Now equations are executed in a separate thread. Communications between the main thread and execution thread are handled via Q's. Each time an equation has been evaluated a Qt signal is sent to the main thread indicating that there are new results sitting in the results Q; these results are then displayed by the main thread.
The result of all this re-work is that the GUI remains responsive during long calculations.
The standard floor and ceil operators work now. The linear convolution operator, *, between two 1D arrays also works for arrays containing numerical as well as symbolic quantities.
The code to handle implicit loops around expressions that assign to a variable with indices has been greatly improved. Now expressions such as x[i,j+1]=4*y[i,j]**2 will work without having to create array x first. The parser will automagically generate the code required to initialize array x before doing the assignment.
Also array slicing works now. e.g. x[0:10:10]=y[2:12:2] works, with x being created and filled with zeros before the assignment.
See the new screenshot.
To use the source code you will need to install the following Python extensions:
PyQt (www.riverbankcomputing.co.uk)
PyQwt and PyQwt3D (http://pyqwt.sourceforge.net/)
Ply (www.dabeaz.com/ply/)
SymPy (code.google.com/p/sympy/)
SciPy (www.scipy.org)
To run type: python main.py
I created a self extracting binary using Pyinstaller. It is a bit big; I suspect Pyinstaller pulled in more than needed to create the executable blob. To use download the miramath_bin.tar.bz2 file into some directory. Untar this file: tar -xvjf filename. To run the self extracting bin file type in the same directory ./miramath
When I get my hands on a windows box I'll try creating a binary for windows.
I created a self extracting binary using Pyinstaller. It is a bit big; I suspect Pyinstaller pulled in more than needed to create the executable blob. To use download the miramath_bin.tar.bz2 file into some directory. Untar this file: tar -xvjf filename. To run the self extracting bin file type in the same directory ./miramath
When I get my hands on a windows box I'll try creating a binary for windows.
This is a little idea I have been working on for a number of years. It is inspired by the excellent closed source MathCad application.
The goal is to create a mathematical application that is useful for scientists and engineers.
The application has been written using Python, along with the SciPy, PyQt, SymPy, PyQwt, PyQwt3D and Ply extension packages. Currently speed is not an issue since all number crunching is handled by optimized Fortran and C routines wrapped by SciPy. The symbolic extension Sympy is currently written in pure Python, however future versions will make use of Cython for a significant speed improvement.... read more