An introduction to Axiom (1): The basics

This is the first of what I intend to be a series of posts, exploring the open source computer algebra system Axiom. Maxima has already been extremely well described on math-blog. I hope to do something similar for Axiom, but over several posts.

Obtaining and using Axiom

First: go to http://www.axiom-developer.org/ for a description and discussion, and then go to http://www.axiom-developer.org/axiom-website/download.html to find and download some binaries. Axiom works best under linux. Under windows you have several choices: you can run a native binary in console mode only, without graphics, or you can run Axiom inside an X-windows server for Windows such as Xming. The best interface for Axiom is to use it as a session within the TeXmacs editor. Screenshots of this can be seen here.

A note on Axiom and its forks

Owing to some disagreement among Axiom developers, the original Axiom has spawned two forks: FriCAS, and OpenAxiom. From the users’ point of view, there is not much to choose between the three. However, the development models and goals of the three are very different:

  1. Axiom “is intended to support educational and research objectives”, and aims to be very slow and careful in its development, using literate programming, so the development done now will still be useful and readable in 30 years time. Thus Axiom puts great stress on provable correctness of algorithms, and readability of code. This can make adding new material non-trivial.
  2. FriCAS “will use lightweight developement, allowing much faster evolution.” Also, FriCAS “add hooks which make adding alternative user interfaces easier.” FriCAS aims to be more user friendly than its parent, and in particular easier to extend.
  3. OpenAxiom “aims at being the open source computer algebra system of choice for research, teaching, engineering, etc.” It differs from its parent in technical details.

I will use the term “Axiom” to mean either the original Axiom, or the user experience of using any of its forks.

In these posts, Axiom will be presented as a sequence of images, showing Axiom output TeX-ed up to look good. This is similar to what you would obtain using TeXmacs.

One very important aspect of Axiom is that it uses types extensively. Everything you do in Axiom takes an input of one of the many types defined in Axiom, and produces an output of a particular type. One of the greatest difficulties for the beginner (well, it was certainly hard for me!) is making sense of the types, and ensuring that your input type is commensurate with the mathematics you are trying to do with it. But this is also one of Axiom’s greatest strengths.

But let’s start simply: Axiom can be used like a calculator:

Basic maths in Axiom

Axiom has all the standard functions:

Standard functions in Axiom

Note that %pi produces \pi, and %i the imaginary unit. Other constants include various infinities, which I’ll talk about in a further post.

Note that Axiom, like most computer algebra systems, will attempt to give a result in closed (symbolic) form. To force a floating point output, you need to include a floating point input, or use the numeric function, or coerce your input to be of type Float. (I’ll discuss types and coercion in a later post.)

Axiom has no trouble with integers of arbitrary size:

Large integers in Axiom

And Axiom can produce numeric output to arbitrary precision. The number of digits displayed is set by the digits function. The last two commands here are classic examples of “near integer” computations.

Arbitrary precision in Axiom

The next post can be found at http://amca01.wordpress.com/2008/05/25/an-introduction-to-axiom-2/

About these ads

14 responses to “An introduction to Axiom (1): The basics

  1. Pingback: An introduction to Axiom (2) « Alasdair’s musings

  2. The digits() function sets the working precision for computation. It’s the printing routine that, by default, adjusts the number of digits printed to be equal to the current working precision. There are ways of changing that: the functions outputFixed(), outputGeneral(), outputFloating().

    (1) -> digits 20

    (1) 20
    Type: PositiveInteger
    (2) -> outputFixed 40
    Type: Void
    (3) -> sqrt 2.0

    (3) 1.4142135623 7309504880 4445654500 0393532520
    Type: Float
    (4) -> %^2

    (4) 2.0000000000 0000000001 3552527156 0688054250
    Type: Float

  3. I should like to try Axiom on windows and was completely confused not finding any windows specific installation files on the download site you recommended: http://www.axiom-developer.org/axiom-website/download.html

    Evidently, using CAS system “without graphics” is not an attractive option. Is it possible to describe in more details how one “can run Axiom inside an X-windows server for Windows such as Xming?” What executable (or source code for this matter) to use and how маке it working with Xming?

    I used Cygwin before to run some non-windows applications but I got impression that Cygwin friendly version of Axiom is not available neither?

  4. Possibly the easiest way to get Axiom under windows is to go to

    http://axiom-wiki.newsynthesis.org/FriCASBinaries

    and follow the instructions for windows. I have tried this, and it does work, but I find xming far clumsier and slower than using linux. But it’s a great deal better than nothing! If you’re really keen to use Axiom at its most efficient, you could always set up your machine to dual boot into linux, and put Axiom on your linux partition.

    Let us know how you get on!

  5. Pingback: Walking Randomly » The 46th Carnival of Mathematics – the last one of 2008.

  6. Easily, your article is actually the best on this laudable topic. I agree with your conclusions and anxiously await your future updates. Saying thank you will not be sufficient, for the tremendous clarity in your writing. I will immediately grab your feed to stay abreast of any updates. Solid work and much success in your business efforts!

  7. I feel far more individuals need to read this, quite beneficial info.

  8. Hey very nice site! you have some awesome material on your website.
    I found this recently in a search
    Get $500 In Grocery Coupons! — tinyurl.com/2fgxul4

  9. I admit that I don’t to completely understand everything you’ve posted but it is an interesting read.

  10. Very interesting points. Thanks!

  11. very sorry for bronstein|
    he was explaining in plain english how symbolics integration funcs.

  12. I like the valuable information you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite certain I’ll learn plenty of new stuff right here! Good luck for the next! my website is about ed slott. would like some feedback if possible

  13. @Mandy- If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. Speak about security holes :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s