Being able to calculate something is not very interesting,
but being able to visualize it makes the calcuations mean
something. The primary goal of these programs where to
make sens of the different numerical methods and be able to
play with differnt types of input data. Also I had some
spare time on my hands.
The function of the users choice
(or from a set of presets) will be approximated using
Chebchev Approximation. The user can chose the start
and end range of the function, as wel as the number
of points(in that range) that will be used to plot
the function. The range of Chebychev series can also
Shows differenty types of algorithms used to integrate
functions. The fucntion and expected result are user
configurable, as well as the range of the integration
and number of subdivition. The first algorithm is an
implementation of the simplest method used to integrate
function(calculates the area of a trapeze) while
the other method uses GSL's QAP algorithm.
The resutls from the calculation can be displayed on
the plot. There are 3 types of plots aviablable. The
first displays the error rate in corrolation to the
number of subdivisions used. The second displays the
corrolation between adjecent errors. The final plot
displays the actual result per number of subdivions.
There is also a table displaying the number of subdivision
needed to achive an error less than 1E-3, 1E-4, 1E-5
and 1E-6. All raw data used for plotting is also
Enables a user to see the precision of different interpolation
methods implemented in GSL. The user can input his own custom
function, as well as describe the start and end range and
the number of points that the interpolation methods will
use. The follwing GSL interpolation methods are available:
akima, akima_periodic, cspline, cspline_periodic, polynominal
and linear. The user can chose any number of interpolation
methods to be displayed on the plot. The input point are
displayed as dots. All plot data is avialable to the user.
Shows the time relations beetween matrix decomposition(LU)
time and the time required to solve the matrix. Each
matrix is populated with random numbers. The start size
and end size of the matracies can be specified as well
as the step size.
Shows different root finding methods
and the error assosiated with each iteration
of the convergance process. Both the function
as well as the bracket range are configurable.
The maximum number of iteration can also be
specified. Data generated by the methods
can be displayed and analyzed.
There are a total of 6 methods avaialbe,
false postion, bisection, brent, newton,
Methods which have exceded the maximum
amount of iterations are discarded and
* Implement Save As for plot data viewer in
the format of CVS
* Error highlighting when an invalid function
The following section outlines the directory
structure of the PyMois package. The entire
applications code is divided into directories
containing code that has similar functionality.
All application launchers are located in the root
directory of the package.
All algorithms and mathematical methods used
in all programs are located here. Every application
has a single module in this directory. For example
if we have the integral_app.py application it will
have a integra.py module in this directory.
Withing the gui directory are located all the
python files created from QT UI format. These
files should not be edited since they are replaced
every time the UI files are update.
Files created by QT Designer are located in this
directory. Any modification to the GUI should
be done using theses file in QT Designer. The
python files generated from theses files should
not be edited.
The matlib directory contains code related to
the matplotlib library used for creating plots
and visualizing numerical data. All programs
use the plot widget located in this directory.
The plot widget is very easy to create and
minimizes the amount of code needed to embed
a plot within a QT application.
Code which is shared between applications.
All files adhear to naming convention which
enables quick identification of which files
belong to which application. There are
a couple of prefixes and suffixes used.
For example if we had an application called
Integrator we would uss the following naming
If a gui was created using QT Designer it
name should be integrator_app.ui and should
be stored in gui/ui. The generated python
code from that UI file will be located
in gui/ and will be named(if make is used
to generate the code) ui_integrator_app.py .
Next the main application code used to start
and customize the GUI should be calle d
integrator_app.py. The file should
be located in the root of the package.
If any calculation need to be done, the code
should be locaded in calc and have a name like
The entire PyMois packages depends on
a couple of key libraries. These need to
be installed in order for the applications
to work. All mathematical calculations use
the PyGSL and NumPy packages. The interface
and plotting relies on QT, PyQT and MatPlotLib.
Description: Cross-platform GUI Toolkit
Description: GNU GSL Python Binding
Description: Python QT4 Bindings
Description: Python extension module generator for C and C++ libraries(needed by
Description: Python 2D plotting library
Description: Python Numerical Library