Octave è un linguaggio di programmazione ad alto livello per il calcolo matematico, usato fondamentalmente in modo interattivo.
Ha un insieme di funzionalità fornite per il calcolo matriciale come rango e determinante o specialistiche come decomposizione ai valori singolari (SVD), fattorizzazione LU; sebbene le consenta la soluzione numerica di sistemi lineari non svolge calcolo simbolico o altre attività tipiche di un sistema di algebra computazionale.
Viene usato attraverso un terminale a caratteri, come una console virtuale di GNU/Linux, ma per ottenere dei grafici si avvale di Gnuplot che così è opportuno sia installato assieme a Octave.
L'interazione tra Gnuplot e Octave è trasparente, se il secondo viene utilizzato in una finestra di terminale all'interno del sistema grafico X.
In queste sezioni si mostra solo qualche piccolo assaggio di Octave che dispone di ampia documentazione per conto proprio: info octave.
Anche Octave utilizza la libreria Readline per il controllo della riga di comando, con tutti i vantaggi che ciò comporta per l'utilizzatore.
Octave è facilmente estendibile e customizzabile, sia attraverso funzioni scritte nel linguaggio nativo di Octave, sia attraverso moduli caricabili dinamicamente che possono essere scritti in C, C++, Fortran e altri linguaggi.
Per chi utilizza Matlab e cerca un'alternativa funzionale e open source, Octave è senz'altro la scelta migliore.
Nota: Octave è anche disponibile per Mac come parte del progetto Fink. Chi fosse interessato può trovare ulteriori informazioni direttamente sul sito del progetto Fink
Aggiornamenti:
Ultima versione stabile rilasciata: 3.4.0 (08/02/2011)
Novità:
Summary of important user-visible changes for version 3.4: --------------------------------------------------------- ** BLAS and LAPACK libraries are now required to build Octave. The subset of the reference BLAS and LAPACK libraries has been removed from the Octave sources. ** The `lookup' function was extended to be more useful for general-purpose binary searching. Using this improvement, the ismember function was rewritten for significantly better performance. ** Real, integer and logical matrices, when used in indexing, will now cache the internal index_vector value (zero-based indices) when successfully used as indices, eliminating the conversion penalty for subsequent indexing by the same matrix. In particular, this means it is no longer needed to avoid repeated indexing by logical arrays using find for performance reasons. ** Logical matrices are now treated more efficiently when used as indices. Octave will keep the index as a logical mask unless the ratio of true elements is small enough, using a specialized code. Previously, all logical matrices were always first converted to index vectors. This results in savings in both memory and computing time. ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled functions for better performance. These functions are now faster, can deliver more economized results for ranges, and can reuse the index cache mechanism described in previous paragraph. ** The built-in function equivalents to associative operators (`plus', `times', `mtimes', `and', and `or') have been extended to accept multiple arguments. This is especially useful for summing (multiplying, etc.) lists of objects (of possibly distinct types): matrix_sum = plus (matrix_list{:}); ** An FTP object type based on libcurl has been implemented. These objects allow ftp connections, downloads and uploads to be managed. For example, fp = ftp ("ftp.octave.org); cd (fp, "gnu/octave"); mget (fp, "octave-3.2.3.tar.bz2"); close (fp); ** The default behavior of `assert (observed, expected)' has been relaxed to employ less strict checking that does not require the internals of the values to match. This avoids previously valid tests from breaking due to new internal classes introduced in future Octave versions. For instance, all of these assertions were true in Octave 3.0.x but false in 3.2.x due to new optimizations and improvements: assert (2*linspace (1, 5, 5), 2*(1:5)) assert (zeros (0, 0), []) assert (2*ones (1, 5), (2) (ones (1,5))) ** The behavior of library functions `ismatrix', `issquare', and `issymmetric' has been changed for better consistency. * The `ismatrix' function now returns true for all numeric, logical and character 2-D or N-D matrices. Previously, `ismatrix' returned false if the first or second dimension was zero. Hence, `ismatrix ([])' was false, while `ismatrix (zeros (1,2,0))' was true. * The `issquare' function now returns a logical scalar, and is equivalent to the expression ismatrix (x) & ndims (x) == 2 & rows (x) == columns (x) The dimension is no longer returned. As a result, `issquare ([])' now yields true. * The `issymmetric' function now checks for symmetry instead of Hermitianness. For the latter, ishermitian was created. Also, logical scalar is returned rather than the dimension, so `issymmetric ([])' is now true.Elenco completo di tutte le novità
Avvio e interazione normale.
Octave viene avviato attraverso l'eseguibile octave. Bisogna ricordare che se si vogliono disegnare dei grafici deve essere avviato da una finestra di terminale all'interno di X, diversamente basta una console virtuale di GNU/Linux. octave riconosce una serie di opzioni che qui non vengono descritte (eventualmente basta utilizzare il comando octave --help per ottenerne la descrizione) e può eseguire il contenuto di un file se viene indicato come ultimo argomento della riga di comando.
octave [opzioni] [file_di_comandi]
Il file di comandi è uno script contenente semplicemente comandi di Octave, dove in particolare il simbolo # serve a indicare l'inizio di un commento che si conclude alla fine della riga e le righe vuote o bianche vengono semplicemente ignorate.
Eventualmente, uno script di Octave può essere reso eseguibile, purché all'inizio del file venga aggiunta la solita indicazione dell'interprete da utilizzare:
#!/usr/bin/octave
Se Octave viene avviato in modo normale (senza argomenti particolari e senza l'indicazione di uno script da eseguire), si ottiene il funzionamento interattivo normale:
Octave(1) è un linguaggio di programmazione ad alto livello per il calcolo matematico, usato fondamentalmente in modo interattivo. Viene usato attraverso un terminale a caratteri, come una console virtuale di GNU/Linux, ma per ottenere dei grafici si avvale di Gnuplot che così è opportuno sia installato assieme a Octave. L'interazione tra Gnuplot e Octave è trasparente, se il secondo viene utilizzato in una finestra di terminale all'interno del sistema grafico X.
In queste sezioni si mostra solo qualche piccolo assaggio di Octave che dispone di ampia documentazione per conto proprio: info octave.
Anche Octave utilizza la libreria Readline per il controllo della riga di comando, con tutti i vantaggi che ciò comporta per l'utilizzatore.
890.1 Avvio e interazione normale
Octave viene avviato attraverso l'eseguibile octave. Bisogna ricordare che se si vogliono disegnare dei grafici deve essere avviato da una finestra di terminale all'interno di X, diversamente basta una console virtuale di GNU/Linux. octave riconosce una serie di opzioni che qui non vengono descritte (eventualmente basta utilizzare il comando octave --help per ottenerne la descrizione) e può eseguire il contenuto di un file se viene indicato come ultimo argomento della riga di comando.
octave [opzioni] [file_di_comandi]
Il file di comandi è uno script contenente semplicemente comandi di Octave, dove in particolare il simbolo # serve a indicare l'inizio di un commento che si conclude alla fine della riga e le righe vuote o bianche vengono semplicemente ignorate.
Eventualmente, uno script di Octave può essere reso eseguibile, purché all'inizio del file venga aggiunta la solita indicazione dell'interprete da utilizzare:
#!/usr/bin/octave
Se Octave viene avviato in modo normale (senza argomenti particolari e senza l'indicazione di uno script da eseguire), si ottiene il funzionamento interattivo normale:
$
octave
[Invio] Octave, version 2.0.13 (i386-redhat-linux-gnu).
Copyright (C) 1996, 1997, 1998 John W. Eaton.
This is free software with ABSOLUTELY NO WARRANTY.
For details, type `warranty'.
octave:1> _
L'invito di Octave (il prompt) è un po' particolare: mano a mano che si introducono dei comandi si incrementa il numero che appare. Di seguito sono elencati alcuni comandi elementari di Octave; in altre sezioni ne vengono mostrati degli altri.
Comando Descrizione |
Il progetto fu concepito nel 1988 da John W. Eaton (primo manutentore) e da James B. Rawlings presso l'Università del Texas come strumento di calcolo per l'ingegneria chimica. Il suo sviluppo vero e proprio partì da John W. Eaton nel 1992. La prima alpha rilasciata è datata 4 gennaio 1993 e il 17 febbraio 1994 fu rilasciata la versione 1.0. La versione 3.0 è stata rilasciata il 21 dicembre 2007.
Dettagli tecnici.
- Octave è scritto in conformità dello standard POSIX nel linguaggio C++ usando le librerie Standard Template Library.
- Octave utilizza un interprete per il suo linguaggio di scripting.
- Octave è estendibile attraverso moduli o funzioni scritte dall'utente.
- Octave può lavorare assieme a gnuplot e Grace per disegnare funzioni, grafici, tabelle, consentendo di salvarli o stamparli.
Add-on e librerie che si interfacciano con GNU Octave.
- PLplot – Un'alternativa all'uso del tradizionale gnuplot in GNU Octave, rilasciato sotto la licenza GNU LGPL.
- Octave-forge community development page – Toolbox di software libero per vari problemi, fornita da sviluppatori indipendenti. È anche disponibile un installer Windows sia per GNU Octave che per i toolbox.
- Mastrave project – Libreria multi-linguaggio di software libero (coperta da licenza GNU GPLv3+) compatibile con GNU Octave and Matlab, per semplificare la modellistica ambientale con funzioni generali basate sul paradigma (EN) array programming.
- Neuroimaging Analysis Kit – Libreria (comperta da licenza MIT) per il processamento di dati di neuroimaging usando GNU Octave or Matlab, in particolare immagini di risonananza magnetica funzionale. Sistema pipeline per gestire proccessamenti multi-stage.
- Parallel Matlab Toolbox fornisce un insieme di strutture dati e funzioni in linguaggio MATLAB che implementano array MATLAB distribuiti. È rilasciato con licenza MIT.
- OctPlot – Grafica 2D di alta qualità (su schermo e in postscript). Rilasciata sotto GNU GPL.
- Add-on grafico per GNU Octave – Sistema di visualizzazione 3D per GNU Octave.
- Octaviz – Sistema di visualizzazione 3D per GNU Octave (wrapper che rende accessibili le classi VTK dall'interno di GNU Octave). Fornisce anche funzioni di alto livello per la visualizzazione 2D.
- MPI Toolbox per Octave (MPITB) – Calcolo parallelo per GNU Octave, tramite MPI.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog: