GNU Octave је програмски језик високог нивоа, првенствено намењен нумеричким прорачунима. Он је погодан за нумеричко решавање линеарних и нелинеарних проблема,као и за обављање других нумеричких експеримената. Синтакса овог језика је углавном компатибилнa са MATLAB-ом. Такође се може користити као пакетно оријентисан језик. GNU Octave је постао слободан софтвер откако је ушао у GNU пројекат, и задовољава услове GNU-ове јавне лиценце.
Octave је један од главних алтернатива отвореног кода MATLAB-а, а поред њега су и FreeMat и Scilab.[2][3][4][5]Scilab ставља мање нагласка на (двосмерну) синтаксну компатибилност са MATLAB-ом у односу на Octave.[2][6][7]
Историја
Пројекат је замишљен око 1988. године. У почетку је требало да за праћење дизајнирања хемијских реактора. Приликом прављења прве верзије овог програма долазило је до проблема зато што су људи покушавали да наговоре аутора да користи Фортран, под изговором да је он програмски језик будућности. Аутор је та наговарања одбио, јер је сматрао да његови студенти не би требало да раде на проналажењу грешака у Фортран-у, него да проведу више времена учећи о хемијском инжињерингу. Развој измењене идеје програма започео је John W. Eaton у 1992. Прво алфа издање датира од 4. јануара 1993. године, а 17. фебруара. 1994. избачена је верзија 1.0.Најновија верзија 4.2.1. избачена је 17. фебруара 2017. године.
Програм је назван по Octave Levenspiel-у, бившем професору главног аутора. Levenspiel је био познат по својој способности да обавља брзе прорачуне.[8]
Развој
Поред користи за рачунарску науку, Octave се користи у академским круговима и индустрији. На пример, Octave је коришћен на великом паралелном рачунару у Pittsburgh-овом суперрачунарском центру да се пронађу недостаци везани за погађање бројева социјалног осигурања.[9]
Технички детаљи
Octave је написана у C++ користећи C++ стандардну библиотеку.
Octave користи интерпретатор-е за извршавање свог скриптног језика.
Octave се може проширивати коришћењем динамички учитљивих модула.
Octave преводилац ради са gnuplot и Grace софтверским рутинама за стварање парцела, графикона и дијаграма, да их сачува или испише.
Octave програми се састоје од позива низа разних функција или скрипти. Синтакса је базирана на матрицама и обезбеђује различите функције за операције над матрице. Он подржава различите структуре података и омогућава објектно-оријентисано програмирање.[12]
Његова синтакса је веома слична MATLAB-у. Пажљиво програмирање његових скрипти ће омогућити рад његових програма и у Octave-у и у MATLAB-у.[13]
Притиском на ТАB знак на командној линији доводи до покушаја октаве да заврши променљиве, функције и имена датотека (слично Баш третману завршетака). Октава користи текст пре курсора као почетни део имена које завршава.
Командна историја
Када се покрене у интерактивном моду, октава чува унесене команде у интерном баферу, тако да оне могу бити опозване и измењене.
Структуре података
Октава укључује ограничену количину подршке за организацију података у структурама. У овом примеру, видимо структуру "x" са елементима "a", "b", и "c", (цео број, низ, и стринг):
Октавини '&&' и '||' логички оператори су оцењени на начин кратког споја (као што су одговарајући оператери у C језику), за разлику од елемента код елементних оператора '&' и '|'.
Инкремент
Октава укључује C језику сличан инкремент '++' и '--' у свом префиксу и постфиксу форме. Такође, она аргументује задатке.
Unwind-заштита
Октава подржава ограничени облик изузетака по узору на 'unwind_protect'Лиспа. Општи облик једног unwind_protect блока изгледа овако:
Као опште правило, GNU октава препознаје као престанак датог 'block' или кључне речи 'end' (који је компатибилан са МАТЛАБ језиком) или више специфичних кључних речи 'end_block'. Као последица тога, један 'unwind_protect' блок може бити раскинут са кључном речју 'end_unwind_protect' 'као у примеру, или са више portable кључних речи 'end'.
Чишћењем део блока се увек извршава. У том случају изузетак је подигнут од стране дела тела, чишћење се одмах изврши пре него што пропагира изузетак изван блока 'unwind_protect'.
GNU октава такође подржава други облик изузетека (компатибилан са МАТЛАБ језиком):
trybodycatchexception_handlingend
Овај други облик разликује се од 'unwind_protect' блока на два начина. Прво, exception_handling се извршава само када је изузетак покренуо орган.. Друго, након што је извршење exception_handling изузетак се не пропагира изван блока (осим ако 'rethrow( lasterror )' изјава је намерно убачена у exception_handling код).
Променљиве дужине аргумент листе
Октава има механизам за руковање функцијом која узима неодређен број аргумената, без експлицитне горње границе. Да бисте одредили листу нула или више аргумената користите посебан аргумент varargin као последњи (или само) аргумент на листи.
Када је променљив тип један, октава израчунава "значи" у једном домена (МАТЛАБ у дуплом-домену) који је бржи, али даје мање тачне резултате;
Блокови могу бити прекинути са конкретнијим контролним структурама кључних речи, тј, endif, endfor, endwhile, итд.;
Функције се могу дефинисати у скрипти и на октава линији;
Сви оператери врше аутоматско емитовање или једноплодно проширење.
Присуство до петље (слочно ради док је у C).
Функција компатибилности
Многе од бројних МАТLAB функција доступне су у GNU октави, неке од њих су доступне преко пакета путем фалсификоване октаве, али нису све МАТLAB функција доступне у GNU октави. Постоји списак недоступних функција у октави, а програмери траже помоћ за њихово спровођење. У потрази за функцијама __unimplemented.m__, доводи у листу нереализованих функција.
До верзије 3.8, октава није долазила са графичким корисничким интерфејсом (ГУИ) / интегрисаним развојним окружењем (ИДЕ). Међутим, званични графички интерфејс базиран на Qt платформи је сада био мигриран у главни извор спремишта и доступан је са 3.8 октавом, али не као подразумевани интерфејс.[16] Он је постао уобичајен интерфејс са издавањем октаве 4.0.[17]
^Megrey, Bernard A.; Moksness, Erlend (2008). Computers in Fisheries Research. Springer Science & Business Media. стр. 345. ISBN978-1-4020-8636-6.
^Kapuno, Raul Raymond (2008). Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. стр. 365. ISBN978-1-934015-09-4.
^Herman, Russell L. (2013). A Course in Mathematical Methods for Physicists. CRC Press. стр. 42. ISBN978-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. стр. 114—115. ISBN978-3-319-06790-2.
Нумерички пакети и библиотеке повезивања са GNU Октавом
GNU Octave углавном пружају опште или специфичне апстракције за научно рачунање. Ови алати могу бити подељени према томе да ли су њихови доприноси више оријентисани ка рачунарском моделовању или ка јачању визуелне анализе.
Нумерички алати
Octave-forge – Слободне алатне кутије софтвера за разне проблеме из независних програмера. Октава-фалсификовани пакети пружају функције дизајниране да раде са Октава пакетним системом. Windows installer за октаву и алатне кутије је такође доступан.
Mastrave project – Библиотека Cross-језика library (GNU GPLv3+ covered) у складу са GNU Octave и MATLAB, како би се олакшало научно рачунање modelling (нпр. моделирање животне средине) са општом намененом семантике array програмирања комуналне услуге.
Neuroimaging Analysis Kit – Библиотека (MIT License covered) за обраду података унутар GNU Octave или MATLAB-а, посебно функционалне магнетне резонанце слике. Такође нуди Pipeline систем да рукује у више фаза прераде (PSOM: pipeline system for Octave and Matlab).
Parallel MATLAB Toolbox – MATLAB језичка структура података и функција која дистибуира MATLAB низове. То је објављено под MIT license.
Octaviz – 3D визуелни систем за GNU Octave (омотач који чини ВТК часове доступне у оквиру октавее). Она такође обезбеђује функције на високом нивоу за 2D визуелизацију. (Напомена: Њихов сајт каже, "Нажалост, Октава није више у развоју. Најновије издање (0.4.7) је сасвим употребљиво и стабилно када је уграђен против vtk-5.0.").
MATLAB-као IDEs
Xoctave (Windows, Linux and MAC; commercial) allows plugin and multi-language support.
QtOctave (Windows, Linux; free under GPLv2+) Званични развој престао јуна 2011.
Cantor (Linux, Windows; GPLv2) A KDE mathematics application, with backends for R, Maxima, Octave, Scilab, Sage, KAlgebra, and Qalculate. Под активним развојем од 2011. године.
Anoc Octave Editor (Android) GUI за Android који користи наменски сервер за обављање израчунавања и стварања заплете