[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal verwenden] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./octave_logo.png, 48, align=left)]] [https://www.gnu.org/software/octave/ GNU Octave] {en} ist eine interaktive [wikipedia:Skriptsprache:] zur Lösung von Problemstellungen aus dem Bereich der [wikipedia:Numerische_Mathematik:]. Die Syntax von Octave ist weitgehend mit der des bekannten proprietären Mathematikprogramms [:Matlab:] identisch. Octave kann auch komplexe Grafiken in 2D und 3D ausgeben. Zur grafischen Darstellung können verschiedene [wikipedia:Funktionenplotter:] verwendet werden. Neuere Versionen bringen eine komplette Entwicklungsumgebung mit. Einsatzgebiete von Octave sind unter anderem: * Allgemeine Berechnungen mit Vektoren und Matrizen * Matrixoperationen wie Indizierung und Slicing, Bildung der Inverse, Zerlegungen und Eigenwerte * Lösung linearer Gleichungssysteme * Entwicklung und Simulation von regelungstechnischen Systemen * Datenauswertung und Darstellung der Ergebnisse in Diagrammform = Installation = Um mit Octave arbeiten zu können, müssen folgende Pakete installiert [1] werden: {{{#!vorlage Paketinstallation octave, universe octave-doc, universe, Dokumentation der Skriptsprache, liegt nach der Installation im Ordner '''/usr/share/doc/octave-doc''' gnuplot, universe, [:Gnuplot:] für 2D- und 3D-Grafiken }}} Des Weiteren gibt es noch eine ganze Reihe von Erweiterungen für Octave für verschiedene Anwendungsgebiete in den Paketquellen. Eine Übersicht erhält man, wenn man in der [https://packages.ubuntu.com Ubuntu Paketsuche] {en} nach dem Suchbegriff ''"octave"'' sucht. = Benutzung = Octave kann über eine grafische Oberfläche oder auch im Terminal ausgeführt werden. Die grafische Oberfläche bietet noch einige Zusatzfunktionen. == Graphische Ausgabe == Mit Octave lassen sich mathematische Elemente, beispielsweise Funktionen, auch sehr einfach grafisch ausgeben. Dazu wird ein Funktionsplotter verwendet. Der Standardplotter unter Octave (aber auch bei vielen anderen Linux-Programmen) ist [:Gnuplot:]. Mit diesem Programm können sowohl 2D- als auch 3D-Grafiken ausgegeben werden. Grafiken werden durch den Aufruf des Befehls `plot` (für 2D-Grafiken) oder `mesh` (für 3D-Grafiken) angezeigt. Durch weitere Parameter lassen sich verschiedene Eigenschaften wie Linienstärke, Form (z.B. als einzelne Punkte) oder Farbe auswählen. Bei 2D-Objekten kann auch ein Gitternetz mit Hilfslinien eingeblendet werden. Außerdem kann man die Achsen beschriften und dem Bild einen Titel zuweisen. {{{#!vorlage Tabelle 2D-Ausgabe einer Funktion <:>3D-Ausgabe einer Funktion +++ [[Bild(./octave_2d_quantal.png, 300)]] [[Bild(./octave_3d_quantal.png, 300)]] +++ ``x = -10:.1:10;`` [[BR]]``y = sin(x).*exp(-abs(x));`` [[BR]]``plot(x,y);`` [[BR]]``grid;`` ``x = -3 : .1 : 3;`` [[BR]]``y = -3 : .1 : 3;`` [[BR]]``[xx, yy] = meshgrid(x, y);`` [[BR]]``z = exp(-xx.^2 - yy.^2);`` [[BR]]``mesh(x, y, z);`` }}} == Interaktiver Text-Modus == Das installierte Programm wird im Terminal [5] mit dem Befehl '''octave''' gestartet. Bei der Arbeit in diesem interaktiven Modus wird jeder Befehl einzeln eingegeben. Nach einem Druck auf [[Vorlage(Tasten, return)]] wird die soeben eingegebene Zeile sofort interaktiv verarbeitet und evtl. eine Ausgabe erzeugt. In folgendem einfachen Beispielaufruf wird eine Matrix und ein Vektor definiert und anschließend eine Multiplikation durchgeführt: {{{#!vorlage Befehl octave:1> A = [1 3 5; 2 4 6; 7 8 1]; octave:2> b = [0.5; 3.5; 7]; octave:3> c = A*b c = 46.000 57.000 38.500 }}} Die genaue Anweisungs-Syntax und viele hilfreiche Berechnungsbeispiele finden sich in den [#links Links]. Aufgrund der hohen Kompatibilität kann aber auch jedes MATLAB Buch hilfreich sein. == Erstellung und Aufruf von Skripten == Bei größeren Berechnungen ist es meist sinnvoller, die Befehle in einer Textdatei abzuspeichern, anstatt alles manuell einzugeben. Diese Skripte haben sowohl unter Matlab als auch bei Octave die Endung '''.m''' und können direkt aus dem interaktiven Modus von Octave oder z.B. [#gedit mit einem Editor] aufgerufen werden. Dazu muss Octave allerdings im Verzeichnis des Skripts gestartet sein, oder das Arbeitsverzeichnis von Octave manuell mit dem Befehl '''cd ORDNER''' verändert werden. Zum Aufruf gibt man nur den Namen des Skripts ohne Endung ein. In diesem Beispiel wird '''Berechnung.m''' im Unterordner '''Skripte''' aufgerufen: {{{#!vorlage Befehl octave:1> cd Skripte octave:2> Berechnung }}} Funktionen, die in einem Skript des Arbeitsverzeichnisses definiert sind, stehen darüber hinaus automatisch zur Verfügung und müssen nicht gesondert geladen werden. Für den einmaligen Aufruf eines Skripts aus dem Terminal kann Octave der Dateiname auch direkt als Startparameter übergeben werden: {{{#!vorlage Befehl octave Skripte/Berechnung.m }}} == Suchpfad anpassen == Arbeitet man viel mit Octave-Skripten, möchte man eventuell ein Skript-Verzeichnis festlegen, aus dem die Skripte direkt aufgerufen werden können. Dazu muss man die Skripte in ein Verzeichnis z.B. nach '''~/octave-scripts''' legen und die Datei '''~/.octaverc''' anlegen mit folgendem Inhalt: {{{addpath("~/octave-scripts") }}} Die Skripte aus diesem Verzeichnis sind dann direkt (ohne die Endung .m) aufrufbar, egal, in welchem Verzeichnis man sich gerade befindet. Für obiges Beispiel würde nun also folgendes funktionieren, egal in welchem Verzeichnis man sich gerade befindet: {{{#!vorlage Befehl octave:1> Berechnung }}} [[Anker(gedit)]] == Aufruf durch gedit == Octave-Skripte können direkt in [:gedit:] inklusive Syntax-Hervorhebung bearbeitet und direkt aus Gedit heraus aufgerufen werden. Dazu muss man zunächst unter ''"Einstellungen -> Erweiterungen"'' den Punkt ''"Externe Werkzeuge"'' aktivieren. Danach kann die Erweiterung in Gedit unter ''"Externe Werkzeuge verwalten"'' aktiviert werden. Die richtige Konfiguration und Benutzung kann dem Bildschirmfoto entnommen werden. [[Bild(./octave_settings.png, 642, center)]] Im Textfeld tippt man die folgenden Zeilen ein: {{{#!code bash #!/bin/sh octave -q $GEDIT_CURRENT_DOCUMENT_NAME }}} Falls die korrekte Syntax-Hervorhebung nicht automatisch aktiviert wurde, findet man sie in der Kategorie ''"Ansicht -> Hervrohebungsmodus -> Octave"''. = Erweiterungen = == Octave-Forge == [https://octave.sourceforge.io/ Octave-Forge] {en} stellt eine enorme Menge an nützlichen Zusatzpaketen für Octave zur Verfügung. Die Fülle der Erweiterungs-Möglichkeiten reicht von A wie Audio-Verarbeitung bis Z wie [:Zenity:]-Integration. Zusatzpakete können entweder über die offiziellen Paketquellen (oftmals veraltet!) oder auch leicht direkt aus der Octave-Eingabeaufforderung (Prompt) heraus nach- und auch wieder deinstalliert werden. Die Installation eines [https://octave.sourceforge.io/packages.php heruntergeladenen Archivs] {dl} in das [:Homeverzeichnis:] kann mit folgendem Octave-Befehl vorgenommen werden: {{{#!vorlage Befehl octave:1> pkg install ARCHIVNAME.tar.gz }}} Um ein Zusatzpaket wieder zu deinstallieren, geht man wie folgt vor: {{{#!vorlage Befehl octave:1> pkg uninstall ARCHIVNAME }}} Ausführliche Informationen zur manuellen In- und Deinstallation von Zusatzpaketen sind in der [https://www.gnu.org/software/octave/doc/interpreter/Installing-and-Removing-Packages.html#Installing-and-Removing-Packages Dokumentation] {en} nachzulesen. = Links = * [https://www.gnu.org/software/octave/ Homepage von Octave] {en} - mit FAQ und Wiki * Offizielles Octave Handbuch (Reference Manual): [https://www.gnu.org/software/octave/doc/interpreter/ HTML] {en}, [https://www.gnu.org/software/octave/octave.pdf PDF] {en} {dl} * [sourceforge2:octave:Octave-Forge] {en} - Zusatzpakete für Octave * [wikipedia:GNU_Octave:Wikipedia] == Tutorials == * [http://calliope.dem.uniud.it/CLASS/ING-AMB/2018/GNU-Octave-for-beginners.pdf GNU Octave Beginner's Guide] {en} (PDF) 2011 * [https://www.uni-koblenz.de/~agas/lehre/ss03/sfm/octave/octave-tutorial.pdf Einführung in GNU Octave] {de} (PDF) - 05/2003 * [http://www.christianherta.de/octaveMatlabTutorial.html Octave/MATLAB] {de} - Kurzes Tutorial # tag: Bildung, Mathematik, Statistik