GNU Octave je otevřený zdroj a volně distribuovaný software příkazového řádku, jehož cílem je poskytnout výkonný, snadno použitelný a rozšiřitelný jazyk na vysoké úrovni, který může být použit pro zpracování číselných výpočtů .
Lze použít k numerickému řešení lineárních a nelineárních problémů
Software může být používán k numerickému řešení lineárních i nelineárních problémů, stejně jako k provádění různých numerických experimentů. Je kompatibilní s Matlabem, multi-paradigmovým číselným počítačovým prostředím a může být použit jako dávkový jazyk.
Navíc GNU Octave nabízí různé nástroje, které vám umožní vyřešit běžné problémy číselné algebry, manipulovat s polynomy, integrovat běžné funkce, objevit kořeny nelineárních rovnic a také integrovat běžné diferenciální algebraické a diferenciální rovnice. / p>
Chcete-li rozšířit GNU Octave, můžete použít dynamicky načtené moduly nebo uživatelské funkce. Ty mohou být napsány v vlastním programovacím jazyce Octave & C, C ++, Fortran atd.
Začínáme s GNU Octave
Pro instalaci GNU Octave v operačním systému GNU / Linux jsou k dispozici dvě metody. První je nejjednodušší a zahrnuje vyhledávání "oktávy" v aplikaci Software Center (např. Synaptic Package Manager) vaší distribuce.
Druhá metoda vám pomůže nainstalovat nejnovější verzi produktu, ale zahrnuje spouštění příkazů v terminálovém emulátoru. Pokud nejste s tím, stáhněte nejnovější zdrojový balíček z programu Softoware nebo z oficiální domovské stránky projektu (viz odkaz na konci článku), uložte jej do počítače a rozbalte jej.
Otevřete aplikaci emulátoru terminálu, spusťte aplikaci "cd & rsquo; příkazu, po kterém následuje cesta k umístění extrahovaných archivních souborů (např. cd /home/softoware/octave-3.8.2), spusťte příkaz & lsquo; ./ configure & amp; make & rsquo; příkaz pro konfiguraci a kompilaci programu a spusťte příkaz sudo make install & rsquo; příkaz k jeho instalaci. Použijte jej z rozhraní příkazového řádku spuštěním & quot; oktáva & rsquo; příkaz.
Pod kapotou
Když se podíváme pod kapuci programu GNU Octave, můžeme si všimnout, že je napsán zcela v programovacím jazyce C ++. My jsme jej nainstalovali do několika distribucí GNU / Linuxu, včetně Arch Linuxu a Ubuntu, s využitím instrukcí uvedených ve výše uvedené části. Tento software je kompatibilní s 32bitovými a 64bitovými počítačovými platformami.
Co je nového v této verzi:
- One z největších nových funkcí pro řadu vydání Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 4.2.0:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 4.0.3:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 4.0.1:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 4.0.0:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 3.8.2:
- Jednou z nejdůležitějších nových funkcí řady Release Octave 3.8.x je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
Co je nového ve verzi 3.8.0:
- Jednou z největších nových funkcí pro Octave 3.8 je grafické uživatelské rozhraní. Jedna věc, kterou uživatelé nejčastěji požadovali v posledních několika letech a nyní je téměř připraven. Ale protože to není úplně tak leštěné, jak bychom si přáli, rozhodli jsme se počkat až do vydání série 4.0.x předtím, než vytvoříme standardní rozhraní GUI (do té doby můžete použít volbu - force-gui pro spuštění GUI )
- Vzhledem k délce času a počtu oprav chyb a vylepšení od posledního velkého vydání Octave jsme se také rozhodli, že prodloužení vydání všech těchto nových vylepšení již nebude zdokonalovat pouze grafické rozhraní. Takže si prosím vychutnejte verzi 3.8 Octave a náhled nového GUI. Věříme, že funguje poměrně dobře, ale také víme, že existují některé zjevné hrubé skvrny a mnoho věcí, které by se mohly zlepšit.
Co je nového ve verzi 3.4.0:
- Knihovny BLAS a LAPACK jsou nyní vyžadovány k sestavení Octave. Podskupina referenčních knihoven BLAS a LAPACK byla z zdrojů Octave odstraněna.
- Funkce vyhledání byla rozšířena tak, aby byla užitečnější pro binární vyhledávání s obecným účelem. Pomocí tohoto vylepšení byla funkce ismember přepsána pro výrazně lepší výkon.
- Skutečná, celočíselná a logická matice při použití v indexaci nyní mezipaměti indexu indexu indexu (indexy založené na nulu), pokud jsou úspěšně použity jako indexy, čímž eliminuje penalizaci konverze pro následné indexování pomocí stejné matice. Zejména to znamená, že již není nutné vyhnout se opakovanému indexování pomocí logických polí pomocí vyhledání z důvodů výkonu.
- Logické matice jsou nyní lépe zpracovány, pokud se používají jako indexy. Octave udrží index jako logickou masku, pokud není poměr skutečných prvků dostatečně malý, a to pomocí specializovaného kódu. Dříve byly všechny logické matice vždy nejprve převedeny na indexové vektory. Výsledkem jsou úspory paměti i času výpočtu.
- Funkce "sub2ind" a "ind2sub" byly znovu zkompletovány jako kompilované funkce pro lepší výkon. Tyto funkce jsou nyní rychlejší, mohou dosahovat úspornějších výsledků pro rozsahy a mohou znovu použít mechanismus mezipaměti indexu popsaný v předchozím odstavci.
- Vestavěná ekvivalentní funkce asociativních operátorů ("plus", "čas", "mtimes", "a" a "nebo") byly rozšířeny o více argumentů. To je užitečné zejména pro sčítání (násobení atd.) Seznamů objektů (případně odlišných typů):
- matrix_sum = plus (matrix_list {:});
- Byl implementován typ objektu FTP založený na libcurlu. Tyto objekty umožňují spravovat připojení FTP, stahování a nahrávání. Například
- fp = ftp ("ftp.octave.org); cd (fp," gnu / oktáva "); mget (fp," octave-3.2.3.tar.bz2 " li>
- Výchozí chování výrazu 'assert (observed, expected)' bylo uvolněno, aby se použila méně přísná kontrola, která nevyžaduje, aby se vnitřní hodnoty těchto hodnot shodovaly. Tím se zabrání tomu, aby se dříve platné testy odlomily v důsledku nových interních tříd zavedených v budoucích verzích Octave.
- Například všechna tvrzení byla pravdivá v Octave 3.0.x, ale falešná v 3.2.x díky novým optimalizacím a vylepšením: (1, 5, 5), 2 * (1: 5)) tvrdí (nuly (0, 0), []) (ty (1,5)))
- Chování knihovních funkcí "ismatrix", "issquare" a "issymmetric" bylo změněno pro lepší konzistenci. Funkce `ismatrix 'nyní vrací true pro všechny číselné, logické a znakové matice 2-D nebo N-D. Dříve, `ismatrix 'vrátil false, pokud první nebo druhá dimenze byla nula. Proto je `ismatrix ([]) 'nepravdivý, zatímco` ismatrix (nula (1,2,0)') je pravda.
- Funkce `issquare 'nyní vrací logický skalár a odpovídá výrazu
- ismatrix (x) & amp; ndims (x) == 2 & amp; řádky (x) == sloupce (x)
- Dimenze již není vrácena. V důsledku toho je `issquare ([]) 'nyní výnos true. Funkce "issymmetric" nyní kontroluje symetrii namísto Hermitianness. Pro latter byl vytvořen ishermitian. Také je logický skalární vrácen spíše než dimenze, takže `issymmetric ([]) 'je nyní pravdivý. Funkční držadla jsou nyní vědomy přetížených funkcí. Je-li funkce přetížena, rukojeť v okamžiku jejího určení určí, jakou funkci volá. Verze bez přetížení nemusí existovat.
- Funkce přetížení vestavěných tříd (dvojitá, int8, buňka atd.) je nyní kompatibilní s aplikací Matlab.
- Funkční úchyty lze nyní porovnat s operátory == a! =, stejně jako funkce `isequal '.
- Pro vícerozměrná pole byla vylepšena výkonnost zřetězení (pomocí funkce []) a funkce `cat ',` horzcat' a `vertcat '.
- Operátoři přiřazení operací + =, - =, * = a / = se nyní v určitých případech chovají účinněji. Například pokud M je matice a S je skalární, pak příkaz
- M + = S;
- bude fungovat na místech M na místě, pokud není sdíleno jinou proměnnou, obvykle zvyšuje jak časovou tak paměťovou efektivitu. Jsou ovlivněny pouze vybrané společné kombinace, a to: matrix + = matrix matrix - = maticová matice. * = Maticová matice ./= matice
- matice + = skalární matice - = skalární matice * = skalární matice / = skalární
- logická matice | = logická matice logické matice & logická matice
- kde matice a skalár patří do stejné třídy. Levá strana musí být jednoduchá proměnná.
- Navíc, když se ve výrazech objeví unární operátoři, Octave se také pokusí provést operaci na místě, pokud je argumentem dočasná exprese.
- Efekt porovnávacích operátorů (, =) aplikovaných na složité čísla se změnil tak, aby byl v souladu s přísným uspořádáním definovaným funkcemi "max", "min" a "řazení". Konkrétněji jsou složitá čísla porovnána lexikografickým porovnáním párek "[abs (z), arg (z)]". Dříve byly porovnány pouze skutečné části; to může být triviálně dosaženo obalením operandů v reálném ().
- Automatické zjednodušení komplexních výsledků výpočtů se změnilo. Octave nyní zjednoduší jakékoliv složité číslo s nulovou imaginární částí nebo složitou maticí se všemi prvky, které mají nulovou imaginární část k reálné hodnotě. Dříve to bylo provedeno pouze pro kladné nuly. Všimněte si, že chování komplexní funkce je nezměněno a stále vytváří komplexní hodnotu, i když je imaginární část nula.
- Jako vedlejší efekt refaktorování kódu v liboctave jsou nyní binární logické operace snadněji přizpůsobitelné optimalizaci překladačů a jsou tak výrazně rychlejší.
- Octave nyní umožňuje uživatelům definované metody subsasgn optimalizovat redundantní kopie. Další informace naleznete v příručce.
- Účinnější manipulace s dělícími maticemi. Octave nyní zvládne výrazy M 'V M.' V V / M
- (M je matice a V je vektor) efektivněji v některých případech. Zvláště pokud je M trojúhelníkový, všechny tři výrazy budou zpracovány jediným voláním do xTRTRS (z LAPACKu) s příslušnými příznaky. Dříve všechny tři výrazy vyžadovaly fyzickou transpozici M.
- Efektivnější manipulace s určitými smíšenými real-komplexními maticovými operacemi. Například, pokud RM je skutečná matice a CM je komplexní matice, RM CM
- lze nyní vyhodnotit jako
- složitý (RM skutečný (CM), RM obraz (CM))
- nebo jako
- komplexní (RM) CM,
- v závislosti na rozměrech. První forma vyžaduje více dočasných a kopírovacích položek, ale polovina počtu FLOP, která normálně přináší lepší výkon, pokud má RM dostatek řádků. Dříve byl vždy použit druhý formulář.
- Matriční dělení je podobně ovlivněno.
- Účinnější manipulace s faktory triangulární matice se vrátila z faktorizace. Funkce výpočtu QR, LU a faktorizace Cholesky nyní automaticky vrátí faktory trojúhelníkové matice se správnou vnitřní sadou matrix_type, takže nebude nutné ji vypočítat, když je matice použita pro rozdělení.
- Vestavěná funkce součtu nyní efektivněji zpracovává ne-přirozený součet (tj. součet dvojnásobné přesnosti jednočinných nebo celočíselných vstupů), čímž se zabrání dočasné konverzi celého vstupního pole na zdvojnásobení. Dále `součet 'nyní může přijmout argument s volitelnými možnostmi, a to pomocí kompenzovaného součtu, spíše než přímého součtu, který významně zvyšuje přesnost, pokud se v součtu vyskytne spousta zrušení.
- Vestavěná funkce `bsxfun 'nyní používá optimalizovaný kód pro určité případy, kdy jsou předávány vestavěné ovladače. Optimalizace se týkají například operátorů` plus', `minus ',` times', `ldivide ' , "rdivide", "power", "a", "nebo" (pro logická pole), relační operátory `eq ',` ne', `lt ',` le', `gt ' funkce "min" a "max". Optimalizace platí pouze tehdy, jsou-li oba operandy stejné vestavěné třídy. Smíšené reálné / komplexní a jednoduché / dvojité operace nejdříve převedou oba operandy na běžný typ.
- Funkce `strfind 'a` strrep' mají nyní kompilované implementace, což usnadňuje výrazně efektivnější vyhledávání a nahrazování řetězců, zejména s delšími vzory. Kód "strcat" byl vektorizován a nyní je mnohem efektivnější, když je mnoho řetězců zřetězeno. Funkce `strcmpi 'a` strncmpi' jsou nyní vestavěné funkce, které poskytují lepší výkon.
- Podpora ignorování argumentů vstupní a výstupní funkce ve tvaru Matlab pomocí tildu (~) je nyní podporována. Ignorované výstupní argumenty mohou být detekovány z funkce pomocí vestavěné funkce `isargout '. Další podrobnosti naleznete v příručce.
- Datový typ seznamu, který byl od zavedení buněk zastaralý, byl odebrán.
- Funkce nahromaděče byla optimalizována av některých důležitých případech je nyní výrazně rychlejší.
- Chování isrealových a isnumerických funkcí bylo změněno tak, aby bylo více kompatibilní s Matlabem.
- Celočíselná matematika & amp; byly odstraněny varování o konverzích (Octave: int-convert-nan, Octave: int-convert-non-int-val, Octave: int-convert-overflow,
- rem a mod jsou nyní vestavěné funkce. Rovněž pracují s celočíselnými typy efektivně pomocí celočíselné aritmetiky.
- Různé indexování a indexované přiřazení byly většinou přepsány. Protože Octave využívá stlačené sloupcové úložiště pro řídké matrice, věnuje se velká pozornost operacím manipulujícím celé sloupce. Takové operace jsou nyní podstatně rychlejší, stejně jako některé další důležité případy.
- Dále je nyní možné předem přidělit řídnou matici a následně ji naplnit zadáním za předpokladu, že splňuje určité podmínky. Další informace naleznete v funkci "spalloc", která již není pouhou figurínou. Následně nzmax a nnz již nejsou v Octave rovny. Octave může také produkovat matici s nnz < nzmax jako výsledek jiných operací, takže byste měli konzistentně používat nnz, pokud opravdu nechcete použít nzmax (tj. prostor přidělený pro nenulové prvky).
- Různé zřetězení je také ovlivněno a zřetězování řídkých matric, zejména větších sbírek, je nyní mnohem efektivnější. To platí jak pro operátory [], tak pro funkce cat / vertcat / horzcat.
- Nyní je možné volitelně použít ovladače xGESDD LAPACK pro výpočet rozkladu singulární hodnoty pomocí svd () namísto výchozího xGESVD pomocí konfigurační pseudo-proměnné svd_driver. Ovladač xGESDD může být až šestkrát rychlejší, když jsou požadovány singulární vektory, ale je údajně poněkud méně robustní u velmi špatně podmíněných matric.
- pkg nyní přijímá možnost -forge pro stahování a instalaci balíků z Octave Forge automaticky. Například pkg install -forge general automaticky stáhne poslední verzi obecného balíčku a pokusí se jej nainstalovat. Není poskytováno automatické vyřešení závislostí. Dále,
- Seznam pkg -forge může být použit k zobrazení všech dostupných balíků.
- ** Interní reprezentace dat struktů byla zcela přepracována, aby bylo možné provést určité optimalizace. Údaje o polích mohou být nyní sdíleny mezi strukty se stejnými klíči, ale s různými rozměry nebo hodnotami, což činí operace, které rychleji uchovávají pole. Ekonomické ukládání je nyní používáno pro skalární struktury (stejně jako většina ostatních skalárů), čímž je jejich využití více paměťově efektivní. Některé operace typu array na struktu (zřetězení, jednotné cellfun, num2cell) získaly významné zrychlení. Navíc třída octave_scalar_map nyní poskytuje jednodušší rozhraní pro práci s skalárními strukty v rámci funkce C ++ DLD.
- ** Pro zobrazení čísel jsou k dispozici dva nové formáty:
- Formát krátký formát eng long eng
- Obě zobrazená čísla v technickém zápisu, tj. mantisa + exponent, kde je exponent násobkem 3.
- ** Následující funkce jsou v Octave 3.4 nové:
- akumulovat erfcx nfields pqpnonneg uigetdir bitadec fileread nth_element quadcc uigetfile bitunpack fminbnd onCleanup randi uiputfile blkmm fskipl pbaspect repliky uimenu cbrt ifelse pie3 reset whitebg křivka ishermitian powerset rsf2csf chop jeindex ppder savepasse daspect luupdate ppint strread divergence merge ppjumps textread
- ** Použití funkce snímku pro prohlížení obrázků s externími programy, jako je zobrazení, xv a xloadimage, již není podporováno. Funkce image_viewer byla také odstraněna.
- ** Bylo změněno chování strukturních přiřazení k hodnotám nestrukturovaným. Dříve bylo možné přepisovat libovolnou hodnotu: a = 1; a.x = 2;
- Toto již není možné, pokud a není prázdná matice nebo buněčné pole.
- ** Funkce dlmread byla rozšířena tak, aby umožnila zadání vlastní hodnoty pro prázdná pole.
- ** Funkce dlmread a dlmwrite byly upraveny tak, aby kromě názvů souborů přijímaly ID souborů (jako vrácené fopen).
- ** Octave nyní může optimalizovat prvek tlumočníka nad anonymním popisem funkce, pokud funkce jednoduše volá jinou funkci nebo zpracovává s některými jejími parametry vázanými na určité hodnoty. Příklad: f = @ (x) součet (x, 1);
- Je-li volána funkce f, volání je přesměrováno na @sum s připojenou konstantou 1 a volání anonymních funkcí na zásobníku volání nedojde.
- Zastaralé funkce.
- Následující funkce byly v Octave 3.2 zastaralé a budou odstraněny z Octave 3.6 (nebo jakákoli verze je druhá hlavní verze po 3.2):
- create_set spcholinv splesk spumprod spmax iscommand spcumsum spmin israwcommand spdet spprod spchrod spqg spqr spiq spdt spdt spdt spdt spdt spdr spdm spcd spdm spkr spmr spmr spmr spmr spmr spmr spmr spmr spmr spmr sp2rv spchol spinner
- Následující funkce byly v Octave 3.4 zastaralé a budou z Octave 3.8 odstraněny (nebo jakákoli verze je druhá hlavní verze po 3.4):
- autocor cellidx gammai krylovb hodnoty autocov expedice glpkmex replot betai fstat is_global saveimage
- Pro kompatibilitu s Matlabem je nyní mu2lin (x) ekvivalentní mu2lin (x, 0).
- Knihovna ARPACK je nyní distribuována s nástrojem Octave, takže již nemusí být k dispozici jako externí závislost při stavbě Octave.
Konfigurační pseudo-proměnné, jako např. page_screen_output nebo confirm_recursive_rmdir (nebo výše zmíněný svd_driver), nyní přijmou jako druhý argument možnost "local" a požadují, aby změna byla vrácena při návratu aktuální funkce: function [status, msg] = rm_rf (dir) potvrdí_recursive_rmdir (false, "local"); [stav, msg] = rmdir (dir, "s"); ... endfunction Po návratu bude hodnota return_recursive_rmdir obnovena na hodnotu, kterou měla při vstupu do funkce, i když došlo k následným změnám proměnné ve funkci rm_rf nebo kterékoli z funkcí, které volá.
Co je nového ve verzi 3.2.3:
- Octave 3.2.3 je verze pro opravu chyb
Co je nového ve verzi 3.0.4:
- Octave 3.0.4 je verze pro opravu chyb. Většina chyb hlášených od vydání verze 3.0.3 byla opravena. Vezměte prosím na vědomí, že Octave 3.0 se podstatně liší od Octave 2.1.x, zejména pokud jde o grafiku, manipulaci s cestami a vestavěné proměnné.
Komentáře nebyl nalezen