Maxima
Developer(s)Macsyma group at Project MAC and volunteer contributors
Initial release1982 (1982)
Stable release
5.47.0[1] Edit this on Wikidata / 1 June 2023 (1 June 2023)
Repository
Written inCommon Lisp
Operating systemCross-platform
TypeMathematical software
LicenseGPL
Websitemaxima.sourceforge.io

Maxima (/ˈmæksɪmə/) is a computer algebra system (CAS) based on a 1982 version of Macsyma and is still in development today. It is written in Common Lisp and runs on all POSIX platforms such as macOS, Unix, BSD, and Linux, as well as under Microsoft Windows and Android. It is free software released under the terms of the GNU General Public License (GPL).

History

Maxima is based on a 1982 version of Macsyma, which was developed at MIT with funding from the United States Department of Energy and other government agencies. A version of Macsyma was maintained by Bill Schelter from 1982 until his death in 2001. In 1998, Schelter obtained permission from the Department of Energy to release his version under the GPL. That version, now called Maxima, is maintained by an independent group of users and developers. Maxima does not include any of the many modifications and enhancements made to the commercial version of Macsyma during 1982–1999. Though the core functionality remains similar, code depending on these enhancements may not work on Maxima, and bugs which were fixed in Macsyma may still be present in Maxima, and vice versa. Maxima participated in Google Summer of Code in 2019 under International Neuroinformatics Coordinating Facility.[2]

Symbolic calculations

Like most computer algebra systems, Maxima supports a variety of ways of reorganizing symbolic algebraic expressions, such as polynomial factorization, polynomial greatest common divisor calculation, expansion, separation into real and imaginary parts, and transformation of trigonometric functions to exponential and vice versa. It has a variety of techniques for simplifying algebraic expressions involving trigonometric functions, roots, and exponential functions. It can calculate symbolic antiderivatives ("indefinite integrals"), definite integrals, and limits. It can derive closed-form series expansions as well as terms of Taylor-Maclaurin-Laurent series. It can perform matrix manipulations with symbolic entries.

Maxima is a general-purpose system, and special-case calculations such as factorization of large numbers, manipulation of extremely large polynomials, etc. are sometimes better done in specialized systems.

Numeric calculations

Maxima specializes in symbolic operations, but it also offers numerical capabilities[3] such as arbitrary-precision integer, rational number, and floating-point numbers, limited only by space and time constraints.

Programming

Maxima includes a complete programming language with ALGOL-like syntax but Lisp-like semantics. It is written in Common Lisp and can be accessed programmatically and extended, as the underlying Lisp can be called from Maxima. It uses gnuplot for drawing.

For calculations using floating point and arrays heavily, Maxima has translators from the Maxima language to other programming languages (notably Fortran), which may execute more efficiently.

Interfaces

Screenshot of the wxMaxima interface for Maxima

Various graphical user interfaces (GUIs) are available for Maxima:

Examples of Maxima code

Basic operations

Arbitrary-precision arithmetic

bfloat(sqrt(2)), fpprec=40;

Function

f(x):=x^3$
f(4);

Expand

expand((a-b)^3);

Factor

factor(x^2-1);

Solving equations

solve(x^2 + a*x + 1, x);

Solving equations numerically

find_root(cos(x) = x, x, 0, 1);

bf_find_root(cos(x) = x, x, 0, 1), fpprec = 50;

Indefinite integral

integrate(x^2 + cos(x), x);

Definite integral

integrate(1/(x^3 + 1), x, 0, 1), ratsimp;

Numerical integral

quad_qags(sin(sin(x)), x, 0, 2)[1];

Derivative

diff(cos(x)^2, x, 3);

Limit

limit((1+sinh(x))/exp(x), x, inf);

Number theory

primes(10, 20);

fib(10);

Series

sum(1/x^2, x, 1, inf), simpsum;

Series expansion

taylor(sin(x), x, 0, 9);

niceindices(powerseries(cos(x), x, 0));

Special functions

bessel_j(0, 4.5);

airy_ai(1.5);

See also

References

  1. "Announcing 5.47.0". 1 June 2023. Retrieved 2 June 2023.
  2. "GSOC 2019 completed successfully » Belgian Neuroinformatics".
  3. Barnes, David J. & Chu, Dominique (2010). "Chapter 5". Introduction to Modeling for Biosciences. Springer. ISBN 978-1-84996-325-1.
  4. "wxMaxima, a document based interface for the computer algebra system Maxima". Retrieved 2021-11-29.
  5. "Maxima-Jupyter". GitHub. 13 October 2021.
  6. "GMaxima :: Home". Archived from the original on 2018-07-28. Retrieved 2014-04-02.
  7. "Cantor". cantor.kde.org. Retrieved 2020-01-15.
  8. "Kayali download". SourceForge. Retrieved 2015-05-31.
  9. "Flathub—An app store and build service for Linux". flathub.org. Retrieved 2019-09-27.
  10. Mårtenson, Elias (2019-08-27), GitHub - lokedhs/maxima-client: Maxima client., retrieved 2019-09-27

Further reading

  • Timberlake, Todd Keene; Mixon Jr., J. Wilson (2015). Classical Mechanics with Maxima. Springer. ISBN 978-1-4939-3206-1.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.