9 ms·
Maxima – A Computer Algebra System built with Lisp
- vsskanth 6y agoUsed Maxima to find some analytical differentials. It is very powerful but documentation could be a pain to decipher if you're new
- davidcorbin 6y agoHow does this compare to Sage?
- nsajko 6y agoSage is a python wrapper around other systems such as Maxima or Fricas.
- bee_rider 6y agoDoes sage also handle numerical stuff? The impression I got was that it was a bit more general than Maxima. However, I am terribly frightened by programs like this, as I suspect they are much smarter than me, so I tend to avoid them.
- williamstein 6y agoYes, Sage includes Python and the Python numerical stack (numpy, scipy, etc). It also has a lot of new code related to interval arithmetic (arbitrary precision numerical computation with proven error bounds).
- bee_rider 6y agoI do numerical linear algebra stuff, but every time I hear about interval arithmetic my ears perk up. It just seems like our error bounds require caveats (a-hah, I actually gave you the backward error, nyaah!) while theirs are just numbers.
- konjin 6y agoSage is everything and the kitchen sink. Numerical, analytical, integer, all accessible from a leaky python abstraction. Your python code will look a lot like calls to maxima, which will happen under the hood. You can think of it like bash, as a contrived example, most sage programs would be like calling an inline python script to find all files whose size is an even number of bytes, passing the results through pipes, pretty printing them with ls and finally sorting them alphabetically with sort. Whether you think this is good or bad depends on how familiar you are with the underlying systems. I think that it's great since I can use one program to dispatch whatever I need to the correct state of the art project and get a result that with a bit of massaging can be fed into another project.
- kzrdude 6y agoSee https://en.wikipedia.org/wiki/SageMath#Software_packages_contained_in_SageMath https://en.wikipedia.org/wiki/SageMath#Software_packages_con... for an overview of what Sage contains. Sage is like a colonial organism rather than an individual, and maxima is one of the packages that provides CAS features in Sage. Some other packages like SymPy, do too :) The integration between the various packages in sage it exists, but it's a bit clunky.
- dharmatech 6y agoSee also, computer algebra library for Scheme: https://github.com/dharmatech/mpl https://github.com/dharmatech/mpl
- gnufx 6y agoHow does it compare with JACAL, which is the old Scheme one I know? https://people.csail.mit.edu/jaffer/JACAL https://people.csail.mit.edu/jaffer/JACAL
- zelphirkalt 6y agoAccording to a file mpl.org in the repo linked, JACAL uses SLIB. Not sure if MPL does not, but I would assume that. Not sure what difference it makes, but probably some.
- geogra4 6y agoIs this related to macsyma?
- vortico 6y agoYes, "Under the name of Maxima, it [Macsyma] was released under the GPL in 1999, and remains under active maintenance." https://en.wikipedia.org/wiki/Macsyma https://en.wikipedia.org/wiki/Macsyma
- nsajko 6y agoTry to CTRL-F for Macsyma on the linked Maxima homepage.
- e40 6y agoMaxima was the port of Macsyma to Franz Lisp at UC Berkeley done by Prof. Fateman and his students. Franz Lisp was written to be Mac Lisp compatible for the sole purpose of running Macsyma. Prof Fateman worked on Macsyma at MIT.
- minxomat 6y agoAnd today Franz Lisp is instrumental in running older maclisp programs because the Franz lisp binaries still run unmodified on current BSD releases (with kernel compatibility turned on).
- nsajko 6y agoFricas (a fork of Axiom, which is a rename of Scratchpad 2) is another very old CAS implemented with Lisp, also now open sourced. I think Fricas is more powerful than Maxima (maybe much more) regarding symbolic integration and its type system, but it sadly has very few developers maintaining it. Fricas links: https://en.wikipedia.org/wiki/FriCAS https://en.wikipedia.org/wiki/FriCAS https://fricas.github.io https://fricas.github.io https://fricas.github.io/book.pdf https://fricas.github.io/book.pdf Axiom links: https://en.wikipedia.org/wiki/Axiom_(computer_algebra_system) https://en.wikipedia.org/wiki/Axiom_(computer_algebra_system... https://github.com/daly/axiom https://github.com/daly/axiom
- kzrdude 6y agoThere must be a reason that maxima is more widely used. Is Maxima easier to use? Or did maxima just have better distribution channels?
- blihp 6y agoAt least a couple of non-technical reasons: I believe Maxima was open sourced a few years earlier (1998 vs 2001) which helped it get established. Maxima was also supported by a rather prolific open source developer which probably helped a community coalesce around it. Axiom, on the other hand, looks like it was more of a 'throw it over the wall' open source project which only happened after it failed commercially.
- lokedhs 6y agoAxiom is also not a normal Lisp program. Maxima can be loaded using ASDF and you can hack on it like any other Lisp project. Axiom in the other hand generates Lisp code from some other format and is rather incomprehensible to someone just coming into the project. Not that Maxima is all that easy to understand either. The nature of the software makes it complicated, but there is code in there from the 60's, which carries with it some more the classic issues with Lisp code from that era, short symbol names, use of dynamic variables, etc.
- sadfev 6y agoI think sagemath uses this for their symbolic package
- williamstein 6y agoThat is correct. We embed Maxima at the C level using ECL for much better performance than one might expect (basically call Maxima from python very efficiently in the same process!).
- sadfev 6y agoProf Stein, I am pleasantly surprised to get a reply from you! I have one question, How often is Sympy used in Sagemath compared to Maxima? Or rather when I do symbolic math in sagemath, do I ever hit Sympy?
- guts 6y agoThere is a maxima to python translation tool. It's good for sharing your maxima code with everyone else. https://gist.github.com/LakshyAAAgrawal/33eee2d33c4788764087eef1fa67269e https://gist.github.com/LakshyAAAgrawal/33eee2d33c4788764087...
- alchadoor 6y agoThis is nicee... With this we can bridge between historic Maxima and technology of present aka Python. As they say “It is in the roots, not the branches, that a tree’s greatest strength lies.”
- LakshyAAAgrawal 6y agoThank you for the kind words..
- LakshyAAAgrawal 6y agoHey, happy to see this mentioned. I am the developer of Maxima's Pytranslate, developed as a GSoC project. Would be happy to answer any questions about it.
- lokedhs 6y agoOf interest may be my project that implements a CLIM-based user interface on top of Maxima. It turns out that CLIM is perfect for this, as its idea of presentation forms matches the way mathematical expressions are represented in Maxima. I have made a few videos showing how it works. It's also available on Flathub, or if you're brave you can build it yourself. https://peertube.mastodon.host/videos/watch/df751bd5-5a26-44da-90d5-f47624161649 https://peertube.mastodon.host/videos/watch/df751bd5-5a26-44... https://peertube.mastodon.host/videos/watch/b003360f-97a9-4f77-b474-e78d9bb687cb https://peertube.mastodon.host/videos/watch/b003360f-97a9-4f... https://github.com/lokedhs/maxima-client https://github.com/lokedhs/maxima-client
- smabie 6y agoI love CLIM, too bad it's not used much. The whole idea of it is very interesting, an evolutionary dead end that in many ways seems far superior then what "modern" GUIs provide
- lokedhs 6y agoI think there are more practical reasons why it's not used more. What you say is absolutely true of course, but the bigger issue is that McCLIM still has some technical issues. What is really needed is a multiplatform backend that implements everything completely. Right now the only production grade backend is the CLX one, and even that one requires you to jump though hoops to get complete font rendering. I built all of this into the flatpak distribution, but few people are willing to go through that just to distribute some software.
- marcle 6y agoI am often amazed that one can run Maxima on an Android phone (Maxima on Android), including Gnuplot graphics and MathJax math formulae: plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)), y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]); /* gradient of the log-likelihood for a time-dependent accelerated failure time model */ assume(t>0)$ H:-log(S(integrate(exp(alpha+beta*x(u)),u,0,t))); diff(delta*diff(H,t)-H,beta); Axiom/Fricas is a beautiful language which provides a powerful mathematical type system.
- ogogmad 6y agoIndent by two spaces if you want to quote some code, otherwise the asterisks get turned into italics. plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)), y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]);
- marcle 6y agoThank you - now edited.
- em500 6y agoWhy are you amazed about that? A modern Android phone is a general purpose computer roughly as powerful as a 2010-2015 laptop. Math software like Maxima, Mathematica, Maple have a very long history and was widely used on 1980s/1990s hardware.
- ploika 6y agoBecause it is amazing? Intellectually I know all about Moore's law, but having a supercomputer in your pocket still feels like science fiction in reality. There's no reason to push that feeling away.
- Sharlin 6y agoBut things like plotting a simple function, 3D or not, are vastly less performance-intensive than almost all other things that people do with their phones, like rendering just about any modern webpage. Never mind actually demanding things like playing 3D games (doing that on a cellphone was indeed rather amazing back in 2011, being accustomed to mobile games mostly being simple 2D affairs).
- zzbn00 6y agoFor a bit of a Maxima vs Mathematica perspective, it is worth reading Fateman's review of Mathematics: https://people.eecs.berkeley.edu/~fateman/papers/mma.review.pdf https://people.eecs.berkeley.edu/~fateman/papers/mma.review....
- tgv 6y agoIf you want to see what it can do for you, wxMaxima is an easier entry, with at least an attempt at a GUI: https://github.com/wxMaxima-developers/wxmaxima/releases https://github.com/wxMaxima-developers/wxmaxima/releases, although macOS is quite badly supported.
- 1MachineElf 6y agoTo my detriment, I avoided having to learn anything in my 2007 highschool online Algebra 2 class by simply feeding the equations into Maxima. That was the year I first started using Linux - a Ubuntu 8.04 install CD on a Linux magazine saved my laptop from a corrupted Windows Vista install while away from home.
- narwally 6y agoI was doing my first Linux install around the same time. I ordered an install CD from both Ubuntu and Linux Mint; the Mint one came in first, so that's the OS I used for my first few years. I used the CD to make a bootable usb stick so that I could use the internet when my parents weren't home (they kept Windows password protected). I've never actually run Windows on a personal machine since I didn't have my own until college, and but that time I was a few years into my Linux journey.