GNU Octave

GNU Octave

Octave Visualisierung
Basisdaten

MaintainerJohn W. Eaton
EntwicklerJohn W. Eaton
Erscheinungsjahr1988
Aktuelle Version9.2.0[1]
(7. Juni 2024)
BetriebssystemGNU/Linux, macOS, Solaris, Unix, OS/2, Windows
Programmier­spracheC++[2]
KategorieMathematik, Regelungstechnik, Modellbildung
LizenzGNU General Public License, Version 3.0 oder später[3][4], GNU General Public License, Version 2.0 oder später[5]
octave.org

GNU Octave [ˈɒktɪv] ist eine freie Software zur numerischen Lösung mathematischer Probleme, wie zum Beispiel Matrizenrechnung, Lösen von (Differential-)Gleichungssystemen, Integration etc. Berechnungen können in Octave mit einer Skriptsprache durchgeführt werden, die weitgehend zu dem proprietären Matlab und zum ebenfalls freien FreeMat kompatibel ist.

Geschichte

Das Konzept von Octave entstand 1988. Es war zunächst als Begleitsoftware für ein studentisches Lehrbuch für chemische Reaktoren geplant, das von James B. Rawlings (University of Wisconsin–Madison) und John G. Eherdt (University of Texas) geschrieben wurde. Alternativ hätte Fortran diesem Zweck dienen können, da dieses als technische Programmiersprache besonders geeignet zu sein schien. Allerdings stellte sich heraus, dass Studenten viel mehr Zeit dafür investieren mussten, mit der Sprache zurechtzukommen und nach den Fehlern im Code zu suchen, als im Chemieingenieurwesen etwas dadurch zu lernen[6].

Zunächst wurden spezielle Werkzeuge zur Lösung von Konstruktionsproblemen chemischer Reaktoren realisiert. Als die Entwickler erkannten, dass Octave zur Lösung weiterer Probleme einsetzbar sein könnte, entschied man sich, es zu einem flexibleren Programm weiterzuentwickeln. Sie beschlossen daher, ein interaktives Umfeld für das Programm zu schaffen, in dem man die Grundlagen innerhalb kürzester Zeit erlernen könnte. Das Ziel der Entwicklung war, anspruchsvolle Berechnungen sehr einfach zu gestalten.

Die Vollzeitentwicklung durch John W. Eaton begann im Frühling 1992 und die erste Alpha-Version erschien am 4. Januar 1993. Seitdem wurde GNU Octave mehrmals grundlegend überarbeitet und ist inzwischen in den meisten Linux-Distributionen integriert.

Für die Free Software Foundation war die Weiterentwicklung von Octave zu einem freien MATLAB-Ersatz bis Januar 2017 eines von ca. einem dutzend „High Priority Projects“.[7][8]

Technische Eigenschaften

Implementiert ist Octave in C++, erweiterbar ist es aber auch durch Module, die in Octave selbst oder in anderen Sprachen verfasst wurden, zum Beispiel Fortran, C oder C++. Für die grafische Ausgabe von 2D- und 3D-Plots wird ab der Version 4.0.0 voreingestellt ein integriertes grafisches Toolkit auf der Basis von Qt (Bibliothek) verwendet. Das in früheren Versionen verwendete gnuplot und FLTK kann aber weiterhin benutzt werden, daneben gibt es alternative Grafikpakete.

Ein großer Vorteil bei Octave ist die Anpassungsfähigkeit an jeden Rechner. So lässt sich zum Beispiel der volle Adressraum auch bei 64-Bit-Rechnern nutzen.

Andersherum sind auch alle Octave-Bibliotheken in C++-Programmen nutzbar, sodass Octave auch eine numerische Bibliothek für C++ darstellt.

MATLAB-Kompatibilität

Die von MATLAB abgeleitete Skriptsprache von GNU Octave ist überwiegend kompatibel, teilweise zu dieser erweitert. Die Funktionskompatibilität von GNU Octave zur Basisversion von MATLAB (ohne Toolboxen) ist ebenfalls überwiegend gegeben. Fast vollständige Kompatibilität zu MATLAB lässt sich durch das Zusatzpaket octave-forge und andere freie Ersatzfunktionen des Mathworks FileExchange erreichen. Auch für MATLAB geschriebene externe MEX-Funktionen in C oder C++ lassen sich oft ohne Code-Anpassungen für Octave kompilieren und verwenden.

Octave verwendet als Bibliothek für Vektor- und Matrixoperationen BLAS, optional in der OpenBLAS oder ATLAS-Variante, wogegen MATLAB inzwischen auf die kommerzielle BLAS-Variante MKL von Intel setzt.

Grafische Benutzerschnittstellen (GUI)

Ab der Version 4.0.0 wird GNU Octave mit einer eigenen, auf dem Qt-Toolkit basierenden, grafischen Oberfläche (GUI) ausgeliefert. Bereits die Version 3.8.0 verfügte über die damals experimentelle GUI. Allerdings war diese nicht standardmäßig aktiviert und konnte mit octave --force-gui gestartet werden. Octave kann weiterhin auch kommandozeilenbasiert bedient werden, da das Command Window eine vollständige Terminalemulation anbietet.

Inoffizielle GUIs von Drittanbietern

  • Cantor (Linux) – Benutzeroberfläche für GNU Octave, Sage, Maxima, R und KAlgebra.
  • Xoctave (Windows, Linux) – Xoctave kapselt GNU Octave unter Verwendung von Pipes und zusätzlichen Werkzeugen ein, um die Anwendung einfacher zu gestalten. Früher freie Software, mittlerweile proprietär.
  • Octavenb – Einbindung von GNU Octave in NetBeans IDE, unterstützt SVN, mehrsprachig, Lizenz: GPL-2.0
  • QtOctave (Windows, Linux) – Grafische Erweiterung, Weiterentwicklung wurde zugunsten der in Version 3.8 erschienenen, offiziellen GUI eingestellt
  • Anoc (Android) – Benutzeroberfläche für GNU Octave. Die Berechnungen werden für bessere Performance auf einem dedizierten Server ausgeführt
  • LyX ist ein freies Textverarbeitungssystem mit LaTeX-basiertem Formelsatz und LaTeX-Ausgabe. In die Dokumente können auch Rechnungen eingebettet werden, via Octave oder Computer Algebra Systemen (CAS) wie Maple, Maxima und Mathematica.

Benutzerschnittstellen als Web-interface

Entwicklungshistorie

ZeitEreignis
1988/1989Erste Diskussionen (Lehrbuch und Software)
Februar 1992Beginn der Entwicklung
Januar 1993Ankündigung im Web (Version 0.60)
Februar 1994Erste Veröffentlichung (Version 0.6.x bis 1.x.x)[9]
Dezember 1996Zweite größere Veröffentlichung (Version 2.0.x) mit Übertragung auf Windows (Cygwin)[10]
März 1998Version 2.1
November 2004Version 2.9 (Sprung in Vorbereitung zur Veröffentlichung von 3.0)[11]
Dezember 2007Veröffentlichung der Version 3.0 (größere Aktualisierung)[12]
Juni 2009Veröffentlichung der Version 3.2 (größere Aktualisierung)[13]
8. Februar 2011Version 3.4.0 (größere Aktualisierung)[14]
22. Februar 2012Veröffentlichung von Octave 3.6.1 (größere Aktualisierung)[15][16]
31. Dezember 2013Veröffentlichung von Octave 3.8.0 (experimentelle GUI)[17][18][19]
29. Mai 2015Version 4.0.0 (stabiles GUI und erweiterte Syntax für OOP)[20][21][22][23]
14. November 2016Version 4.2.0 (gnuplot 4.4+)[24][25][26][27]
30. April 2018Version 4.4.0 (neue Hauptrichtung für GUI QT Toolkit, FLTK sekundär)[28][29][30]
1. März 2019Veröffentlichung von Octave 5.1.0 (QT5 präferiert)[31][32]
26. November 2020Veröffentlichung von Octave 6.1.0 (major release)[33]
6. April 2022Veröffentlichung von Octave 7.1.0 (verbesserte Matlab-Kompatibilität)
28. Juli 2022Octave 7.2.0
2. November 2022Octave 7.3.0
7. März 2023Octave 8.1.0 (Grafik-Backend und Matlab-Kompatibilität verbessert)
13. April 2023Octave 8.2.0
8. August 2023Octave 8.3.0
5. November 2023Octave 8.4.0
14. März 2024Octave 9.1.0

Siehe auch

Commons: GNU Octave Diagramme – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. GNU Octave 9.2.0 Released. 7. Juni 2024 (abgerufen am 10. Juli 2024).
  2. GNU Octave. In: Open Hub. (abgerufen am 25. Januar 2021).
  3. hg.savannah.gnu.org.
  4. ftp.gnu.org.
  5. hg.savannah.gnu.org.
  6. About-Page Octave. Abgerufen am 27. Oktober 2017 (englisch).
  7. Matt Lee: High Priority Free Software Projects. www.fsf.org, 2. März 2012, abgerufen am 14. Juli 2012 (englisch): „GNU Octave, free software Matlab replacement“
  8. Changelog for the High Priority Projects list
  9. gnu.org
  10. gnu.org
  11. gnu.org
  12. gnu.org
  13. gnu.org
  14. gnu.org
  15. gnu.org
  16. gnu.org
  17. gnu.org
  18. gnu.org
  19. gnu.org
  20. gnu.org
  21. gnu.org
  22. gnu.org
  23. gnu.org
  24. Release Notes Version 4.2.0 (Memento vom 19. November 2016 im Internet Archive)
  25. gnu.org
  26. gnu.org
  27. gnu.org
  28. gnu.org
  29. gnu.org
  30. gnu.org
  31. gnu.org
  32. heise.de
  33. gnu.org

Auf dieser Seite verwendete Medien

Gnu-octave-logo.svg
Autor/Urheber: Developer of GNU Octave: John W. Eaton, Lizenz: GPL
Logo of GNU Octave
GNUOctave430.png
Autor/Urheber: Alexander Wilms, Lizenz: CC BY-SA 4.0
Screenshot of GNU Octave's Qt GUI (version 4.3.0+)