GNU Octave

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
GNU Octave
software
Siglă
GNU Octave rulează pe un sistem Linux
GNU Octave rulează pe un sistem Linux
Tip Analiza numerica
Dezvoltator James B. Rawlings, John W. Eaton
Data primei versiuni 1988
Ultima versiune 6.3.0 (11 iulie 2021)
Sistem de operare WILDEBEEST
Multiplatform
Limba C ++
Set de instrumente Qt
Licență GNU GPL v3
( Licență gratuită )
Limbă Multilingv
Site-ul web gnu.org/software/octave/

GNU Octave este o aplicație software de analiză numerică compatibilă în mare parte cu MATLAB [1] .

Are un set de caracteristici prevăzute pentru calculul matricei, cum ar fi rangul și determinantul sau specialistul, cum ar fi descompunerea valorii singulare (SVD), factorizarea LU ; deși permite găsirea soluției numerice a sistemelor liniare, nu efectuează calcul simbolic sau alte activități tipice unui sistem de algebră de calcul .

Istorie

Proiectul a fost conceput în 1988 de John W. Eaton (primul întreținător) și James B. Rawlings de la Universitatea din Texas ca instrument de calcul pentru ingineria chimică.

Dezvoltarea sa efectivă a început cu John W. Eaton în 1992 . Primul alfa lansat este datat pe 4 ianuarie 1993 și pe 17 februarie 1994 a fost lansată versiunea 1.0. Versiunea 3.0 a fost lansată pe 21 decembrie 2007 .

Limba este numită în onoarea lui Octave Levenspiel († 2017 ), inginer chimist și profesor la Universitatea de Stat din Oregon , cunoscut pentru capacitatea sa de a efectua calcule rapide.

Detalii tehnice

  • Octave este scris în conformitate cu standardul POSIX în limbajul C ++ utilizând Biblioteca de șabloane standard .
  • Octave folosește un interpret pentru limbajul de scriptare.
  • Octave poate fi extins prin module sau funcții scrise de utilizator.
  • Octave poate lucra împreună cu gnuplot și Grace pentru a desena funcții, grafice, tabele, permițându-le să le salvați sau să le imprimați.

Octave, limbajul de scriptare numeric

Limbajul de scriptare Octave acceptă diverse biblioteci C și acceptă, de asemenea, diverse apeluri de sistem și funcții UNIX .

Programele scrise cu Octave sunt scripturi sau liste de apeluri de funcții. Limbajul are diferite tipuri de date, pe lângă tipul numeric există și un tip logic (adevărat, fals), un tip de șir și structuri de date similare structurilor limbajului C. Există, de asemenea, un alt tip de date foarte puternic și este matricea care permite multe operații de tip matrice. Limbajul Octave nu este un limbaj orientat pe obiecte , dar acceptă structuri de date , oferă, de asemenea, diverse structuri pentru controlul fluxului, cum ar fi testele logice if-else și switch și buclele while și do-until .

Sintaxa este foarte asemănătoare cu cea a MATLAB și este posibil să scrieți scripturi care rulează atât sub Octave, cât și pe MATLAB.

Octave este distribuit sub licența GPL și, prin urmare, poate fi copiat și utilizat în mod liber. Programul rulează sub sistemele Unix și Linux , precum și pe Windows și macOS .

Trăsături distinctive

Completarea automată a comenzilor și a numelor variabilelor

Tastarea unui caracter TAB în linia de comandă permite GNU Octave să caute posibilele completări ale părții deja tastate parțial a comenzii (similar cu finalizarea automată a shell-ului Bash ).

Istoricul comenzilor

Când este pornit în modul interactiv, GNU Octave salvează comenzile deja executate într-un buffer intern, astfel încât acestea să poată fi reamintite și editate.

Structuri de date

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

 octavă: 1> xa = 1; xb = [1, 2; 3, 4]; xc = "șir";
octava: 2> xa
ans = 1
octavă: 3> xb
ans =

   1 2
   3 4

octavă: 4> xc
ans = șir
octavă: 5> x
x =
{
  a = 1
  b =

     1 2
     3 4

  c = șir
}

Operatori booleni de scurtcircuit

Operatorii logici „&&” și „||” din GNU Octave sunt evaluate în modul scurtcircuit (la fel ca operatorii corespunzători în limbajul C ), spre deosebire de operatorii „&” și „|”, care acționează element cu element în vectori, matrice și matrice multidimensionale.

Operatori de creștere și descreștere

GNU Octave include operatorii de creștere de tip C „++” și decrement ”-„, atât în ​​prefix cât și în sufix.

Protejează-te

GNU Octave acceptă o formă de bază de gestionare a excepțiilor , modelată pe construcția Lisp de protecție la derulare. Forma generală a unui bloc unwind_protect arată astfel:

 desface_protejați
  corp
unwind_protect_cleanup
  a curăța
end_unwind_protect

Ca regulă generală, GNU Octave recunoaște ca fiind încetarea unui anumit „bloc de cod block “ este cuvântul cheie „ end “ (care este compatibil cu limbajul MATLAB) că cealaltă mai specifică „ end_ block “. În consecință, un bloc „ unwind_protect ” poate fi terminat fie cu cuvântul cheie „ end_unwind_protect ” - ca în exemplu - fie mai portabil, cu cuvântul cheie „ end ”. În exemplu, partea de curățare a blocului este întotdeauna efectuată. În cazul în care partea corpului a ridicat o excepție, curățarea va fi efectuată imediat înainte ca excepția să fie propagată în afara blocului „ unwind_protect ”.

GNU Octave acceptă, de asemenea, o altă formă de gestionare a excepțiilor (compatibilă cu limba MATLAB):

 încerca
   corp
captură
   manipulare_excepție
Sfârșit

Această din urmă formă diferă de un bloc „ unwind_protect ” din două motive. În primul rând, partea exception_handling este executată numai în cazul în care partea corpului ridică o excepție. În al doilea rând, după executarea exception_handling , excepția este considerată capturată și gestionată și nu este propagată în afara blocului (cu excepția cazului în care o rethrow( lasterror )rethrow( lasterror ) ” a fost plasată în mod intenționat în codul exception_handling ).

Liste de argumente de lungime variabilă

GNU Octave are un mecanism eficient pentru gestionarea funcțiilor care trebuie să primească un număr arbitrar (necunoscut a priori) de argumente, fără o limită superioară. Pentru a indica o listă de zero sau mai multe argumente care introduc o funcție, utilizați argumentul varargin special, poziționat ca ultim (sau singur) argument din listă:

 funcţie s = plus ( varargin )
   dacă ( nargin == 0 )
      s = 0 ;
   altceva
      s = varargin { 1 } + la care se adauga ( varargin { 2 : nargin });
   Sfârșit
Sfârșit

Returnează liste cu lungime variabilă

O funcție poate fi implementată pentru a returna orice număr de valori la codul apelant, utilizând variabila varargout specială ca argument de ieșire. De exemplu:

 funcţie varargout = semnal multiplu ( data )
   pentru k = 1 : nargout
      varargout { k } = data (:, k );
   Sfârșit
Sfârșit

Integrare cu limbajul C ++

De asemenea, este posibil să rulați codul GNU Octave direct într-un program C ++. De exemplu, mai jos este un fragment de cod care apelează funcția rand([10,1]) din C ++, având interpretată de GNU Octave:

 #include <octave / oct.h>
   ...
   ColumnVector NumRands ( 2 );
   NumRands ( 0 ) = 10 ;
   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 ().);

Compatibilitate cu limbajul MATLAB

GNU Octave a fost conceput având unul dintre obiective compatibilitatea cu limba MATLAB și, de fapt, împărtășește multe caracteristici cu MATLAB:

  1. Tablouri ca tipuri de date fundamentale.
  2. Suport nativ pentru numere complexe .
  3. Funcții matematice native puternice și biblioteci extinse de funcții.
  4. Extensibilitate, care ia forma unor funcții definite de utilizator.

În comparație cu limba MATLAB, există un set restrâns de diferențe intenționate :

  1. Liniile de comentarii pot fi prefixate atât cu caracterul # , cât # cu caracterul % (acesta din urmă fiind compatibil cu limba MATLAB).
  2. Sunt suportați diverși operatori pe baza limbajului C: ++ , -- , += , *= , /= .
  3. Elementele variabilelor temporare (vectori, matrici sau tablouri multi-dimensionale) pot fi accesate fără a fi nevoie să creați noi variabile, cum ar fi în [1:10](3) .
  4. Șirurile de text pot fi definite atât cu caracterul " și cu caracterul ' (acesta din urmă fiind compatibil cu limbajul MATLAB).

Notă

  1. ^ Despre Octave , la gnu.org .

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității GND ( DE ) 102265487X