GNU Octave

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
GNU Octave
Octave Sombrero.svg

Octave session.png
GNU Octave

Dezvoltator John W. Eaton
Versiune inițială 1988
Ultima versiune 3.2.3 (21 Septembrie 2009)
Scris în C++
Sistem de operare Cross-platform
Limbă 19 limbi
Tip Scientific computing
Licență GNU General Public License
Site web http://www.gnu.org/software/octave/


Octave este un program de calculator pentru efectuarea de calcule numerice. El este în general compatibil cu MATLAB. Este parte a GNU Project. Este un software liber în conformitate cu termenii Licența Publică Generală GNU.

Istorie[modificare | modificare sursă]

Proiectul a fost conceput în jurul anului 1988. La început a fost destinat să acompanieze un curs de proiectare a unui reactor chimic. Dezvoltarea propriu-zisă a fost inițiată de către John W. Eaton în 1992. Prima versiune alpha datează din 4 ianuarie, 1993 și în 17 februarie, 1994 a fost lansată versiunea 1.0. Versiunea 3.0 a fost lansată în 21 decembrie, 2007.

Este de remarcat faptul că numele nu are nimic de-a face cu octavele muzicale. Octave își trage numele de la Octave Levenspiel, un fost profesor al principalului autor, profesor care era renumit pentru abilitatea sa de a efectua rapid calcule.[1]

Detalii tehnice[modificare | modificare sursă]

  • Octave este scris în C++ folosind librăriile STL.
  • Octave folosește un interpretor pentru a executa limbajul Octave.
  • Octave se poate extinde folosind module încărcate dinamic.
  • Interpretorul lui Octave lucrează împreună cu gnuplot și software-ul Grace pentru a crea grafice, diagrame care se pot salva sau printa.

Octave, limbajul[modificare | modificare sursă]

Limbajul Octave este un limbaj de programare interpretat. Este un limbaj de programare structurat (similar cu C) și suportă multe funcții comune din C, și, de asemenea, anumite apeluri de sistem și funcții ale sistemelor compatibile POSIX.[2] Nu există, însă, suport pentru transmiterea argumentelor prin referință.[3]

Programele Octave constau dintr-o listă de funcții sau un script. Sintaxa este bazată pe matrice și oferă diverse funcții pentru operațiile cu matrice. Octave nu este orientat-obiect, dar suportă diverse structuri de date.

Sintaxa sa este foarte apropiată de cea din MATLAB, și cu o programare atentă a scriptului se poate obține rularea corectă atât în Octave cât și în MATLAB.[4]

Pentru că Octave este disponibil sub Licența Publică Generală GNU, poate fi copiat și utilizat în mod gratuit.[5] Programul rulează pe mai multe sisteme de operare ca: Unix, Unix-like, precum și pe Microsoft Windows.[6]

Caracteristici notabile[modificare | modificare sursă]

Autocompletarea comenzilor și numelor de variabile

Apăsarea tastei TAB în linia de comandă determină Octave să încerce completarea numelor de fișiere, funcții sau variabile (similar cu comportamentul bash). Octave utilizează textul dinaintea cursorului ca porțiune inițială a numelui de completat.

Istoricul comenzilor

Când rulează în mod interactiv, Octave salvează comenzile introduse într-un buffer intern pentru a putea fi reapelate și modificate.

Structuri de date

Octave include un suport limitat pentru organizarea datelor în structuri. De exemplu:

octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
x.a = 1
octave:3> x.b
x.b =

  1  2
  3  4

octave:4> x.c
x.c = string
Scurtcircuitarea operatorilor logici

Operatorii logici `&&' și `||' din Octave sunt evaluați prin scurtcircuitare (ca și operatorii echivalenți din limbajul C), spre deosebire de operatorii element cu element `&' și `|'.

Operatorii de incrementare și decrementare

Octave include operatori de incrementare și decrementare, `++' și `--', similari cu cei din C, atât în formă prefixată, cât și în formă postfixată.

Tratarea erorilor

Octave suportă o formă limitată de tratare a excepțiilor modelată după limbajul de programare LISP. Forma generală a unui bloc unwind_protect de tratare a erorilor arată astfel:

unwind_protect
  body
unwind_protect_cleanup
  cleanup
end_unwind_protect
Liste de argumente de lungime variabilă

Octave are un mecanism real de tratare a funcțiilor ce primesc un număr nespecificat de argumente, fără limită superioară explicită. Pentru a specifica o listă de zero sau mai multe argumente, se utilizează argumentul special varargin ca fiind ultim (sau unic) argument.

function s = plus (varargin)
  if (nargin==0)
    s = 0;
  else
    s = varargin{1} + plus (varargin{2:nargin});
  endif
endfunction
Liste de valori returnate cu lungime variabilă

O funcție poate returna orice număr de valori utilizând valoarea specială returnată varargout. De exemplu:

function varargout = multiassign (data)
  for k=1:nargout
    varargout{k} = data(:,k);
  endfor
endfunction
Integrare cu C++

Cod Octave poate fi rulat și direct dintr-un program C++. De exemplu, acest cod apelează funcția Octave rand([9000,1]):

  #include <octave/oct.h>
  ...
  ColumnVector NumRands(2);
  NumRands(0) = 9000;
  NumRands(1) = 1;
  octave_value_list f_arg, f_ret;
  f_arg(0) = octave_value(NumRands);
  f_ret = feval("rand",f_arg,1);
  Matrix unis(f_ret(0).matrix_value());

Compatibilitatea cu MATLAB[modificare | modificare sursă]

Octave a fost construit să fie compatibil cu MATLAB. Are, prin urmare, multe care caracteristici asemenea cu MATLAB:

  1. Matricea este tipul de dată fundamental.
  2. Suport inclus pentru numere complexe.
  3. Funcții matematice puternice și librării de funcții extinse.
  4. Extensibilitate sub formă de funcții definite de utilizator.

Există câteva diferențe importante, deși minore:

  1. Comentariile pot fi precedate de caracterul # cât și de caracterul %
  2. Diverși operatori specifici C sunt suportați: ++, --, +=, *=, /=
  3. Șirurile de caractere pot fi definite cu caracterul " precum și cu caracterul '.

Legături externe[modificare | modificare sursă]

Documentație[modificare | modificare sursă]

Interfețe grafice[modificare | modificare sursă]


Interfețe Web[modificare | modificare sursă]

Add-ons[modificare | modificare sursă]

Referințe[modificare | modificare sursă]