Пређи на садржај

GNU Octave — разлика између измена

С Википедије, слободне енциклопедије
Садржај обрисан Садржај додат
Направљено превођењем странице „GNU Octave
(нема разлике)

Верзија на датум 27. новембар 2015. у 01:53

GNU Octave је софтверски програмски језик на високом нивоу, првенствено намењен за нумеричке прорачуне. Она пружа интерфејс командне линије за решавање линеарних и нелинеарних проблема нумеричких проблема, а за обављање других нумеричких експеримената кориси се језик који је углавном у складу са MATLAB-ом. Такође се може користити као батцх оријентисан језик. То је део GNU пројекта, то  је слободан софтвер под условима  GNU General Public License.

Октава је један од два главна алтернативна отворена кода МАТЛАБ-а, онај други јеScilab.[1][2][3][4]Scilab међутим ставља мањи нагласак на (двосмерни) синтактичку компатибилност са МАТЛАБ-ом него сто то октава ради.[1][5][6]

Историја

The project was conceived around 1988. At first it was intended to be a companion to a chemical reactor design course. Real development was started by John W. Eaton in 1992. The first alpha release dates back to January 4, 1993 and on February 17, 1994 version 1.0 was released. Version 4.0.0 was released on May 29, 2015.

Програм је назван по Octave Levenspiel, бивши професор главног аутора. Levenspiel је познат по својој способности да обавља брзе прорачуне.

Развој

Поред користити за личну рачунарску науку, октава се користи у академским круговима и индустрији.На пример, октава је коришћена у великом паралелном рачунару у Pittsburgh суперрачунарском центру да пронађу рањивости везане за погађање бројева социјалног осигурања.[8]

Технички детаљи

Октава, језик

Октава је интерпретаторски програмски језик. То је структурирани програмски језик (слично C) и подржава многе заједничке C стандардне библиотеке функција, као и неке UNIX системе позива и функције.[9] Међутим, не подржава пролазност аргумената референце.[10]

Октава програми се састоје од листе позива функција или скрипте. Синтакса је матрица на бази и обезбеђује различите функције за операције матрице. Она подржава различите структуре података и омогућава објектно-оријентисаног програмирања.[11]

Њена синтакса је веома слична МАТЛАБ-у, и пажљиво програмирање сценарија ће јој омогућити да ради и на октави и на MATLAB-у.[12]

Због октаве је доступна под ГНУ-овом општом јавном лиценцом, може се слободно мењати, копирати и користити.[7]Програми раде на Microsoft Windows највише Unix и Unix-like оперативном систему, укључујући OS X.[13]

Значајне карактеристике

Команда и променљиво име завршетка

Притиском на ТАB знак на командној линији доводи до покушаја октаве да заврши променљиве, функције и имена датотека (слична Баш завршетку). Октава користи текст пре курсора као почетни део имена да се заврши.

Командна историја

Када покренете интерактивно, октава чува команде унесе интерни бафер, тако да они могу бити опозван и измењено.

Структуре података

Октава укључује ограничену количину подршке за организацију података у структурама. У овом примеру, видимо структуру "x" са елементима "a", "b", и "c", (цео број, низ, и стринг, респективно):

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
}

Логички оператори кратког споја

Октавини '&&' и '||' логички оператори су оцењени на начин кратког споја (као што су одговарајући оператери у C језику), за разлику од елемента код елементних оператора '&' и '|'.

Инкремент

Октава укључује C-као инкремент '++' и '--' у свом префиксу и постфиксу форме. Такође аргументује задатке.

Unwind-заштита

Октава подржава ограничени облик изузетака по узору на  'unwind_protect' Лиспа. Општи облик једног unwind_protect блока изгледа овако:

unwind_protect
   body
unwind_protect_cleanup
   cleanup
end_unwind_protect

Као опште правило, GNU октава препознаје као престанак датог 'block' или кључне речи 'end' (који је компатибилан са МАТЛАБ језиком) или више специфичних кључних речи 'end_block'. Као последица тога, један 'unwind_protect' блок може бити раскинут са кључном речју 'end_unwind_protect' 'као у примеру, или са више portable кључних речи 'end'.

Чишћењем део блока се увек извршава. У том случају изузетак је подигнут од стране дела тела, чишћење се одмах изврши пре него што пропагира изузетак изван блока 'unwind_protect'.

GNU октава такође подржава други облик изузетека (компатибилан са МАТЛАБ језиком):

try
   body
catch
   exception_handling
end

Овај други облик разликује се од 'unwind_protect' блока на два начина. Прво, exception_handling се извршава само када је изузетак покренуо орган.. Друго, након што је извршење exception_handling изузетак се не пропагира изван блока (осим ако 'rethrow( lasterror )' изјава је намерно убачена у exception_handling код).

Променљиве дужине аргумент листе

Октава има механизам за руковање функцијом која узима неодређен број аргумената, без експлицитне горње границе. Да бисте одредили листу нула или више аргумената користите посебан аргумент varargin као последњи (или само) аргумент на листи.

function s = plus (varargin)
   if (nargin==0)
      s = 0;
   else
      s = varargin{1} + plus (varargin{2:nargin});
   end
end

Променљиве дужине листе повратка

Функција се може подесити да се врате било који бројеви вредности помоћу посебне вредности за повратак varargout. На пример:

function varargout = multiassign (data)
   for k=1:nargout
      varargout{k} = data(:,k);
   end
end

Интеграција C++

Такође је могуће извршити код октаве директно у програму C++. На пример, овде је фрагмент кода за расписивање 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 и C++ код може да се интегрише у GNU октаву стварањем oct фајлова, или коришћењем  Matlab компатибилнe MEX фајлове.

MATLAB компатибилност

Октава је направљена са компатибилним MATLAB-ом , као и многе функције MATLAB-а:

  1. Матрице као фундаменталнитип података.
  2. Уграђена подршка за комплексне бројеве.
  3. Снажно уграђене математичке функције и опсежне функције.
  4. Растегљивост у облику кориснички дефинисане функције.

У ствари, октава третира неспојивости са MATLAB-ом као баг;[14] стога, може се сматрати софтверским клоном, који не нарушава софтверско ауторско право  Lotus v. Borland суда.

Синтаксна компатибилност

Постоји неколико наменских:

  1. Линија коментара може да се префиксује са карактером #, као и % карактером;
  2. Разни C-based оператори  ++, --, +=, *=, /= су подржани;
  3. Елементи се могу указати без стварања нових променљивих од водопада индексирањаа, нпр [1:10](3);
  4. Ниска се може дефинисати са карактером;
  5. Када је променљив тип један, октава израчунава "значи" у једном домена (МАТЛАБ у дуплом-домену) који је бржи, али даје мање тачне резултате;
  6. Блокови могу бити прекинути са конкретнијим контролним структурама кључних речи, тј, endif, endfor, endwhile, итд.;
  7. Функције се могу дефинисати у скрипти и на октава линији;
  8. Сви оператери врше аутоматско емитовање или једноплодно проширење.
  9. Присуство до петље (слочно ради док је у C).

Функција компатибилности

Многе од бројних МАТLAB функција доступне су у GNU октави, неке од њих су доступне преко пакета путем фалсификоване октаве, али нису све МАТLAB функција  доступне у GNU октави. Постоји списак недоступних функција у октави, а програмери траже помоћ за њихово спровођење. У потрази за функцијама __unimplemented.m__, доводи у листу нереализованих функција.

Имплементиране функције су категорисане у Image, Mapping, Optimization, Signal, и Statistics пакете.

Када се назива имплементирана функција следећа порука о грешци је приказана:

  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

Кориснички интерфејс

До верзије 3.8, октава није дошала са графичким корисничким интерфејсом (ГУИ) / интегрисано развојно окружење (ИДЕ) уобичајено. Међутим, званични графички интерфејс базиран на Qt је сада мигрирао у главни извор спремишта и доступан је са 3.8 октавом, али не као подразумевани интерфејс.[15] Он је постао уобичајен интерфејс са издавањем октаве 4.0.[16]  

Погледајте такође

Референце

  1. ^ а б Trappenberg, Thomas (2010). Fundamentals of Computational Neuroscience. Oxford University Press. стр. 361. ISBN 978-0-19-956841-3. 
  2. ^ Muhammad, A; Zalizniak, V (2011). Practical Scientific Computing. Woodhead Publishing. стр. 3. ISBN 978-0-85709-226-7. 
  3. ^ Megrey, Bernard A.; Moksness, Erlend (2008). Computers in Fisheries Research. Springer Science & Business Media. стр. 345. ISBN 978-1-4020-8636-6. 
  4. ^ Kapuno, Raul Raymond (2008). Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. стр. 365. ISBN 978-1-934015-09-4. 
  5. ^ Herman, Russell L. (2013). A Course in Mathematical Methods for Physicists. CRC Press. стр. 42. ISBN 978-1-4665-8467-9. 
  6. ^ 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. ISBN 978-3-319-06790-2. 
  7. ^ а б Eaton, John W. „About Octave”. Приступљено 2009-06-28. 
  8. ^ „Social Security Number Vulnerability Findings Relied on Supercomputing”. 8. 7. 2009. Архивирано из оригинала 29. 2. 2012. г. 
  9. ^ „GNU Octave - Controlling subprocesses”. 14. 11. 2008. Приступљено 2009-01-28. 
  10. ^ „GNU Octave”. Приступљено 2009-01-28. 
  11. ^ „Summary of important user-visible changes for version 3.2”. Приступљено 2012-01-05. 
  12. ^ „FAQ: MATLAB compatibility”. Приступљено 2009-04-04. 
  13. ^ „FAQ: Getting Octave”. Приступљено 2009-04-04. 
  14. ^ „GNU Octave - Bugs: Submit Item [Savannah]”. 
  15. ^ „Summary of important user-visible changes for version 3.8”. 
  16. ^ „Summary of important user-visible changes for version 4.0”. 

Додатна литература

Спољашње везе

Документација

Нумерички пакети и библиотеке повезивања са GNU Октавом

GNU Octave углавном пружају опште или специфичне апстракције за научно рачунање. Ови алати могу бити подељени према томе да ли су њихови доприноси више оријентисани ка рачунарском моделовању или ка јачању визуелне анализе.

Нумерички алати

  • Octave-forge – Free software toolboxes for various problems from independent developers. Octave-forge packages provide functions designed to work with the Octave package system. A Windows installer for both GNU Octave and the toolboxes is also available.
  • Mastrave project – Cross-language library (GNU GPLv3+ covered) compatible with GNU Octave and MATLAB, to ease scientific computational modelling (e.g. environmental modelling) with general purpose semantic array programming utilities.
  • Neuroimaging Analysis Kit – Library (MIT License covered) to process neuroimaging data within GNU Octave or MATLAB, particularly functional magnetic resonance images. It also offers a Pipeline system to handle multi-stage processing (PSOM: pipeline system for Octave and Matlab).
  • Parallel MATLAB Toolbox – MATLAB language data structures and functions which implement distributed MATLAB arrays. It is released under MIT license.
  • MPI Toolbox for Octave (MPITB) – Parallel Computing for Octave
  • FEATool – A fully integrated multiphysics finite element simulation toolbox with both GUI and command line support (including geometry and grid generation, solvers, and postprocessing).

Цртање алата

  • PLplot – A replacement of the traditional gnuplot in GNU Octave, licensed under the GNU LGPL.
  • Plotly – Interactive, browser-based, publication quality graphs. Can be shared and jointly edited.
  • OctPlot – High quality 2D graphics (PostScript and screen graphics). Released under GNU GPL.
  • Octave graphics add-on – 3D visualization system for Octave.
  • Octaviz – 3D visualization system for GNU Octave (wrapper that makes VTK classes accessible from within GNU Octave). It also provides high-level functions for 2D visualization. (Note: Their site says, "Unfortunately, Octaviz is no longer in development. The latest release (0.4.7) was quite usable and stable when built against vtk-5.0.").
MATLAB-као IDEs
  • Xoctave (Windows, Linux and MAC; commercial) allows plugin and multi-language support.
  • QtOctave (Windows, Linux; free under GPLv2+) Званични развој престао  јуна 2011.
  • DomainMath IDE (Windows, Linux, Mac OS; GPLv3+), оследњи апдејт: Nov 30, 2013
  • Octclipse (Linux; Eclipse Public LicenseGPLv3+) Eclipse based octave IDE. Последњи апдејт: 2012-12-11
  • Octave UPM (на шпанском) персонализована верзија са интегрисаним GUI
Остали GUIs
  • Cantor (Linux, Windows; GPLv2) A KDE mathematics application, with backends for R, Maxima, Octave, Scilab, Sage, KAlgebra, and Qalculate. Под активним развојем од 2011. године.
  • OctaveNB (Linux, Windows, OS X; GPLv2) NetBeans IDE интеграција за GNU Octave. Последдњи верзија Apr 2009.
  • Anoc Octave Editor (Android) GUI за Android који користи наменски сервер за обављање израчунавања и стварања заплете
  • GNU TeXmacs подржава октаву као backend
Web-based кориснички интерфејс
  1. ^ „Octave for Microsoft Windows - Octave”.