Linux is used on supercomputing clusters, embedded scientific equipment, as a programming environment for scientific programming and a myriad of other uses. Scientific Linux is a clone of the Red Hat Enterprise Linux distribution and is a baseline Linux distribution for a variety of physics laboratories around the world. Linux programmers can take advantage of a number of scientific libraries, including:
- FFTW -- The Fastest Fourier Transform in the West, which is a library for computing discrete Fourier transforms. It's useful for signal processing, quantum mechanics, and any field dealing with waves.
- GSL -- The GNU Scientific Library is a numerical library for C/C++ that contains built-in functionality for random numbers, statistical distributions, matrix mathematics, complex numbers, and more.
- Galois Field Arithmetic Library -- A library for computing Galois fields, which are useful for things related to electronic communications systems such as cryptography and error-correcting codes.
Maxima is a GPL-licensed computer algebra system that is similar to commercial products such as Mathematica and Maple. It can be used to do integration, differentiation, matrix mathematics, solve differential and linear equations, factor and expand polynomial expressions, and plot the results of functions and data in both two and three dimensions. It is available in source format and as a Windows executable or RPM package for Fedora Core 2, and can also be accessed online. Documentation can be found on Maxima's Web site.
Octave complements symbolic algebra programs like Maxima by performing numerical calculations. Octave is both an environment for performing numerical calculations and an interpreted programming language. In Linux systems, running
octave from the command line opens up an Octave shell where Octave commands can be entered and evaluated. The default Octave package is able to perform matrix and vector mathematics, numerically solve differential equations, and plot data utilizing Gnuplot. Its language is mostly compatible with the language used in the commercial product Matlab and therefore can be used interchangeably with Matlab in most situations. Octave should be able to run most Matlab add-on packages. Additionally, users can create there own add-on packages to add functionality to Octave. Among the packages in The GNU Octave Repository are a variety of add-ons for specialized fields.
Octave is available in the base packages of many Linux distributions, including Fedora Core and Red Hat Enterprise Linux, and for Windows.
TeX and LaTeX
Word processing programs are ill-suited to producing high-quality documentation for subjects requiring intensive use of mathematical formulas. TeX (the typesetting language) separates content creation from typesetting issues such as font size, title page layout, and margins. TeX is similar to HTML in that text is marked up and processed to produce a document. LaTeX has other nice features as well, such as automatically creating properly formated title pages and reference sections.
A TeX document is processed by the LaTeX program to produce a variety of formats, include DVI, PostScript, PDF, and HTML. Many Linux distributions, including Fedora Core, include LaTeX programs in the base distribution. On Windows systems, MiKTeX can be used to process TeX documents.
After a moderate learning curve, it is easier and quicker to create professional-looking documents in LaTeX than it is in traditional word processing programs. Powerful features like BibTeX make keeping track of long lists of references and creating bibliographies easy. A variety of style documents are available, including REVTeX for use with publications submitted to the American Physical Society. Samples of TeX documents can be found in a variety of places, including the e-Print archives, which contain a collection of scientific publications for review, many of which contain the source TeX files.
The OpenScience Project maintains a comprehensive listing of openly available scientific software packages. It is contains packages for a wide range of disciplines, including, but not limited to, mathematics, astronomy, anthropology, and archeology. It makes it easy to find software for specialized scientific fields.