Kayali

Overview

Kayali is a Qt based Computer Algebra System (CAS) that can also be used as an advanced replacement for KDE KCalc. It is essentially a front end GUI for Maxima (and is easily extended to other CAS back-ends) and Gnuplot.

Please Note: I am currently targetting a small subset of Maxima, while maintaining a medium-term goal of supporting all of Maxima. Please bear in mind that although Kayali probably does not support what you want to do with it right now, it can be made do so - but I need your feedback to do that. Please try it out if you can and share your thoughts.

Kayali is currently alpha software and has only been tested on my own PC. It you are reading this (condition1 : satisfied) and are prepared to give it a go, then please do send me feedback as to how you get on. At this stage I am particularly looking for hints about where to focus my development efforts, so please email me or post a message to the Kayali sourceforge forum with what you would like to see Kayali support.

I expect to see rapid development of Kayali so please check back regularly for updates.

Installation

There is no real installation required. Simply untar the source tar.gz into a new directory. To run Kayali, type "python kayali.py" from the installation directory. Please note, however, the other required software packages. Of these, only Maxima and PyQt are mandatory. The others are only used for creating plots. If you are running linux then you probably have most of these already installed.

Download

Download from the sourceforge download page:

Download Kayali

Algebra

Kayali supports all the algebraic operations of Maxima, however the graphical representation is not complete, though is being rapidly expanded. Please let me know what areas you would like to see finished first.

Try these for example:

eq1: 2*x + y = 13
eq2: x*y = 20
solve([eq1,eq2])

factor(x^6 - y^6)

factor(30!)

expand((2*x + y)^5)

Calculus

Kayali supports all the calculus operations of Maxima but again, I have only (so far) provided graphical support for a limited number of operations. Try these for example:

integrate(1/(1+x^3),x)

diff(3*x^4 - x^2,x)

Plots

Kayali currently uses Gnuplot for graphing. It also is using the Maxima interface to Gnuplot rather than addressing Gnuplot directly. This has both advantages and disadvantages.

Try this:

atan(-x^2+y^3/4) [Enter]

Then right-mouse click on the output in the table, and select Plot. Enter min and max values of -4 and 4, for both x and y. Select OK. After viewing the plot, click back on the History tab.

Screenshots of Kayali

A screenshot of Kayali performing algebra

(See This Full Size)


A screenshot of Kayali performing calculus

(See This Full Size)


A screenshot of Kayali performing plots

(See This Full Size)




A screenshot of Kayali showing thumbs of plots in its history table

(See This Full Size)


Requires

Python

Kayali has been written in Python. Nearly all linux installations already have python installed.

Python Web Site

Maxima

Maxima is the engine behind Kayali. It is called a CAS (Computer Algebra System). Kayali passes all its commands to Maxima, so to learn more about the advanced use of Kayali you need to learn Maxima:

Maxima Sourceforge Web Site

PyQt4

PyQt4 is the interface between Python, which Kayali is written in, and Qt4. Qt4 is a great development toolkit developed by Trolltech in Norway.

Trolltech Qt Web Site

Riverbank PyQt Web Site

GnuPlot

(Only required for plotting) GnuPlot is a plotting utility under the GNU umbrella. The 3D plots require v4 or above.

GnuPlot Web Site

libgd

(Only required for plotting) libgd is a gif manipulation library needed by gnuplot to produce png files.

libgd Web Site

User Documentation

Until Kayali reaches beta there is no user documentation. However, a little exploration of the system will go a long way. To learn the more advanced usage of Kayali, go to the Maxima web site.

Maxima Sourceforge Web Site

Acknowledgements

Yapps

Yapps is a python-based parser which I have used for parsing the expressions.

Yapps Web Site

Pexpect

Pexpect is a python-based implementation of Expect, which I am using to communicate with Maxima.

Pexpect Web Site


SourceForge.net Logo