GNU Octave
GNU Octave je programski jezik visokog nivoa, prvenstveno namenjen numeričkim proračunima. On je pogodan za numeričko rešavanje linearnih i nelinearnih problema,kao i za obavljanje drugih numeričkih eksperimenata. Sintaksa ovog jezika je uglavnom kompatibilna sa MATLAB-om. Takođe se može koristiti kao paketno orijentisan jezik. GNU Octave je postao slobodan softver otkako je ušao u GNU projekat, i zadovoljava uslove GNU-ove javne licence.
Programer(i) | Džon Iton i drugi[1] |
---|---|
Prvo izdanje | 1988 |
Stabilno izdanje | 4.2.1
/ 17. februar 2017. |
Repozitorijum | |
Napisan u | C, C++, Fortran |
Operativni sistem | podržavaju ga Microsoft Windows, Unix,Unix-like i OS X |
Tip | Naučno računarstvo |
Licenca | GPL |
Veb-sajt | gnu |
Octave je jedan od glavnih alternativa otvorenog koda MATLAB-a, a pored njega su i FreeMat i Scilab.[2][3][4][5]Scilab stavlja manje naglaska na (dvosmernu) sintaksnu kompatibilnost sa MATLAB-om u odnosu na Octave.[2][6][7]
Istorija
urediProjekat je zamišljen oko 1988. godine. U početku je trebalo da za praćenje dizajniranja hemijskih reaktora. Prilikom pravljenja prve verzije ovog programa dolazilo je do problema zato što su ljudi pokušavali da nagovore autora da koristi Fortran, pod izgovorom da je on programski jezik budućnosti. Autor je ta nagovaranja odbio, jer je smatrao da njegovi studenti ne bi trebalo da rade na pronalaženju grešaka u Fortran-u, nego da provedu više vremena učeći o hemijskom inžinjeringu. Razvoj izmenjene ideje programa započeo je John W. Eaton u 1992. Prvo alfa izdanje datira od 4. januara 1993. godine, a 17. februara. 1994. izbačena je verzija 1.0.Najnovija verzija 4.2.1. izbačena je 17. februara 2017. godine. Program je nazvan po Octave Levenspiel-u, bivšem profesoru glavnog autora. Levenspiel je bio poznat po svojoj sposobnosti da obavlja brze proračune.[8]
Razvoj
urediPored koristi za računarsku nauku, Octave se koristi u akademskim krugovima i industriji. Na primer, Octave je korišćen na velikom paralelnom računaru u Pittsburgh-ovom superračunarskom centru da se pronađu nedostaci vezani za pogađanje brojeva socijalnog osiguranja.[9]
Tehnički detalji
uredi- Octave je napisana u C++ koristeći C++ standardnu biblioteku.
- Octave koristi interpretator-e za izvršavanje svog skriptnog jezika.
- Octave se može proširivati korišćenjem dinamički učitljivih modula.
- Octave prevodilac radi sa gnuplot i Grace softverskim rutinama za stvaranje parcela, grafikona i dijagrama, da ih sačuva ili ispiše.
- Octave verzije 3.8.0 i kasnije uključuju i grafički korisnički interfejs, pored tradicionalnog interfejsa komandne linije.
Karakteristike Octave programskog jezika
urediOctave je interpretatorski programski jezik. To je struktupirani programski jezik (sličan C-u) i podržava mnoge zajedničke C standardne biblioteke, kao i neke UNIX sisteme poziva i funkcije.[10] Međutim, ne podržava prenos argumenata po referenci.[11]
Octave programi se sastoje od poziva niza raznih funkcija ili skripti. Sintaksa je bazirana na matricama i obezbeđuje različite funkcije za operacije nad matrice. On podržava različite strukture podataka i omogućava objektno-orijentisano programiranje.[12]
Njegova sintaksa je veoma slična MATLAB-u. Pažljivo programiranje njegovih skripti će omogućiti rad njegovih programa i u Octave-u i u MATLAB-u.[13]
Zbog toga što je Octave pod GNU-ovom javnom licencom, može se slobodno menjati, kopirati i koristiti.[8]Programi rade na Microsoft Windows, Unix,Unix-like operativnim sistema, uključujući OS X.[14]
Značajne karakteristike
urediKomande i promenljivo ime završetka
urediPritiskom na TAB znak na komandnoj liniji dovodi do pokušaja oktave da završi promenljive, funkcije i imena datoteka (slično Baš tretmanu završetaka). Oktava koristi tekst pre kursora kao početni deo imena koje završava.
Komandna istorija
urediKada se pokrene u interaktivnom modu, oktava čuva unesene komande u internom baferu, tako da one mogu biti opozvane i izmenjene.
Strukture podataka
urediOktava uključuje ograničenu količinu podrške za organizaciju podataka u strukturama. U ovom primeru, vidimo strukturu "x" sa elementima "a", "b", i "c", (ceo broj, niz, i string):
octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
ans = 1
octave:3> x.b
ans =
1 2
3 4
octave:4> x.c
ans = string
octave:5> x
x =
{
a = 1
b =
1 2
3 4
c = string
}
Logički operatori kratkog spoja
urediOktavini '&&
' i '||
' logički operatori su ocenjeni na način kratkog spoja (kao što su odgovarajući operateri u C jeziku), za razliku od elementa kod elementnih operatora '&
' i '|
'.
Inkrement
urediOktava uključuje C jeziku sličan inkrement '++
' i '--
' u svom prefiksu i postfiksu forme. Takođe, ona argumentuje zadatke.
Unwind-zaštita
uredi
Oktava podržava ograničeni oblik izuzetaka po uzoru na 'unwind_protect
' Lispa. Opšti oblik jednog unwind_protect bloka izgleda ovako:
unwind_protect
body
unwind_protect_cleanup
cleanup
end_unwind_protect
Kao opšte pravilo, GNU oktava prepoznaje kao prestanak datog 'block
' ili ključne reči 'end
' (koji je kompatibilan sa MATLAB jezikom) ili više specifičnih ključnih reči 'end_block
'. Kao posledica toga, jedan 'unwind_protect
' blok može biti raskinut sa ključnom rečju 'end_unwind_protect
' 'kao u primeru, ili sa više portable ključnih reči 'end
'.
Čišćenjem deo bloka se uvek izvršava. U tom slučaju izuzetak je podignut od strane dela tela, čišćenje se odmah izvrši pre nego što propagira izuzetak izvan bloka 'unwind_protect
'.
GNU oktava takođe podržava drugi oblik izuzeteka (kompatibilan sa MATLAB jezikom):
try
body
catch
exception_handling
end
Ovaj drugi oblik razlikuje se od 'unwind_protect
' bloka na dva načina. Prvo, exception_handling se izvršava samo kada je izuzetak pokrenuo organ.. Drugo, nakon što je izvršenje exception_handling izuzetak se ne propagira izvan bloka (osim ako 'rethrow( lasterror )
' izjava je namerno ubačena u exception_handling kod).
Promenljive dužine argument liste
uredi
Oktava ima mehanizam za rukovanje funkcijom koja uzima neodređen broj argumenata, bez eksplicitne gornje granice. Da biste odredili listu nula ili više argumenata koristite poseban argument varargin
kao poslednji (ili samo) argument na listi.
function s = plus (varargin)
if (nargin==0)
s = 0;
else
s = varargin{1} + plus (varargin{2:nargin});
end
end
Promenljive dužine liste povratka
uredi
Funkcija se može podesiti da se vrate bilo koji brojevi vrednosti pomoću posebne vrednosti za povratak varargout
. Na primer:
function varargout = multiassign (data)
for k=1:nargout
varargout{k} = data(:,k);
end
end
Integracija C++
uredi
Takođe je moguće izvršiti kod oktave direktno u programu C++. Na primer, ovde je fragment koda za raspisivanje rand([10,1])
:
#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());
C i C++ kod može da se integriše u GNU oktavu stvaranjem oct fajlova, ili korišćenjem Matlab kompatibilnih MEX fajlove.
MATLAB kompatibilnost
urediOktava je napravljena da bude kompatibilna sa MATLAB-om, i ima mnoštvo zajedničkih svojstava s tim jezikom:
- Matrice kao fundamentalni tip podataka.
- Ugrađena podrška za kompleksne brojeve.
- Snažno ugrađene matematičke funkcije i opsežne funkcije.
- Rastegljivost u obliku korisnički definisane funkcije.
U stvari, oktava tretira nekompatiblnost sa MATLAB-om kao bag;[15] stoga, može se smatrati softverskim klonom, koji ne narušava softversko autorsko pravo sudeći po sudskom slučaju Lotus v. Borland.
Sintaksna kompatibilnost
urediPostoji nekoliko namenskih:
- Linija komentara može da se prefiksuje sa karakterom #, kao i % karakterom;
- Razni C-based operatori ++, --, +=, *=, /= su podržani;
- Elementi se mogu ukazati bez stvaranja novih promenljivih od vodopada indeksiranjaa, npr [1:10](3);
- Niska se može definisati sa karakterom;
- Kada je promenljiv tip jedan, oktava izračunava "znači" u jednom domena (MATLAB u duplom-domenu) koji je brži, ali daje manje tačne rezultate;
- Blokovi mogu biti prekinuti sa konkretnijim kontrolnim strukturama ključnih reči, tj, endif, endfor, endwhile, itd.;
- Funkcije se mogu definisati u skripti i na oktava liniji;
- Svi operateri vrše automatsko emitovanje ili jednoplodno proširenje.
- Prisustvo do petlje (sločno radi dok je u C).
Funkcija kompatibilnosti
urediMnoge od brojnih MATLAB funkcija dostupne su u GNU oktavi, neke od njih su dostupne preko paketa putem falsifikovane oktave, ali nisu sve MATLAB funkcija dostupne u GNU oktavi. Postoji spisak nedostupnih funkcija u oktavi, a programeri traže pomoć za njihovo sprovođenje. U potrazi za funkcijama __unimplemented.m__, dovodi u listu nerealizovanih funkcija.
Implementirane funkcije su kategorisane u Image, Mapping, Optimization, Signal, i Statistics pakete.
Kada se naziva implementirana funkcija sledeća poruka o grešci je prikazana:
octave:1> quad2d
warning: quad2d is not implemented. Consider using dblquad.
Please read <http://www.octave.org/missing.html> to learn how you can
contribute missing functionality.
warning: called from
__unimplemented__ at line 523 column 5
error: 'quad2d' undefined near line 1 column 1
Korisnički interfejs
urediDo verzije 3.8, oktava nije dolazila sa grafičkim korisničkim interfejsom (GUI) / integrisanim razvojnim okruženjem (IDE). Međutim, zvanični grafički interfejs baziran na Qt platformi je sada bio migriran u glavni izvor spremišta i dostupan je sa 3.8 oktavom, ali ne kao podrazumevani interfejs.[16] On je postao uobičajen interfejs sa izdavanjem oktave 4.0.[17]
Vidi još
urediReference
uredi- ^ Rik (10. 6. 2015). „contributors.in”. Pristupljeno 14. 6. 2015.
- ^ a b Trappenberg, Thomas (2010). Fundamentals of Computational Neuroscience. Oxford University Press. str. 361. ISBN 978-0-19-956841-3.
- ^ Muhammad, A; Zalizniak, V (2011). Practical Scientific Computing. Woodhead Publishing. str. 3. ISBN 978-0-85709-226-7.
- ^ Megrey, Bernard A.; Moksness, Erlend (2008). Computers in Fisheries Research. Springer Science & Business Media. str. 345. ISBN 978-1-4020-8636-6.
- ^ Kapuno, Raul Raymond (2008). Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. str. 365. ISBN 978-1-934015-09-4.
- ^ Herman, Russell L. (2013). A Course in Mathematical Methods for Physicists. CRC Press. str. 42. ISBN 978-1-4665-8467-9.
- ^ Wouwer, Alain Vande; Saucez, Philippe; Vilas, Carlos (2014). Simulation of ODE/PDE Models with MATLAB®, OCTAVE and SCILAB: Scientific and Engineering Applications. Springer. str. 114—115. ISBN 978-3-319-06790-2.
- ^ a b Eaton, John W. „About Octave”. Pristupljeno 28. 6. 2009.
- ^ „Social Security Number Vulnerability Findings Relied on Supercomputing”. 8. 7. 2009. Arhivirano iz originala 29. 2. 2012. g.
- ^ „GNU Octave - Controlling subprocesses”. 14. 11. 2008. Arhivirano iz originala 07. 01. 2009. g. Pristupljeno 28. 1. 2009.
- ^ „GNU Octave”. Pristupljeno 28. 1. 2009.
- ^ „Summary of important user-visible changes for version 3.2”. Pristupljeno 5. 1. 2012.
- ^ „FAQ: MATLAB compatibility”. Arhivirano iz originala 21. 11. 2011. g. Pristupljeno 4. 4. 2009.
- ^ „FAQ: Getting Octave”. Arhivirano iz originala 21. 11. 2011. g. Pristupljeno 4. 4. 2009.
- ^ „GNU Octave - Bugs: Submit Item [Savannah]”.
- ^ „Summary of important user-visible changes for version 3.8”.
- ^ „Summary of important user-visible changes for version 4.0”.
Literatura
uredi- Hansen, Jesper Schmidt (2011). GNU Octave. Beginner's Guide. Packt Publishing. ISBN 978-1-849-51332-6.
- Trappenberg, Thomas (2010). Fundamentals of Computational Neuroscience. Oxford University Press. str. 361. ISBN 978-0-19-956841-3.
Spoljašnje veze
uredi- Zvanični veb-sajt
- Unofficial but recommended GNU Octave 3.8.2 builds for Windows
- „Octave for Microsoft Windows - Octave”.
Dokumentacija
uredi- Online documentation.
- Octave wiki (Kliknite dva puta - stranica prosleđuje).
- Reviewed entry in the Free Software Directory.
- „Arhivirana kopija”. Arhivirano iz originala 30. 06. 2007. g. Pristupljeno 26. 11. 2015.
- Mailing List Archives on Nabble Arhivirano na sajtu Wayback Machine (25. februar 2012) – Traži sve oktave mailing liste.
- Mailing List Archives on Gmane – Traži sve oktave mailing liste.
Numerički paketi i biblioteke povezivanja sa GNU Oktavom
urediGNU Octave uglavnom pružaju opšte ili specifične apstrakcije za naučno računanje. Ovi alati mogu biti podeljeni prema tome da li su njihovi doprinosi više orijentisani ka računarskom modelovanju ili ka jačanju vizuelne analize.
Numerički alati
uredi- Octave-forge – Slobodne alatne kutije softvera za razne probleme iz nezavisnih programera. Oktava-falsifikovani paketi pružaju funkcije dizajnirane da rade sa Oktava paketnim sistemom. Windows installer za oktavu i alatne kutije je takođe dostupan.
- Mastrave project – Biblioteka Cross-jezika library (GNU GPLv3+ covered) u skladu sa GNU Octave i MATLAB, kako bi se olakšalo naučno računanje modelling (npr. modeliranje životne sredine) sa opštom namenenom semantike array programiranja komunalne usluge.
- Neuroimaging Analysis Kit – Biblioteka (MIT License covered) za obradu podataka unutar GNU Octave ili MATLAB-a, posebno funkcionalne magnetne rezonance slike. Takođe nudi Pipeline sistem da rukuje u više faza prerade (PSOM: pipeline system for Octave and Matlab).
- Parallel MATLAB Toolbox – MATLAB jezička struktura podataka i funkcija koja distibuira MATLAB nizove. To je objavljeno pod MIT license.
- MPI Toolbox for Octave (MPITB) – Paralelno računarstvo za Oktavu
- FEATool[mrtva veza] – Potpuno integrisani multifizički konačni elemenati simuliraju kutiju alata i komandne linije podrške (uključujući geometriju i stvaranje mreže, rešavanje).
Crtanje alata
uredi- PLplot – Zamena tradicionalnog gnuplot u GNU Octave, licenciran pod GNU LGPL.
- Plotly – Interaktivan, baziran na pretraživaču, kvalitet publikacije grafike. Može da se deli i zajednički edituje.
- OctPlot – Visok kvalitet 2D grafike (PostScript i izgled grafike). Objavljen pod GNU GPL.
- Octave graphics add-on – 3D vizuelni sistem za oktavu.
- Octaviz – 3D vizuelni sistem za GNU Octave (omotač koji čini VTK časove dostupne u okviru oktavee). Ona takođe obezbeđuje funkcije na visokom nivou za 2D vizuelizaciju. (Napomena: Njihov sajt kaže, "Nažalost, Oktava nije više u razvoju. Najnovije izdanje (0.4.7) je sasvim upotrebljivo i stabilno kada je ugrađen protiv vtk-5.0.").
MATLAB-kao IDEs
uredi- Xoctave (Windows, Linux and MAC; commercial) allows plugin and multi-language support.
- QtOctave (Windows, Linux; free under GPLv2+) Zvanični razvoj prestao juna 2011.
- DomainMath IDE Arhivirano na sajtu Wayback Machine (8. decembar 2015) (Windows, Linux, Mac OS; GPLv3+), oslednji apdejt: Nov 30, 2013
- Octclipse (Linux; Eclipse Public LicenseGPLv3+) Eclipse based octave IDE. Poslednji apdejt: 2012-12-11
- Octave UPM Arhivirano na sajtu Wayback Machine (20. novembar 2015) (na španskom) personalizovana verzija sa integrisanim GUI
Ostali GUIs
uredi- Cantor (Linux, Windows; GPLv2) A KDE mathematics application, with backends for R, Maxima, Octave, Scilab, Sage, KAlgebra, and Qalculate. Pod aktivnim razvojem od 2011. godine.
- Anoc Octave Editor (Android) GUI za Android koji koristi namenski server za obavljanje izračunavanja i stvaranja zaplete
- GNU TeXmacs podržava oktavu kao backend
Web-based korisnički interfejs
uredi- Online access to Octave – Omogućava vam da obavljate jednostavne oktava proračune na mreži
- Octave online – koristite oktavu preko veb-pregledača
- octave-online.net