Update of /cvsroot/maxima/htdocs/faq In directory sc8-pr-cvs1:/tmp/cvs-serv13314 Modified Files: faq.html Added Files: Makefile Makefile.pre-cvs README date faq.css faq.css~ faq.dat faq.dat.m4 faq.dat.m4~ faq.dat~ faq.m4 faq.m4~ faq.txt faq.xml faqfooter.html faqfooter.html.m4 faqfooter.txt faqheader.html faqheader.html.m4 faqheader.html.m4~ faqheader.html~ faqheader.txt http.m4 index.html makefaq.py maxima.gif Log Message: JM 2003 07/23 --- NEW FILE: Makefile --- M4DEFS = http.m4 faq.html: faq.dat faqheader.html faqfooter.html Makefile maxima.gif makefaq.py -j install: faq.html faq.css maxima.gif index.html @echo Someone still needs to write the installation target! %: $(M4DEFS) %.m4 make date m4 -P date -DINSTALLHOST=$(INSTALLHOST) -DINSTALLURLPATH=$(INSTALLURLPATH) $^ > $@ contents: grep '<c>' faq.dat | sed 's/^ *<c>//' | sort -b -u .PHONY: date date: echo "m4_define(UPDATE,`date +%d\ %b\ %Y`)m4_dnl" > $@ clean: $(RM) faq.dat faqheader.html faqfooter.html faq.html --- NEW FILE: Makefile.pre-cvs --- M4DEFS = http.m4 # INSTALLHOST = gwyn.tux.org # INSTALLPATH = public_html/maxima INSTALLHOST = glue.umd.edu INSTALLPATH = ~milgram/../pub/maxima INSTALLURLPATH = ~milgram/maxima RSYNCPATH = --rsync-path=/homes/milgram/local/bin/rsync faq.html: faq.dat faqheader.html faqfooter.html Makefile maxima.gif makefaq.py -j install: faq.html faq.css maxima.gif index.html rsync -e ssh $(RSYNCPATH) -v -a -z $^ $(INSTALLHOST):$(INSTALLPATH) %: $(M4DEFS) %.m4 make date m4 -P date -DINSTALLHOST=$(INSTALLHOST) -DINSTALLURLPATH=$(INSTALLURLPATH) $^ > $@ contents: grep '<c>' faq.dat | sed 's/^ *<c>//' | sort -b -u .PHONY: date date: echo "m4_define(UPDATE,`date +%d\ %b\ %Y`)m4_dnl" > $@ clean: $(RM) faq.dat faqheader.html faqfooter.html faq.html --- NEW FILE: README --- *** Requirements m4 and Python *** How to generate the FAQ Just edit faq.dat and type "make" to create faq.html *** Make targets: (default) - builds faq.html from the makefaq input files install - dummy target for now; could use it later to install contents - print out list of categories currently in FAQ clean - the usual --- NEW FILE: date --- m4_define(UPDATE,21 Mar 2003)m4_dnl --- NEW FILE: faq.css --- h1 { padding-top: 0.25in; padding-bottom: 0.25in; color: black; font-size: 24pt; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: center; } h2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18pt; } h4 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } ol { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } dt { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } dd { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } p { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } pre { font-family: Courier, serif; background-color: #dddddd; } code { font-family: Courier, serif; } tt { font-family: Courier, serif; } --- NEW FILE: faq.css~ --- h1 { padding-top: 0.25in; padding-bottom: 0.25in; color: black; font-size: 24pt; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; text-align: center; } h2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18pt; } h3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12pt; } p { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } pre { font-family: Courier, serif; background-color: #dddddd; } code { font-family: Courier, serif; } tt { font-family: Courier, serif; } --- NEW FILE: faq.dat --- <c>General <q>Acknowledgements <a> <p>Numerous people have contributed material to this FAQ and/or to the Maxima mailing list (from which much of the FAQ material is snarfed :) Notably: Jay Belanger, Richard Fateman, David Holmgren, Nikolaos Ioakimidis, Stavros Macrakis, Martin Rubey, Raymond Toy, Barton Willis, and many others, - above all: William Schelter. (if you know of someone I've forgotten, please drop me a line). </p> <c>General <q>Did anybody really ask any of these questions? <a><p>Many of them :) </p> <c>General <q>What is Maxima? <a> <p>From the README: Maxima is a full symbolic computation program. It is full featured doing symbolic manipulation of polynomials, matrices, rational functions, integration, Todd-coxeter, graphing, bigfloats. It has a symbolic debugger source level debugger for maxima code. Maxima is based on the original Macsyma developed at MIT in the 1970's. It is quite reliable, and has good garbage collection, and no memory leaks. It comes with hundreds of self tests. </p> <c>General <q>Macsyma vs. DOE-Macsyma vs. Symbolics Macsyma vs. Maxima? <a> <p> The system developed at MIT was called Macsyma (although the nicknames MACSYM and MAXIMA were sometimes used since filenames were limited to six uppercase-only characters in sixbit character code). </p> <p> Symbolics licensed Macsyma from M.I.T. and registered "Macsyma" as a trademark at some point (presumably with M.I.T.'s permission). </p> <p> When Macsyma source ceased to be freely available, pressure was put on M.I.T. (mostly by Fateman) to transfer the code which had been developed largely with Department of Energy (DOE) funding to the DOE, which then released it to others under certain conditions. </p> <p> That codebase was called DOE Macsyma. I don't know what legal rights the DOE had to the *name* Macsyma as opposed to the codebase, but presumably the non-commercial users of DOE Macsyma wanted to avoid any legal wrangling around the name, and started using the name Maxima at some point (but I don't know when that was). </p> <p> So the short answer as I understand it is that Maxima is simply the most recent name for the branch that started under the name DOE Macsyma. </p><em>- Stavros</em> <c>General <q>Who wrote it? <a> <p> (From the <A HREF="http://maxima.sourceforge.net">home page</A>: Maxima is a descendant of DOE Macsyma, which had its origins in the late 1960s at MIT. It is the only system based on that effort still publicly available and with an active user community, thanks to its open source nature. Macsyma was the first of a new breed of computer algebra systems, leading the way for programs such as Maple and Mathematica. This particular variant of Macsyma was maintained by William Schelter from 1982 until he passed away in 2001. In 1998 he obtained permission to release the source code under <a href=http://www.gnu.org/licenses/licenses.html#GPL>GPL</a>. It was his efforts and skill which have made the survival of Maxima possible, and we are very grateful to him for volunteering his time and skill to keep the original Macsyma code alive and well. </p> <c>General <q>Who's maintaining it now? <a> <p> Since William Schelter's passing a group of users and developers has formed to keep Maxima alive and kicking. We are currently in a transitional state, deciding what directions to go in next and seeing what our abilities and resources are. Maxima itself is reasonably feature complete at this stage, with abilities such as symbolic integration, 3D plotting, and an ODE solver, but there is a lot of work yet to be done in terms of bug fixing, cleanup, and documentation. This is not to say there will be no new features, but there is much work to be done before that stage will be reached, and for now new features are not likely to be our focus. </p> <c>Documentation <q>Where can I read about it? <a> <p> <ul> <li> The impatient should start with <A HREF="http://maxima.sourceforge.net/referencemanual/maxima_1.html#SEC1">Introduction to Maxima</A>, Section 1 of the Maxima Reference Manual (q.v., below). <li> The Maxima <a href=http://maxima.sourceforge.net/>home page</a> <li> The UT <a href=http://www.math.utexas.edu/mailman/listinfo/maxima>Maxima mailing list</a>. There are also lists established on sourceforge, but as yet they see very little traffic. Most of the action is on the UT list. <li> Mike Clarkson's <A HREF="http://starship.python.net/crew/mike/maxima/html/macref/">DOE-Maxima Reference Manual</A> <li> The Maxima Reference Manual (apparently no longer maintained but has useful information) <ul><li> <a href=http://maxima.sourceforge.net/referencemanual/maxima_toc.html>HTML Version</a> <li> <a href=http://maxima.sourceforge.net/referencemanual/maxima.pdf>PDF Version</a> </ul> <li>Michel Gosse's excellent Maxima page at <A HREF="http://www.maxima.fr.st/"> http://www.maxima.fr.st/</A>. Another good reason to learn French. </ul> </p> <c>Documentation <q>Why two "Reference Manuals"? <a> <p> The original Maxima Reference Manual by William Schelter is no longer maintained. Mike Clarkson's manual is not exactly a replacement of WS's manual, but rather, a separate manual prepared by Michael Clarkson for DOE-Macsyma in the past and now adapted to Maxima with a change in the title: DOE-Maxima instead of DOE-Macsyma. </p> <c>Documentation <q>What about the page at utexas.edu? It only shows versions up to 5.6.0? <a> <p> <A HREF="http://www.ma.utexas.edu/maxima.html"> http://www.ma.utexas.edu/maxima.html</A> was William Schelter's old home page and is no longer maintained. It does have some screenshots, however, as well as other useful information. </p> <c>Documentation <q>What about Lisp? <a> <p> Some web sites with good information on Common Lisp: <ul> <li>The <A HREF="http://cl-cookbook.sourceforge.net/">Common Lisp Cookbook</A> <li><A HREF="http://clisp.cons.org/resources.html"> http://clisp.cons.org/resources.html</A>, with general info (emphasis on CLISP) <li><A HREF="http://www.apl.jhu.edu/~hall/lisp.html">An Introduction and Tutorial for Common Lisp</A> <li><A HREF="http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html">Common Lisp: A Gentle Introduction to Symbolic Computation</A> by David Touretzky <li><A HREF="http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Common Lisp the Language</A> </ul> </p> <c>General <q>Is it free? <a><p> Yes. Maxima is distributed under the <A HREF="http://www.gnu.org/licenses/licenses.html#GPL">GNU General Public License</A>, with some export restrictions from the U.S. Department of Energy. </p> <c>Installing Maxima <q>Where do I get it? <a>[to be added] <c>Installing Maxima <q>What do I need to run it? <a>[to be added] <q>How to get it? <a>Maxima can be downloaded from the <A HREF="http://maxima.sourceforge.net/">Maxima home page</A> at Sourceforge. The latest version is 5.9.0. <c>Installing Maxima <q>What Linux Distributions come with Maxima? <a> Vadim Zhytnikov writes: "AFAIK the only two Linux distros which come with Maxima are: <ul> <li> Debian (unstable branch) <A HREF="www.debian.org"> www.debian.org</A> <li> ALT Linux (Master 2.0, Master 2.2) <A HREF="www.altlinux.com"> www.altlinux.com</A>" </ul> <c>Lisp <q>What LISP implementations will Maxima work with? <a> clisp, CMUCL and GCL are fully supported by Maxima; previous versions of Maxima only fully supported GCL. Ports to other ANSI lisps should be straightforward and are welcome; please contact the developers if you are interested in working on a port. <c>Lisp <q>CLISP <a>clisp includes GNU readline support, so Maxima will have advanced command-line editing facilities when built with it. Get it from <A HREF="http://clisp.cons.org"> http://clisp.cons.org</A>. Maxima will fail to build with 2.26 because of a bug in clisp. 2.28 and 2.29 are known to work. There are currently unresolved problems with floating point numbers in Maxima with clisp 2.30. 2.29 is recommended. <c>Lisp <q>CMUCL <a> Get it from <A HREF="http://cmucl.cons.org"> http://cmucl.cons.org</A>. CMUCL is the fastest option for Maxima on platforms where it is available. Unfortunately, it does not include readline support. However, readline support can be added by wrapping maxima with the ledit executable. See <A HREF="ftp://ftp.inria.fr/INRIA/Projects/cristal/Daniel.de_Rauglaudre/Tools/"> ftp://ftp.inria.fr/INRIA/Projects/cristal/Daniel.de_Rauglaudre/Tools/</A> </a> for ledit. Maxima will build with CMUCL 18c, but will hang on some run-time operations. 18d is known to work. <c>Lisp <q>GCL <a> Get it at <a href=http://savannah.gnu.org/projects/gcl> <http://savannah.gnu.org/projects/gcl></a>. 2.4.4 and 2.5.0 should work. 2.5.0 has not yet been released as of this writing. The cvs version of 2.5.0 has been used to successfully build Maxima. GCL versions starting with 2.4.3 can be built with readline support, so Maxima will have advanced command-line editing facilities when build with it. <c>General <q>What about other symbolic manipulation packages? <a> <p> There are several, although not all are open-source or otherwise free. <ul> <li> <A HREF="http://www-swiss.ai.mit.edu/~jaffer/JACAL.html">JACAL</A>, GPL'd, based on Scheme <li><A HREF="http://yacas.sourceforge.net/yacas.html">YACAS</A>, GPL'd <li><A HREF="http://www.synaptics.com/people/daveg/">Calc</A>, the GNU Emacs Calculator. GPL'd. <li> <a href=http://www.strout.net/python/pythonica.html>Pythonica</a> (License unknown; source available at that link) <li> <a href=http://www.scientek.com/macsyma/main.htm>Macsyma</a> <li> <a href=http://www.wolfram.com/products/mathematica/index.html>Mathematica</a> <li> <a href=http://www.maplesoft.com/>Maple</a> </ul> </p> <p> David Holmgren writes: "I've tried [Jacal, Yacas, and Calc] with Windows and Linux. Jacal and Yacas don't have the range of commands that Maxima does, but Calc is a bit more extensive (i.e., has a fairly general integrator)." </p> <c>Emacs <q>How do I enable maxima mode in emacs? <a>Put something like these in your ~/.emacs: <pre> (setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist)) (setq load-path (cons "/usr/share/maxima/5.9.0/emacs" load-path )) (autoload 'maxima "maxima" "Running Maxima interactively" t) (autoload 'maxima-mode "maxima" "Maxima editing mode" t) </pre> Instead of modifying the load path, you could copy all the .el files from /usr/share/maxima/5.9.0/emacs (or wherever) to a site-lisp directory in your load path. <c> Bugs and other problems <q> Why do trivial bugs still exist on a program this old? <a> </p> <em>I just submitted a bug on sourceforge and was just wondering, why do trivial bugs still exist on a program this old? These are things my calculator can do right now, while this program has apparently been around for 30+ years.</em> <p> <p> <strong>Answer:</strong> <ol> <li> You may have reported something which is not a bug [comment: it wasn't] but represents a misunderstanding of what the program is supposed to do. (This is very common, though it may not apply to your report of course). <li> The particular feature you exercised was not written 30 years ago, but was written by a user -- much like yourself, perhaps -- and since it was not central to the system's operation, has not been tested. It may have been written in the late 1970s. <li> Much of this system has not been revised since 1982, so that the last 20 years (when only the commercial version was under development) don't exactly count. <li> Hopefully the bug will get fixed now that it has been identified. </ol> </p> <c> Bugs and other problems <q> What's the preferred way to report bugs? <a> <p> Bugs should be entered directly into the bug database at <A HREF="https://sourceforge.net/tracker/?group_id=4933&atid=104933"> https://sourceforge.net/tracker/?group_id=4933&atid=104933</A>. This is a better way of tracking them than reporting them to the mailing list. If of course you'd like to discuss some issue, then mailing to the list is useful. </p> <p> The cgi interface to the bug database will allow you to submit files that may be useful in documenting the problem. </p> <p> A basic bug report includes enough information to reproduce the problem, including the version information given by bug_report(). </p> <p> A fuller, better better bug report includes: <ul> <li>A good title summarizing the problem. <li>A clear procedure for reproducing the problem. Please verify that your procedure actually re-creates the problem in a fresh Maxima. If you can't reproduce it, still file it, but try to include as much information about what you did before. The simpler and shorter the procedure, the better. It's always appreciated when the discoverer of a bug narrows it down to a simple case. Differentials are always good, too -- that is, cases which are almost the same but DO work. <li>If it's not completely obvious, an explanation of why this is the wrong answer and what the right answer is. <li>The exact version number you're running under, as shown by bug_report(). <li>A brief statement of why it's important to solve this problem (to help prioritize maintenance work), e.g. "almost every user will run into this insidious bug sooner or later and lose all his work" or "this bug keeps my group from using Maxima, since this class of matrix is ubiquitous in population genetics" or "the workaround is fine for now" or "this is an artifically constructed case, and I'm pretty sure that it will never affect an ordinary user" (though often bugs in complicated cases turn out to show up in simple cases as well). <li>If you have a work-around (a procedure for avoiding the problem) or a patch (code to fix the problem), that's nice, but not essential. If you have a patch, put FIX in the title of the bug report so that maintainers can incorporate it quickly. <li>Some problems may not be bugs, but functional limitations. In this case, it's interesting to know what other systems do, notably commercial Macsyma. If you know why this limitation might be there, say so ("Kratov theory says that this problem is intractable in general"). Also interesting if you know an algorithm for handling them e.g. "the ODE package doesn't handle the seventh-order triexponential case, but muPad 29.23 does; I believe the modified Phuoc-Ma`fuz method as implemented by Odibwa (J.Sym.Alg. 23:5:230) handles this correctly". Even better, "...and I am implementing it for Maxima 6.0" :-) . </ul> </p> <em> - Stavros Macrakis</em> <c>Bugs and other problems <q>Transcripts in bug reports <a> <p> Email and bug reports often include transcripts of Maxima sessions (a good thing). Unfortunately, the layout often gets garbled because Tabs are not treated consistently across mail programs, HTML, etc. Even for mail programs that display tabs correctly, everything gets screwed up as soon as the original mail is indented for quoting (">" at the beginning of the line). </p> <p> So if you include transcripts in mail or bug reports, please either <ul> <li> Change the tabs to spaces (e.g. using Unix expand or Emacs untabify). This is better if it is important to be able to read the expression, or... <li> Turn off Display2D when generating the transcript. This is better if it would be useful to cut and paste the expression back into an input line. </ul> </p> <p> Example: <pre> (C47) taylor(erf(x),x,0,5); 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI What that looks like in some mail readers: 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI Same thing after untabify: (C47) taylor(erf(x),x,0,5); 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI Using display2d:false: (C48) display2d:false; (D48) FALSE (C49) d47; (D49) 2*SQRT(%PI)*x/%PI-2*SQRT(%PI)*x^3/(3*%PI)+SQRT(%PI)*x^5/(5*%PI) </pre> </p> <c>Bugs and other problems <q>What about compilation problems? <a> <p> Submit a description of the problem to <A HREF="https://sourceforge.net/tracker/?group_id=4933&atid=104933"> https://sourceforge.net/tracker/?group_id=4933&atid=104933</A> <ul> <li>If you suspect GCL, please cc <A HREF="mailto:gcl...@gn..."><gcl...@gn...></A> <li>I advise everyone to stay away from gcc-2.96 -- if it works, its an accident. The compiler is known to be broken. gcc-2.95, gcc-3.0, gcc-3.1 and gcc-3.2 all should work with GCL cvs or the latest stable. <li>Submit the full configure and build output, together with the versions of the libraries on the system in question upon which GCL depends (ldd saved_gcl) and the compiler and binutils versions: <ul> <li> binutils: <code>ld -v</code> <li> gcc: <code>gcc -v</code> </ul> </ul> <em> - Camm Maguire</em> </p> <c>Bugs and other problems <q> maxima-5.9.0 won't compile with gcl 2.4.0 <a> <p> You need a more recent version of gcl. 2.4.0 is known not to work. 2.4.x for some x works I think. 2.5.x should work too. </p> <c>Additional Packages <q>(Hyper)graphs <a> <p> <ul> <li> Martin Rubey's package <A HREF="http://www.mat.univie.ac.at/~rubey/Maxima/graphs.lisp">graphs.lisp</A> enables maxima to generate various (hyper)graphs, calculate some of their properties and provides an interface to <A HREF="http://pigale.sourceforge.net">PIGALE</A>, which tries to embed them nicely on the screen. </ul> </p> <c>Beginner Questions <q>inchar and outchar <a> <p> <em> When I enter this equation: <pre> (C1) eq1:v1=(1/(z-1))*(b1*vin - g1*v2 - c1*fb); </pre> I get an output line entirely different than what I expected</em> </p> <p> <strong>Answer:</strong> "c1" is your input statement. Note the input and output line numbers have labels like (C1) and (D1). Try it with another variable name, for example c_1. </p> <p> Or, you can change the characters used to form the label by setting "inchar" and "outchar": <pre> (C1) inchar; (D1) C (C2) outchar; (D2) D (C3) inchar : c_; (D3) c_ (c_3) outchar : d_; (d_3) d_ (c_4) 5!; (d_4) 120 </pre> </p> <c>Beginner Questions <q>Solving simultaneous equations. <a> <p> <em>I want to deduce n[v]=2*n-n[c]-2 from <pre> n[e]=1/2*(3*n[v]+n[c]) and n-n[e]+n[v]=1 </pre> In other words: I want to express n[v] in terms of other variables. But solve does't work this for me. What function should I use? </em> </p> <p> <strong>Answer:</strong> You need to solve for the <strong>two</strong> variables: <pre> (C1) n[e]=1/2*(3*n[v]+n[c]); 3 n + n v C (D1) n = --------- e 2 (C2) n-n[e]+n[v]=1; (D2) n + n - n = 1 v e (C3) solve([d1,d2],[n[v],n[e]]); (D3) [[n = 2 n - n - 2, n = 3 n - n - 3]] v C e C </pre> Another possibility: <pre> (C1) eliminate([n[e]=1/2*(3*n[v]+n[c]),n-n[e]+n[v]=1],[n[e]]); (D1) [- n + 2 n - n - 2] v c (C2) solve(%,n[v]); (D2) [n = 2 n - n - 2] v c </pre> </p> <c>Beginner Questions <q>How to extract a column from a matrix? <a> <p> <em>For matrix 'm' 'm[i]' is the i-th row of 'm'. Is there any way to get a column? I know about 'col(m,i)' but 'col' returns matrix and it's not possible to assign a value to it. It's convinient to write 'm[i]:[1,2,3]'. Why can't I do that with columns?</em> </p> <p> <strong>Answer:</strong> try transposing m then transposing it again. </p> <c>Beginner Questions <q>Why doesn't 'return' work in loops? <a> <p> <em>For example:</em> <pre> (C1) block([],for i:1 thru 5 do return(1), 0); (D1) 0 </pre> </p> <p> <strong>Answer:</strong> It returned 1 from the for-loop. Then the block returned 0. </p> <c>TeX Output <q>How do I customize the Tex output for individual Maxima variables? <a> <p> Create a file "foo.lisp" (or whatever) with lisp statements like <pre> (defprop $cla "c_{l_\alpha}" texword) </pre> then load it in your script, for example: <pre> (C1) load("foo.lisp"); (D1) foo.lisp (C2) tex(cla); $$c_{l_alpha}$$ </pre> Maxima 5.9.0 and later has a utility function <code>texput</code> that allows you to customize TeX output. Here is the same example as before <pre> (C1) texput(cla, "c_{l_\\alpha}")$ (C3) tex(cla); $$c_{l_\alpha}$$ </pre> Notice that here we must use the double slash on alpha to get a single slash on the TeX output. </p> <c>Beginner Questions <q>DESOLVE doesn't work!? <a> <p> <em>desolve(diff(y(x),x)=(4-2*x)/(3*y^2-5),y(x)) produces the wrong answer.</em> </p> <p> <strong>Answer:</strong> As the documentation says, "the functional relationships must be explicitly indicated". That is, for Desolve, you can't write 'diff(y(x),x)=y+x; you must write 'diff(y(x),x)=y(x)+x. As it happens, Desolve can't solve that, but ODE2 can -- though ODE2 takes a different input form (yes, I agree this is annoying and illogical): depends(y,x)$ 'diff(y,x)=y+x. Transcript: <pre> (C1) depends(y,x); (D1) [y(x)] (C2) 'diff(y,x)=(4-2*x)/(3*y^2-5); dy 4 - 2 x (D2) -- = -------- dx 2 3 y - 5 (C3) ode2(%,y,x); 3 2 y - 5 y x - 4 x (D3) - -------- = -------- + %C 2 2 /* Now let's check the answer */ (C4) diff(d3,x); 2 dy dy 3 y -- - 5 -- dx dx 2 x - 4 (D4) - -------------- = ------- 2 2 (C5) solve(d4,'diff(y,x)); dy 2 x - 4 (D5) [-- = - --------] dx 2 3 y - 5 (C6) subst(d5,d2); 2 x - 4 4 - 2 x (D6) - -------- = -------- 2 2 3 y - 5 3 y - 5 (C7) ratsimp(lhs(d6)-rhs(d6)); (D7) 0 </pre> </p> <c> Beginner Questions <q> Quote needed? <a> <p> <em>In the DESOLVE example above, if you tell maxima that y depends on x, then you do not need to quote the diff operator. The quote is needed when depends(y,x) is not typed.</em> </p> <p> <strong>Answer:</strong> True. In the ODE example, you could omit the Depends and quote the diff, or include the Depends and either quote the diff or not.<br> </p> <p> The quote is stylistic, emphasizing that you're talking *about* the differential rather than actually carrying out the differentiation.<br> </p> <p> Of course, the discussion about desolve and ode2 needs to be put in a broader context of "how to solve differential equations". Here, it is just contrasting desolve's approach to dependency (use explicit functions like f(x)) vs. ode2's (declare that y depends on x or simply quote the differentials). </p> <c>Beginner Questions <q>Substitution <a> <p> <em> I have the following function call in a more complicated expression: <pre> erf((((64800 * %i + 64800) * t + 37 * %i + 35)/72)) </pre> I have another function acref, which takes 2 arguments, the first is the argument of the error function and the second is a approximation order. I want to substitute the call to acerf in place of erf in my more complicated expression, for example: <pre> acerf((((64800 * %i + 64800) * t + 37 * %i + 35)/72), 2) </pre> Is there a easy way to do this in maxima? </em> </p> <p> <strong>Answer:</strong> <pre> matchdeclare(any, true)$ defrule(r1,erf(any), acerf(any,order))$ order:2$ apply1(expression, r1); </pre> or some variation of that. </p> --- NEW FILE: faq.dat.m4 --- m4_include(faq.m4)m4_dnl <c>General <q>Acknowledgements <a> <p>Numerous people have contributed material to this FAQ and/or to the Maxima mailing list (from which much of the FAQ material is snarfed :) Notably: Jay Belanger, Richard Fateman, David Holmgren, Nikolaos Ioakimidis, Stavros Macrakis, Martin Rubey, Raymond Toy, Barton Willis, and many others, - above all: William Schelter. (if you know of someone I've forgotten, please drop me a line). </p> <c>General <q>Did anybody really ask any of these questions? <a><p>Many of them :) </p> <c>General <q>What is Maxima? <a> <p>From the README: Maxima is a full symbolic computation program. It is full featured doing symbolic manipulation of polynomials, matrices, rational functions, integration, Todd-coxeter, graphing, bigfloats. It has a symbolic debugger source level debugger for maxima code. Maxima is based on the original Macsyma developed at MIT in the 1970's. It is quite reliable, and has good garbage collection, and no memory leaks. It comes with hundreds of self tests. </p> <c>General <q>Macsyma vs. DOE-Macsyma vs. Symbolics Macsyma vs. Maxima? <a> <p> The system developed at MIT was called Macsyma (although the nicknames MACSYM and MAXIMA were sometimes used since filenames were limited to six uppercase-only characters in sixbit character code). </p> <p> Symbolics licensed Macsyma from M.I.T. and registered "Macsyma" as a trademark at some point (presumably with M.I.T.'s permission). </p> <p> When Macsyma source ceased to be freely available, pressure was put on M.I.T. (mostly by Fateman) to transfer the code which had been developed largely with Department of Energy (DOE) funding to the DOE, which then released it to others under certain conditions. </p> <p> That codebase was called DOE Macsyma. I don't know what legal rights the DOE had to the *name* Macsyma as opposed to the codebase, but presumably the non-commercial users of DOE Macsyma wanted to avoid any legal wrangling around the name, and started using the name Maxima at some point (but I don't know when that was). </p> <p> So the short answer as I understand it is that Maxima is simply the most recent name for the branch that started under the name DOE Macsyma. </p><em>- Stavros</em> <c>General <q>Who wrote it? <a> <p> (From the LINK(http://maxima.sourceforge.net,home page): Maxima is a descendant of DOE Macsyma, which had its origins in the late 1960s at MIT. It is the only system based on that effort still publicly available and with an active user community, thanks to its open source nature. Macsyma was the first of a new breed of computer algebra systems, leading the way for programs such as Maple and Mathematica. This particular variant of Macsyma was maintained by William Schelter from 1982 until he passed away in 2001. In 1998 he obtained permission to release the source code under <a href=http://www.gnu.org/licenses/licenses.html#GPL>GPL</a>. It was his efforts and skill which have made the survival of Maxima possible, and we are very grateful to him for volunteering his time and skill to keep the original Macsyma code alive and well. </p> <c>General <q>Who's maintaining it now? <a> <p> Since William Schelter's passing a group of users and developers has formed to keep Maxima alive and kicking. We are currently in a transitional state, deciding what directions to go in next and seeing what our abilities and resources are. Maxima itself is reasonably feature complete at this stage, with abilities such as symbolic integration, 3D plotting, and an ODE solver, but there is a lot of work yet to be done in terms of bug fixing, cleanup, and documentation. This is not to say there will be no new features, but there is much work to be done before that stage will be reached, and for now new features are not likely to be our focus. </p> <c>Documentation <q>Where can I read about it? <a> <p> <ul> <li> The impatient should start with LINK(http://maxima.sourceforge.net/referencemanual/maxima_1.html#SEC1, Introduction to Maxima), Section 1 of the Maxima Reference Manual (q.v., below). <li> The Maxima <a href=http://maxima.sourceforge.net/>home page</a> <li> The UT <a href=http://www.math.utexas.edu/mailman/listinfo/maxima>Maxima mailing list</a>. There are also lists established on sourceforge, but as yet they see very little traffic. Most of the action is on the UT list. <li> Mike Clarkson's LINK(http://starship.python.net/crew/mike/maxima/html/macref/,DOE-Maxima Reference Manual) <li> The Maxima Reference Manual (apparently no longer maintained but has useful information) <ul><li> <a href=http://maxima.sourceforge.net/referencemanual/maxima_toc.html>HTML Version</a> <li> <a href=http://maxima.sourceforge.net/referencemanual/maxima.pdf>PDF Version</a> </ul> <li>Michel Gosse's excellent Maxima page at LINK(http://www.maxima.fr.st/). Another good reason to learn French. </ul> </p> <c>Documentation <q>Why two "Reference Manuals"? <a> <p> The original Maxima Reference Manual by William Schelter is no longer maintained. Mike Clarkson's manual is not exactly a replacement of WS's manual, but rather, a separate manual prepared by Michael Clarkson for DOE-Macsyma in the past and now adapted to Maxima with a change in the title: DOE-Maxima instead of DOE-Macsyma. </p> <c>Documentation <q>What about the page at utexas.edu? It only shows versions up to 5.6.0? <a> <p> LINK(http://www.ma.utexas.edu/maxima.html) was William Schelter's old home page and is no longer maintained. It does have some screenshots, however, as well as other useful information. </p> <c>Documentation <q>What about Lisp? <a> <p> Some web sites with good information on Common Lisp: <ul> <li>The LINK(http://cl-cookbook.sourceforge.net/,Common Lisp Cookbook) <li>LINK(http://clisp.cons.org/resources.html), with general info (emphasis on CLISP) <li>LINK(http://www.apl.jhu.edu/~hall/lisp.html,An Introduction and Tutorial for Common Lisp) <li>LINK(http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html, Common Lisp: A Gentle Introduction to Symbolic Computation) by David Touretzky <li>LINK(http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html, Common Lisp the Language, 2nd Edition) </ul> </p> <c>General <q>Is it free? <a><p> Yes. Maxima is distributed under the LINK(http://www.gnu.org/licenses/licenses.html#GPL, GNU General Public License), with some export restrictions from the U.S. Department of Energy. </p> <c>Installing Maxima <q>Where do I get it? <a>[to be added] <c>Installing Maxima <q>What do I need to run it? <a>[to be added] <q>How to get it? <a>Maxima can be downloaded from the LINK(http://maxima.sourceforge.net/,Maxima home page) at Sourceforge. The latest version is 5.9.0. <c>Installing Maxima <q>What Linux Distributions come with Maxima? <a> Vadim Zhytnikov writes: "AFAIK the only two Linux distros which come with Maxima are: <ul> <li> Debian (unstable branch) LINK(www.debian.org) <li> ALT Linux (Master 2.0, Master 2.2) LINK(www.altlinux.com)" </ul> <c>Lisp <q>What LISP implementations will Maxima work with? <a> clisp, CMUCL and GCL are fully supported by Maxima; previous versions of Maxima only fully supported GCL. Ports to other ANSI lisps should be straightforward and are welcome; please contact the developers if you are interested in working on a port. <c>Lisp <q>CLISP <a>clisp includes GNU readline support, so Maxima will have advanced command-line editing facilities when built with it. Get it from LINK(http://clisp.cons.org). Maxima will fail to build with 2.26 because of a bug in clisp. 2.28 and 2.29 are known to work. There are currently unresolved problems with floating point numbers in Maxima with clisp 2.30. 2.29 is recommended. <c>Lisp <q>CMUCL <a> Get it from LINK(http://cmucl.cons.org). CMUCL is the fastest option for Maxima on platforms where it is available. Unfortunately, it does not include readline support. However, readline support can be added by wrapping maxima with the ledit executable. See LINK(ftp://ftp.inria.fr/INRIA/Projects/cristal/Daniel.de_Rauglaudre/Tools/) </a> for ledit. Maxima will build with CMUCL 18c, but will hang on some run-time operations. 18d is known to work. <c>Lisp <q>GCL <a> Get it at <a href=http://savannah.gnu.org/projects/gcl> <http://savannah.gnu.org/projects/gcl></a>. 2.4.4 and 2.5.0 should work. 2.5.0 has not yet been released as of this writing. The cvs version of 2.5.0 has been used to successfully build Maxima. GCL versions starting with 2.4.3 can be built with readline support, so Maxima will have advanced command-line editing facilities when build with it. <c>General <q>What about other symbolic manipulation packages? <a> <p> There are several, although not all are open-source or otherwise free. <ul> <li> LINK(http://www-swiss.ai.mit.edu/~jaffer/JACAL.html,JACAL), GPL'd, based on Scheme <li>LINK(http://yacas.sourceforge.net/yacas.html,YACAS), GPL'd <li>LINK(http://www.synaptics.com/people/daveg/,Calc), the GNU Emacs Calculator. GPL'd. <li> <a href=http://www.strout.net/python/pythonica.html>Pythonica</a> (License unknown; source available at that link) <li> <a href=http://www.scientek.com/macsyma/main.htm>Macsyma</a> <li> <a href=http://www.wolfram.com/products/mathematica/index.html>Mathematica</a> <li> <a href=http://www.maplesoft.com/>Maple</a> </ul> </p> <p> David Holmgren writes: "I've tried [Jacal, Yacas, and Calc] with Windows and Linux. Jacal and Yacas don't have the range of commands that Maxima does, but Calc is a bit more extensive (i.e., has a fairly general integrator)." </p> <c>Emacs <q>How do I enable maxima mode in emacs? <a>Put something like these in your ~/.emacs: <pre> (setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist)) (setq load-path (cons "/usr/share/maxima/5.9.0/emacs" load-path )) (autoload 'maxima "maxima" "Running Maxima interactively" t) (autoload 'maxima-mode "maxima" "Maxima editing mode" t) </pre> Instead of modifying the load path, you could copy all the .el files from /usr/share/maxima/5.9.0/emacs (or wherever) to a site-lisp directory in your load path. <c> Bugs and other problems <q> Why do trivial bugs still exist on a program this old? <a> </p> <em>I just submitted a bug on sourceforge and was just wondering, why do trivial bugs still exist on a program this old? These are things my calculator can do right now, while this program has apparently been around for 30+ years.</em> <p> <p> <strong>Answer:</strong> <ol> <li> You may have reported something which is not a bug [comment: it wasn't] but represents a misunderstanding of what the program is supposed to do. (This is very common, though it may not apply to your report of course). <li> The particular feature you exercised was not written 30 years ago, but was written by a user -- much like yourself, perhaps -- and since it was not central to the system's operation, has not been tested. It may have been written in the late 1970s. <li> Much of this system has not been revised since 1982, so that the last 20 years (when only the commercial version was under development) don't exactly count. <li> Hopefully the bug will get fixed now that it has been identified. </ol> </p> <c> Bugs and other problems <q> What's the preferred way to report bugs? <a> <p> Bugs should be entered directly into the bug database at LINK(https://sourceforge.net/tracker/?group_id=4933&atid=104933). This is a better way of tracking them than reporting them to the mailing list. If of course you'd like to discuss some issue, then mailing to the list is useful. </p> <p> The cgi interface to the bug database will allow you to submit files that may be useful in documenting the problem. </p> <p> A basic bug report includes enough information to reproduce the problem, including the version information given by bug_report(). </p> <p> A fuller, better better bug report includes: <ul> <li>A good title summarizing the problem. <li>A clear procedure for reproducing the problem. Please verify that your procedure actually re-creates the problem in a fresh Maxima. If you can't reproduce it, still file it, but try to include as much information about what you did before. The simpler and shorter the procedure, the better. It's always appreciated when the discoverer of a bug narrows it down to a simple case. Differentials are always good, too -- that is, cases which are almost the same but DO work. <li>If it's not completely obvious, an explanation of why this is the wrong answer and what the right answer is. <li>The exact version number you're running under, as shown by bug_report(). <li>A brief statement of why it's important to solve this problem (to help prioritize maintenance work), e.g. "almost every user will run into this insidious bug sooner or later and lose all his work" or "this bug keeps my group from using Maxima, since this class of matrix is ubiquitous in population genetics" or "the workaround is fine for now" or "this is an artifically constructed case, and I'm pretty sure that it will never affect an ordinary user" (though often bugs in complicated cases turn out to show up in simple cases as well). <li>If you have a work-around (a procedure for avoiding the problem) or a patch (code to fix the problem), that's nice, but not essential. If you have a patch, put FIX in the title of the bug report so that maintainers can incorporate it quickly. <li>Some problems may not be bugs, but functional limitations. In this case, it's interesting to know what other systems do, notably commercial Macsyma. If you know why this limitation might be there, say so ("Kratov theory says that this problem is intractable in general"). Also interesting if you know an algorithm for handling them e.g. "the ODE package doesn't handle the seventh-order triexponential case, but muPad 29.23 does; I believe the modified Phuoc-Ma`fuz method as implemented by Odibwa (J.Sym.Alg. 23:5:230) handles this correctly". Even better, "...and I am implementing it for Maxima 6.0" :-) . </ul> </p> <em> - Stavros Macrakis</em> <c>Bugs and other problems <q>Transcripts in bug reports <a> <p> Email and bug reports often include transcripts of Maxima sessions (a good thing). Unfortunately, the layout often gets garbled because Tabs are not treated consistently across mail programs, HTML, etc. Even for mail programs that display tabs correctly, everything gets screwed up as soon as the original mail is indented for quoting (">" at the beginning of the line). </p> <p> So if you include transcripts in mail or bug reports, please either <ul> <li> Change the tabs to spaces (e.g. using Unix expand or Emacs untabify). This is better if it is important to be able to read the expression, or... <li> Turn off Display2D when generating the transcript. This is better if it would be useful to cut and paste the expression back into an input line. </ul> </p> <p> Example: <pre> (C47) taylor(erf(x),x,0,5); 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI What that looks like in some mail readers: 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI Same thing after untabify: (C47) taylor(erf(x),x,0,5); 3 5 (2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x (D47)/T/ --------------- - ---------------- + ------------ + . . . %PI 3 %PI 5 %PI Using display2d:false: (C48) display2d:false; (D48) FALSE (C49) d47; (D49) 2*SQRT(%PI)*x/%PI-2*SQRT(%PI)*x^3/(3*%PI)+SQRT(%PI)*x^5/(5*%PI) </pre> </p> <c>Bugs and other problems <q>What about compilation problems? <a> <p> Submit a description of the problem to LINK(https://sourceforge.net/tracker/?group_id=4933&atid=104933) <ul> <li>If you suspect GCL, please cc EMAIL(gcl...@gn...) <li>I advise everyone to stay away from gcc-2.96 -- if it works, its an accident. The compiler is known to be broken. gcc-2.95, gcc-3.0, gcc-3.1 and gcc-3.2 all should work with GCL cvs or the latest stable. <li>Submit the full configure and build output, together with the versions of the libraries on the system in question upon which GCL depends (ldd saved_gcl) and the compiler and binutils versions: <ul> <li> binutils: <code>ld -v</code> <li> gcc: <code>gcc -v</code> </ul> </ul> <em> - Camm Maguire</em> </p> <c>Bugs and other problems <q> maxima-5.9.0 won't compile with gcl 2.4.0 <a> <p> You need a more recent version of gcl. 2.4.0 is known not to work. 2.4.x for some x works I think. 2.5.x should work too. </p> <c>Additional Packages <q>(Hyper)graphs <a> <p> <ul> <li> Martin Rubey's package LINK(http://www.mat.univie.ac.at/~rubey/Maxima/graphs.lisp,graphs.lisp) enables maxima to generate various (hyper)graphs, calculate some of their properties and provides an interface to LINK(http://pigale.sourceforge.net,PIGALE), which tries to embed them nicely on the screen. </ul> </p> <c>Beginner Questions <q>inchar and outchar <a> <p> <em> When I enter this equation: <pre> (C1) eq1:v1=(1/(z-1))*(b1*vin - g1*v2 - c1*fb); </pre> I get an output line entirely different than what I expected</em> </p> <p> <strong>Answer:</strong> "c1" is your input statement. Note the input and output line numbers have labels like (C1) and (D1). Try it with another variable name, for example c_1. </p> <p> Or, you can change the characters used to form the label by setting "inchar" and "outchar": <pre> (C1) inchar; (D1) C (C2) outchar; (D2) D (C3) inchar : c_; (D3) c_ (c_3) outchar : d_; (d_3) d_ (c_4) 5!; (d_4) 120 </pre> </p> <c>Beginner Questions <q>Solving simultaneous equations. <a> <p> <em>I want to deduce n[v]=2*n-n[c]-2 from <pre> n[e]=1/2*(3*n[v]+n[c]) and n-n[e]+n[v]=1 </pre> In other words: I want to express n[v] in terms of other variables. But solve does't work this for me. What function should I use? </em> </p> <p> <strong>Answer:</strong> You need to solve for the <strong>two</strong> variables: <pre> (C1) n[e]=1/2*(3*n[v]+n[c]); 3 n + n v C (D1) n = --------- e 2 (C2) n-n[e]+n[v]=1; (D2) n + n - n = 1 v e (C3) solve([d1,d2],[n[v],n[e]]); (D3) [[n = 2 n - n - 2, n = 3 n - n - 3]] v C e C </pre> Another possibility: <pre> (C1) eliminate([n[e]=1/2*(3*n[v]+n[c]),n-n[e]+n[v]=1],[n[e]]); (D1) [- n + 2 n - n - 2] v c (C2) solve(%,n[v]); (D2) [n = 2 n - n - 2] v c </pre> </p> <c>Beginner Questions <q>How to extract a column from a matrix? <a> <p> <em>For matrix 'm' 'm[i]' is the i-th row of 'm'. Is there any way to get a column? I know about 'col(m,i)' but 'col' returns matrix and it's not possible to assign a value to it. It's convinient to write 'm[i]:[1,2,3]'. Why can't I do that with columns?</em> </p> <p> <strong>Answer:</strong> try transposing m then transposing it again. </p> <c>Beginner Questions <q>Why doesn't 'return' work in loops? <a> <p> <em>For example:</em> <pre> (C1) block([],for i:1 thru 5 do return(1), 0); (D1) 0 </pre> </p> <p> <strong>Answer:</strong> It returned 1 from the for-loop. Then the block returned 0. </p> <c>TeX Output <q>How do I customize the Tex output for individual Maxima variables? <a> <p> Create a file "foo.lisp" (or whatever) with lisp statements like <pre> (defprop $cla "c_{l_\alpha}" texword) </pre> then load it in your script, for example: <pre> (C1) load("foo.lisp"); (D1) foo.lisp (C2) tex(cla); $$c_{l_alpha}$$ </pre> Maxima 5.9.0 and later has a utility function <code>texput</code> that allows you to customize TeX output. Here is the same example as before <pre> (C1) texput(cla, "c_{l_\\alpha}")$ (C3) tex(cla); $$c_{l_\alpha}$$ </pre> Notice that here we must use the double slash on alpha to get a single slash on the TeX output. </p> <c>Beginner Questions <q>DESOLVE doesn't work!? <a> <p> <em>desolve(diff(y(x),x)=(4-2*x)/(3*y^2-5),y(x)) produces the wrong answer.</em> </p> <p> <strong>Answer:</strong> As the documentation says, "the functional relationships must be explicitly indicated". That is, for Desolve, you can't write 'diff(y(x),x)=y+x; you must write 'diff(y(x),x)=y(x)+x. As it happens, Desolve can't solve that, but ODE2 can -- though ODE2 takes a different input form (yes, I agree this is annoying and illogical): depends(y,x)$ 'diff(y,x)=y+x. Transcript: <pre> (C1) depends(y,x); (D1) [y(x)] (C2) 'diff(y,x)=(4-2*x)/(3*y^2-5); dy 4 - 2 x (D2) -- = -------- dx 2 3 y - 5 (C3) ode2(%,y,x); 3 2 y - 5 y x - 4 x (D3) - -------- = -------- + %C 2 2 /* Now let's check the answer */ (C4) diff(d3,x); 2 dy dy 3 y -- - 5 -- dx dx 2 x - 4 (D4) - -------------- = ------- 2 2 (C5) solve(d4,'diff(y,x)); dy 2 x - 4 (D5) [-- = - --------] dx 2 3 y - 5 (C6) subst(d5,d2); 2 x - 4 4 - 2 x (D6) - -------- = -------- 2 2 3 y - 5 3 y - 5 (C7) ratsimp(lhs(d6)-rhs(d6)); (D7) 0 </pre> </p> <c> Beginner Questions <q> Quote needed? <a> <p> <em>In the DESOLVE example above, if you tell maxima that y depends on x, then you do not need to quote the diff operator. The quote is needed when depends(y,x) is not typed.</em> </p> <p> <strong>Answer:</strong> True. In the ODE example, you could omit the Depends and quote the diff, or include the Depends and either quote the diff or not.<br> </p> <p> The quote is stylistic, emphasizing that you're talking *about* the differential rather than actually carrying out the differentiation.<br> </p> <p> Of course, the discussion about desolve and ode2 needs to be put in a broader context of "how to solve differential equations". Here, it is just contrasting desolve's approach to dependency (use explicit functions like f(x)) vs. ode2's (declare that y depends on x or simply quote the differentials). </p> <c>Beginner Questions <q>Substitution <a> <p> <em> I have the following function call in a more complicated expression: <pre> erf((((64800 * %i + 64800) * t + 37 * %i + 35)/72)) </pre> I have another function acref, which takes 2 arguments, the first is the argument of the error function and the second is a approximation order. I want to substitute the call to acerf in place of erf in my more complicated expression, for example: <pre> acerf((((64800 * %i + 64800) * t + 37 * %i + 35)/72), 2) </pre> Is there a easy way to do this in maxima? </em> </p> <p> <strong>Answer:</strong> <pre> matchdeclare(any, true)$ defrule(r1,erf(any), acerf(any,order))$ order:2$ apply1(expression, r1); </pre> or some variation of that. </p> --- NEW FILE: faq.dat.m4~ --- m4_include(faq.m4)m4_dnl <c>General <q>Acknowledgements <a>Numerous people have contributed material to this FAQ and/or to the Maxima mailing list (from which much of the FAQ material is snarfed :) Notably: Jay Belanger, Richard Fateman, David Holmgren Stavros Macrakis, Martin Rubey, Raymond Toy, Barton Willis, and many others, - above all: William Schelter. (if you know of someone I've forgotten, please drop me a line). <c>General <q>Did anybody really ask any of these questions? <a>Many of them :) <c>General <q>What is Maxima? <a> From the README: Maxima is a full symbolic computation program. It is full featured doing symbolic manipulation of polynomials, matrices, rational functions, integration, Todd-coxeter, graphing, bigfloats. It has a symbolic debugger source level debugger for maxima code. Maxima is based on the original Macsyma developed at MIT in the 1970's. It is quite reliable, and has good garbage collection, and no memory leaks. It comes with hundreds of self tests. <c>General <q>Who wrote it? <a> (From the LINK(http://maxima.sourceforge.net,home page): Maxima is a descendant of DOE Macsyma, which had its origins in the late 1960s at MIT. It is the only system based on that effort still publicly available and with an active user community, thanks to its open source nature. Macsyma was the first of a new breed of computer algebra systems, leading the way for programs such as Maple and Mathematica. This particular variant of Macsyma was maintained by William Schelter from 1982 until he passed away in 2001. In 1998 he obtained permission to release the source code under <a href=http://www.gnu.org/licenses/licenses.html#GPL>GPL</a>. It was his efforts and skill which have made the survival of Maxima possible, and we are very grateful to him for volunteering his time and skill to keep the original Macsyma code alive and well. <c>General <q>Who's maintaining it now? <a> Since William Schelter's passing a group of users and developers has formed to keep Maxima alive and kicking. We are currently in a transitional state, deciding what directions to go in next and seeing what our abilities and resources are. Maxima itself is reasonably feature complete at this stage, with abilities such as symbolic integration, 3D plotting, and an ODE solver, but there is a lot of work yet to be done in terms of bug fixing, cleanup, and documentation. This is not to say there will be no new features, but there is much work to be done before that stage will be reached, and for now new features are not likely to be our focus. <c>Documentation <q>Where can I read about it? <a> <ul> <li> The impatient should start with LINK(http://maxima.sourceforge.net/referencemanual/maxima_1.html#SEC1, Introduction to Maxima), Section 1 of the Maxima Reference Manual (q.v., below). <li> The Maxima <a href=http://maxima.sourceforge.net/>home page</a> <li> The UT <a href=http://www.math.utexas.edu/mailman/listinfo/maxima>Maxima mailing list</a>. There are also lists established on sourceforge, but as yet they see very little traffic. Most of the action is on the UT list. <li> Mike Clarkson's LINK(http://starship.python.net/crew/mike/maxima/html/macref/,DOE-Maxima Reference Manual) <li> The Maxima Reference Manual: <ul><li> <a href=http://maxima.sourceforge.net/referencemanual/maxima_toc.html>HTML Version</a> <li> <a href=http://maxima.sourceforge.net/referencemanual/maxima.pdf>PDF Version</a> </ul> <li>Michel Gosse's excellent Maxima page at LINK(http://www.maxima.fr.st/). Another good reason to learn French. </ul> <c>Documentation <q>What about the page at utexas.edu? It only shows versions up to 5.6.0? <a> LINK(http://www.ma.utexas.edu/maxima.html) was William Schelter's old home page and is no longer maintained. It does have some screenshots, however, as well as other useful information. <c>General <q>Is it free? <a>Yes. Maxima is distributed under the LINK(http://www.gnu.org/licenses/licenses.html#GPL, GNU General Public License), with some export restrictions from the U.S. Department of Energy. <c>Installing Maxima <q>Where do I get it? <a>[to be added] <c>Installing Maxima <q>What do I need to run it? <a>[to be added] <q>How to get it? <a>Maxima can be downloaded from the LINK(http://maxima.sourceforge.net/,Maxima home page) at Sourceforge. The latest version is 5.9.0. <c>Installing Maxima <q>What Linux Distributions come with Maxima? <a> Vadim Zhytnikov writes: "AFAIK the only two Linux distros which come with Maxima are: <ul> <li> Debian (unstable branch) LINK(www.debian.org) <li> ALT Linux (Master 2.0, Master 2.2) LINK(www.altlinux.com)" </ul> <c>Lisp <q>What LISP implementations will Maxima work with? <a> clisp, CMUCL and GCL are fully supported by Maxima; previous versions of Maxima only fully supported GCL. Ports to other ANSI lisps should be straightforward and are welcome; please contact the developers if you are interested in working on a port. <c>Lisp <q>CLISP <a>clisp includes GNU readline support, so Maxima will have advanced command-line editing facilities when built with it. Get it from LINK(http://clisp.cons.org). Maxima will fail to build with 2.26 because of a bug in clisp. 2.28 and 2.29 are known to work. There are currently unresolved problems with floating point numbers in Maxima with clisp 2.30. 2.29 is recommended. <c>Lisp <q>CMUCL <a> Get it from LINK(http://cmucl.cons.org). CMUCL is the fastest option for Maxima on platforms where it is available. Unfortunately, it does not include readline support. However, readline support can be added by wrapping maxima with the ledit executable. See LINK(ftp://ftp.inria.fr/INRIA/Projects/cristal/Daniel.de_Rauglaudre/Tools/) </a> for ledit. Maxima will build with CMUCL 18c, but will hang on some run-time operations. 18d is known to work. <c>Lisp <q>GCL <a> Get it at <a href=http://savannah.gnu.org/projects/gcl> <http://savannah.gnu.org/projects/gcl></a>. 2.4.4 and 2.5.0 should work. 2.5.0 has not yet been released as of this writing. The cvs version of 2.5.0 has been used to successfully build Maxima. GCL versions starting with 2.4.3 can be built with readline support, so Maxima will have advanced command-line editing facilities when build with it. <c>General <q>What about other symbolic manipulation packages? <a>There are several, although not all are open-source or otherwise free. <ul> <li> LINK(http://www-swiss.ai.mit.edu/~jaffer/JACAL.html,JACAL), GPL'd, based on Scheme <li>LINK(http://yacas.sourceforge.net/yacas.html,YACAS), GPL'd <li>LINK(http://www.synaptics.com/people/daveg/,Calc), the GNU Emacs Calculator. GPL'd. <li> <a href=http://www.strout.net/python/pythonica.html>Pythonica</a> (License unknown; source available at that link) <li> <a href=http://www.scientek.com/macsyma/main.htm>Macsyma</a> <li> <a href=http://www.wolfram.com/products/mathematica/index.html>Mathematica</a> <li> <a href=http://www.maplesoft.com/>Maple</a> </ul> David Holmgren writes: "I've tried [Jacal, Yacas, and Calc] with Windows and Linux. Jacal and Yacas don't have the range of commands that Maxima does, but Calc is a bit more extensive (i.e., has a fairly general integrator)." <c>Emacs <q>How do I enable maxima mode in emacs? <a>Put something like these in your ~/.emacs: <pre> (setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist)) (setq load-path (cons "/usr/share/maxima/5.9.0/emacs" load-path )) (autoload 'maxima "maxima" "Running Maxima interactively" t) (autoload 'maxima-mode "maxima" "Maxima editing mode" t) </pre> Instead of modifying the load path, you could copy all the .el files from /usr/share/maxima/5.9.0/emacs (or wherever) to a site-lisp directory ... [truncated message content] |