Software I like: Numerical and symbolic computation
General |
Finite-element |
Discrete-element |
Block-diagram |
Electronics |
Statistics |
Symbolic
These are open-source alternatives to MATLAB.
Latest version numbers and dates are as of 2010 Jan 31,
unless otherwise noted.
- GNU Octave:
for Linux, Windows and Mac OS X.
(As of 2025 Jun 24, the latest version is 10.2.0, dated 2025 May 29.)
The Octave language is ‘quite similar’ to that of MATLAB.
-
Discussions are held primarily at
octave.discourse.group,
with an optional
mailing-list mode;
there are also the old
help-octave and
octave-maintainers e-mail lists.
See also
Guidelines for reporting a new bug.
- See
Any short texts … (2025 Mar 17) for suggestions for
introductions to Octave.
- Differences from MATLAB.
See
Differences between Octave and Matlab.
- Comments. Comments can be indicated by
either
%
(as in MATLAB) or #
.
See related
documentation and
style guide.
- Quotation marks.
Text strings can be enclosed in either single or double quotation
marks.
‘Since the single-quote mark is also used for
the transpose operator … but double-quote marks
have no other purpose in Octave, it is best to use
double-quote marks to denote strings’
(ref).
However, single quotation marks must be used in strings containing
‘\’ characters that are intended for use by the
tex interpreter.
- Graphics toolkits.
Octave uses
gnuplot
,
fltk
and qt
as graphics backends
(or ‘toolkits’);
fltk
and qt
are both OpenGL toolkits.
The command available_graphics_toolkits()
lists which backends are available, and the command
graphics_toolkit()
can be used to
ask about or set the default backend.
Asking to set either gnuplot
or fltk
will produce a message saying why it’s a bad idea
and recommending use of qt
.
- Renderers.
figure properties related to
printing and saving include
renderer
, which can be either
opengl
(the default) or painters
.
The print command (which includes saving to a file)
has the corresponding options
-opengl
(or -image
) for pixel-based rendering, and
-painters
(or -vector
) for vector-based rendering.
When the figure property rendermode
is set to
auto
(the default), the appropriate renderer
will be used for raster formats (e.g., PNG and JPEG) and
vector formats (e.g, SVG and PDF).
These only apply to the qt
graphics toolkit.
The terminology is confusing because ‘paint’
is generally used
for pixel-based graphics, as opposed to ‘draw’
for vector-based graphics.
- Interpreters.
The value of the
interpreter
property
(none
, tex
or latex
)
‘determines the manner in which special control sequences
in the text are rendered’
(ref).
‘The current graphic toolkits
[actually interpreters] produce very similar
graphic displays,
but differ in their capability to display unusual text and in their
ability to print such text. In general, the "tex" interpreter
(default) is the best all-around performer for both on-screen display
and printing. However, for the reproduction of complicated text
formulas the "latex" interpreter is preferred’
(ref).
The
latex interpreter requires the presence of
an external LaTeX tool chain.
The
none interpreter can be used to suppress
interpretation of special characters
(e.g., ‘_’ in file names).
- Some of the linear-algebra libraries used by Octave are
compiled for 32-bit integers, but there is a Windows installer
(e.g.,
octave-7.2.0-w64-64-installer.exe
)
with a version of Octave compiled with 64-bit integers,
allowing larger arrays (ref).
- The following information is rather old.
- Octave-Forge
is ‘a central location for the collaborative development
of packages for GNU Octave’. A Windows installer is
provided which includes all or most of the packages, including
a Windows package which provides
a COM interface and additional functionality under Windows,
including ActiveX support with
actxserver
.
There have been some moves toward absorbing Octave-Forge
into the GNU Octave Web site (cf.
blog post by Carnë Draug, 2012 Aug 2, and a mock-up
of the proposed
agora.octave.org).
-
GUI development is possible within Octave;
it works best with
qt
, to some extent
with fltk
, and not at all with
gnuplot
(ref).
- See Henry Gomersall’s
Squishing Matlab mex files into Octave
for how to use a precompiled
.mex
file with
Octave under Linux when you don't have the source code.
A hint but no complete solution is offered for MS Windows.
- FreeMat:
for Linux, Windows and Mac OS X
(as of 2016 Aug 30, latest version = 4.2, dated 2013 Jun 30).
Syntax is based on that of MATLAB.
- Scilab:
for Linux, Windows and Mac OS X
(latest version = 5.2, dated 2009 Dec 17)
Scilab
traces its history to the original, public-domain version of MATLAB.
With the development of the Java-based Scilab 5,
a fork based on Scilab 4 was launched and became
ScicosLab.
- SciPy.
A Python library, making use of the
NumPy library.
See here
and here
for comparisons with MATLAB and other software.
Open-source, multi-platform.
As of 2011 Jan 17, latest version is 0.9.0b1 dated 2010 Dec 12.
- rlabplus:
for Linux
(latest version = 2.2.11.9 dated 2009 May 28)
- JMathLib:
supported primarily for Windows, but written in Java
so should be portable
(latest version = 0.9.4, 2009 Feb 22)
The following is a selection of the many available lists and discussions
of MATLAB alternatives, some rather dated:
See Finite-element software
This topic is here taken to include discrete particle modelling,
agent-base modelling, molecular dynamics, and whatever else might fit.
Modelica is a
model-description language.
See the on-line book
Modelica by Example
by Michael M. Tiller.
Modelica is used in OpenModelica, Scicos
and many other packages.
OpenModelica:
open-source, aims to be a complete reference implementation,
not necessarily as efficient and scalable as the commercial
implementations of Modelica.
Includes a nice graphical connection editor.
-
Good for time-domain simulations; I don't know if there's
any way to do frequency-domain calculations, although
other Modelica implementations have been used for that.
-
Local copies of the documentation are in
share/doc/
, including the User Guide in the
omc/
subdirectory.
-
The
Modelica Standard Library
, which can be
downloaded as a .zip file from
https://www.modelica.org/libraries/Modelica, is
included (as a .zip file) in OpenModelica in
lib/omlibrary/mslxx/
.
There is a
linear systems library that
does frequency responses, among other things.
There's no built-in way of including extra libraries in OMEdit,
but there's a
work-around (that I don't understand).
-
Signal sources, for example, can be found in the
panel at
.
-
For some errors, look at the file
SanityCheckFail.mo
.
Under MS Windows it's in c:\Users\username\AppData\Local\Temp\OpenModelica\OMEdit\
.
-
In the modelling tab, right-click on an object to change its
parameters. To change the simulation parameters (e.g., total time),
do
or click on the corresponding icon on the Simulation toolbar.
If the box is checked,
a simulation will be run when you click on
.
-
By default, plots have time on the horizontal axis.
To plot one variable against
another, use the on
the Plot toolbar. Select the variable for the horizontal axis followed
by the variable for the vertical axis.
- Graphical custom components can be created by specifying
Icon
and Diagram
views using
graphical annotations.
- JModelica.org is
‘an extensible Modelica-based open source platform for
optimization, simulation and analysis of complex dynamic systems’,
aiming both to be ‘industrially viable’ and to
serve as an R&D platform for algorithm development.
It is based on Java, Eclipse and Python.
- Scicos,
a block-diagram modeller/simulator,
was originally developed under Scilab.
‘Due to stability and performance problems with Scilab 5,
Scicos is now only developed in and for ScicosLab.’
(Based on
Scicos history)
- Wokwi
‘is an online Electronics simulator … to simulate
Arduino, ESP32, STM32, and many other popular boards,
parts and sensors.’
It is ‘free to use’, with a paid ‘Club’
that allows private projects to be unlisted, among other things.
- Autodesk Tinkercad
‘is a free web app for 3D design, electronics, and coding.’
Some of the software listed above can be used for statistics. The following
are popular specialized statistical packages. I haven’t used them myself.
- R
‘is a system for statistical computation and graphics.
It consists of a language plus a run-time environment with graphics,
a debugger, access to certain system functions,
and the ability to run programs stored in script files’.
It can be
run from within Emacs.
Alternative interfaces include
R Commander
and RStudio.
- PSPP
‘is a Free replacement for the proprietary program SPSS,
and appears very similar to it with a few exceptions’.
- Axiom
(including original Axiom, OpenAxiom and FriCAS)
- Maxima
R. Funnell
Last modified: 2025-06-28 21:55:34