GNU Octave

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
GNU Octave
programari
Logotip
GNU Octave s'executa en un sistema Linux
GNU Octave s'executa en un sistema Linux
Tipus Anàlisi numèrica
Desenvolupador James B. Rawlings, John W. Eaton
Data de la primera versió 1988
Última versió 6.3.0 (11 de juliol de 2021)
Sistema operatiu WILDEBEEST
Multiplataforma
Llenguatge C ++
Kit d'eines Qt
Llicència GNU GPL v3
( Llicència lliure )
Llengua Multilingüe
Lloc web gnu.org/software/octave/

GNU Octave és una aplicació de programari d' anàlisi numèrica compatible amb MATLAB [1] .

Té un conjunt de funcions proporcionades per al càlcul de matrius, com ara rang i determinant o especialistes, com ara la descomposició del valor singular (SVD), la factorització LU ; tot i que permet trobar la solució numèrica de sistemes lineals, no realitza càlcul simbòlic ni altres activitats pròpies d’un sistema d’àlgebra computacional .

Història

El projecte va ser concebut el 1988 per John W. Eaton (primer mantenidor) i James B. Rawlings de la Universitat de Texas com a eina computacional per a l'enginyeria química.

El seu desenvolupament real va començar amb John W. Eaton el 1992 . El primer alfa llançat té data del 4 de gener de 1993 i el 17 de febrer de 1994 es va publicar la versió 1.0. La versió 3.0 es va publicar el 21 de desembre de 2007 .

La llengua s’anomena en honor a Octave Levenspiel († 2017 ), enginyer químic i professor de la Universitat Estatal d’Oregon , conegut per la seva capacitat de realitzar càlculs ràpids.

Detalls tècnics

  • Octave s'escriu d'acord amb l'estàndard POSIX en llenguatge C ++ mitjançant la biblioteca de plantilles estàndard .
  • Octave utilitza un intèrpret per al llenguatge de seqüència d’ordres.
  • Octave es pot ampliar mitjançant mòduls o funcions escrites per l'usuari.
  • Octave pot treballar juntament amb gnuplot i Grace per dibuixar funcions, gràfics, taules, permetent-los desar o imprimir.

Octave, el llenguatge de seqüències numèriques

El llenguatge de script Octave admet diverses biblioteques C i també admet diverses trucades de sistema i funcions UNIX .

Els programes escrits amb Octave són scripts o llistes de trucades a funcions. El llenguatge té diferents tipus de dades, a més del tipus numèric, també hi ha un tipus lògic (veritable, fals), un tipus de cadena i estructures de dades similars a les estructures del llenguatge C. També hi ha un altre tipus de dades molt potent i és la matriu que permet moltes operacions de tipus matricial. El llenguatge Octave no és un llenguatge orientat a objectes , però admet estructures de dades , també proporciona diverses estructures per al control de flux, com ara proves lògiques if-else i switch i bucles while i do-until .

La sintaxi és molt similar a la de MATLAB, i és possible escriure scripts que s’executin tant a Octave com a MATLAB.

Octave es distribueix sota la llicència GPL i, per tant, es pot copiar i utilitzar lliurement. El programa s’executa en sistemes Unix i Linux , així com en Windows i macOS .

Trets distintius

Compleció automàtica d’ordres i noms de variables

Si escriviu un caràcter TAB a la línia d’ordres, GNU Octave pot cercar possibles finalitzacions de la part de l’ordre ja parcialment mecanografiada (similar a la finalització automàtica del shell Bash ).

Historial de comandaments

Quan s'inicia en mode interactiu, GNU Octave desa les ordres ja executades en una memòria intermèdia interna perquè es puguin recuperar i editar.

Estructures de dades

GNU Octave inclou un suport limitat per organitzar les dades en estructures. Per exemple:

 octava: 1> xa = 1; xb = [1, 2; 3, 4]; xc = "cadena";
octava: 2> xa
ans = 1
octava: 3> xb
ans =

   1 2
   3 4

octava: 4> xc
ans = string
octava: 5> x
x =
{
  a = 1
  b =

     1 2
     3 4

  c = cadena
}

Operadors booleans de curtcircuit

Els operadors lògics '&&' i '||' de GNU Octave s’avaluen en mode de curtcircuit (com els operadors corresponents en llenguatge C ), a diferència dels operadors '&' i '|', que actuen element per element en vectors, matrius i matrius multidimensionals.

Operadors d’increment i disminució

GNU Octave inclou els operadors d'increment en forma de C '++' i decrement '-', tant en les seves formes de prefix com de sufix.

Protegiu-vos del vent

GNU Octave admet una forma bàsica de maneig d'excepcions , basada en la construcció de protecció contra desenrotllament Lisp . La forma general d'un bloc unwind_protect té aquest aspecte:

 desprotegir_protegir
  cos
unwind_protect_cleanup
  netejar
protegir_fins_unwind

Com a regla general, GNU Octave reconeix com la terminació d'un 'bloc de codi donat block ' és la paraula 'clau end ' (que és compatible amb el llenguatge MATLAB) que l'altra més específica ' end_ block '. En conseqüència, es pot acabar un bloc " unwind_protect " amb la paraula clau " end_unwind_protect " (com a l'exemple) o més portàtil, amb la paraula clau " end ". A l'exemple, sempre es realitza la part de neteja del bloc. En cas que la part del cos unwind_protect una excepció, la neteja es realitzaria immediatament abans que l'excepció es unwind_protect fora del bloc " unwind_protect ".

GNU Octave també admet una altra forma de tractament d'excepcions (compatible amb el llenguatge MATLAB):

 provar
   cos
atrapar
   manipulació_excepcions
final

Aquesta última forma es diferencia d'un bloc " unwind_protect " per dos motius. En primer lloc, la part exception_handling només s’executa en cas que la part del cos planteja una excepció. En segon lloc, després de l'execució de exception_handling , l'excepció es considera capturada i gestionada i no es propaga fora del bloc (tret que rethrow( lasterror ) col·locat a propòsit una ordre " rethrow( lasterror ) " dins del codi exception_handling ).

Llistes d'arguments de longitud variable

GNU Octave té un mecanisme eficaç per gestionar funcions que han de rebre un nombre arbitrari (no conegut a priori) d'arguments, sense un límit superior. Per indicar una llista de zero o més arguments que introdueixin una funció, utilitzeu l'argument especial varargin , situat com l'últim (o únic) argument de la llista:

 funció s = plus ( varargin )
   si ( nargin == 0 )
      s = 0 ;
   en cas contrari
      s = varargin { 1 } + més ( varargin { 2 : nargin });
   final
final

Retorna llistes de longitud variable

Es pot implementar una funció per retornar qualsevol nombre de valors al codi de trucada, utilitzant la variable varargout especial com a argument de sortida. Per exemple:

 funció varargout = signe múltiple ( data )
   per k = 1 : nargout
      varargout { k } = data (:, k );
   final
final

Integració amb el llenguatge C ++

També és possible executar codi GNU Octave directament dins d'un programa C ++. Per exemple, a continuació es mostra un fragment de codi que crida la funció rand([10,1]) des de C ++, fent-la interpretar per GNU Octave:

 #include <octave / oct.h>
   ...
   ColumnVector NumRands ( 2 );
   NumRands ( 0 ) = 10 ;
   NumRands ( 1 ) = 1 ;
   llista_valor_octava f_arg , f_ret ;
   f_arg ( 0 ) = valor_octava ( NumRands );
   f_ret = feval ( "rand" , f_arg , 1 );
   Matrix unis ( f_ret ( 0 ). Matrix_value ());

Compatibilitat amb el llenguatge MATLAB

GNU Octave es va dissenyar tenint en compte la compatibilitat amb el llenguatge MATLAB com un dels objectius i, de fet, comparteix moltes funcions amb MATLAB:

  1. Matrius com a tipus de dades fonamentals.
  2. Suport natiu per a nombres complexos .
  3. Potents funcions matemàtiques natives i extenses biblioteques de funcions.
  4. Extensibilitat, que pren la forma de funcions definides per l'usuari.

En comparació amb el llenguatge MATLAB, hi ha un estret conjunt de diferències a propòsit :

  1. Les línies de comentari es poden posar amb el caràcter # el caràcter % (aquest últim compatible amb el llenguatge MATLAB).
  2. S'admeten diversos operadors basats en el llenguatge C: ++ , -- , += , *= , /= .
  3. Es pot accedir a elements de variables temporals (vectors, matrius o matrius multidimensionals) sense haver de crear noves variables, com a [1:10](3) .
  4. Les cadenes de text es poden definir tant amb el caràcter " com amb el caràcter ' (aquest últim compatible amb el llenguatge MATLAB).

Nota

  1. ^ Quant a Octave , a gnu.org .

Articles relacionats

Altres projectes

Enllaços externs

Control de l'autoritat GND ( DE ) 102265487X