GNU Octave er et åpen kildekode og fritt distribuert kommandolinjeprosjekt som har som mål å gi et kraftig, brukervennlig og utvidbart høyt språk som kan brukes til å håndtere numeriske beregninger .
Kan brukes til å løse numerisk løse og ikke-lineære problemer
Programvaren kan brukes til å løse numerisk løse både lineære og ikke-lineære problemer, samt å utføre forskjellige numeriske eksperimenter. Den er kompatibel med Matlab, et numerisk databehandlingsmiljø med flere paradigmer, og kan brukes som et batchorientert språk.
I tillegg tilbyr GNU Octave forskjellige verktøy som lar deg løse vanlige numeriske lineraalgebraproblemer, manipulere polynomene, integrere vanlige funksjoner, oppdage røttene til ikke-lineære ligninger, samt integrere vanlige differensialalgebraiske og differensialligninger.
Du kan bruke dynamisk lastede moduler eller brukerdefinerte funksjoner for å utvide GNU Octave. Disse kan skrives i oktavets eget programmeringsspråk eller i C, C ++, Fortran, etc.
Komme i gang med GNU Octave
To metoder er tilgjengelige for å installere GNU Octave på et GNU / Linux operativsystem. Den første er den enkleste og innebærer å søke på "oktav & rdquo; pakke i Programvare senter-appen (for eksempel Synaptic Package Manager) av distribusjonen din.
Den andre metoden hjelper deg med å installere den nyeste versjonen av produktet, men det innebærer å utføre kommandoer i en terminalemulator. Hvis du er ute med det, last ned den nyeste kilden fra Softoware eller fra prosjektets offisielle hjemmeside (se lenken i slutten av artikkelen), lagre den på PCen og pakk den ut.
Åpne en terminal emulator app, kjør & lsquo; cd & rsquo; kommando etterfulgt av banen til plasseringen av de ekstraherte arkivfilene (for eksempel cd /home /softoware/octave-3.8.2), kjør & lsquo; ./ configure & amp; gjøre & rsquo; kommandoen for å konfigurere og kompilere programmet, og kjør deretter & lsquo; sudo make install & rsquo; kommandoen for å installere den. Bruk den fra kommandolinjegrensesnittet ved å kjøre & lsquo; oktav & rsquo; kommando.
Under hetten
Ta en titt under hetten på GNU Octave-programmet, vi kan merke at det er skrevet helt i C ++ programmeringsspråket. Vi har installert den i flere distribusjoner av GNU / Linux, inkludert Arch Linux og Ubuntu ved hjelp av instruksjonen som er gitt i avsnittet ovenfor. Programvaren er kompatibel med 32-biters og 64-biters dataplattformer.
Hva er nytt i denne versjonen:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 4.2.0:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 4.0.3:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 4.0.1:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 4.0.0:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 3.8.2:
- En av de største nye funksjonene for Octave 3.8.x utgivelsesserien er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
Hva er nytt i versjon 3.8.0:
- En av de største nye funksjonene for Octave 3.8 er et grafisk brukergrensesnitt. Det er den eneste tingen brukere har bedt om de siste årene, og nå er det nesten klart. Men fordi det ikke er helt så polert som vi ønsker, har vi besluttet å vente til 4.0.x utgivelsesserien før du gjør GUI til standardgrensesnittet (til da kan du bruke --force-gui-alternativet til å starte GUI-en ).
- Med tanke på lengden på tid og antall feilrettinger og forbedringer siden den siste store utgivelsesoktaven, bestemte vi oss også for å forsinke utgivelsen av alle disse nye forbedringene lenger, bare for å perfeksjonere GUI. Så vær så snill og nyt 3.8-versjonen av Octave og forhåndsvisningen av den nye GUI. Vi tror det fungerer ganske bra, men vi vet også at det er noen åpenbare grove flekker og mange ting som kan forbedres.
Hva er nytt i versjon 3.4.0:
- BLAS og LAPACK-biblioteker er nå pålagt å bygge oktav. Delmengden av referanse BLAS og LAPACK-bibliotekene er fjernet fra oktavkildene.
- Funksjonen `oppslag 'ble utvidet til å være mer nyttig for binær søking generelt. Ved hjelp av denne forbedringen ble ismember-funksjonen omskrevet for betydelig bedre ytelse.
- Real, heltall og logiske matriser, når de brukes til indeksering, vil nå cache den interne index_vector-verdien (nullbaserte indekser) når de brukes som indekser, og eliminerer konverteringsstraffen for etterfølgende indeksering av samme matrise. Spesielt betyr dette at det ikke lenger er nødvendig å unngå gjentatt indeksering ved hjelp av logiske arrays ved hjelp av søke etter ytelsesårsaker.
- Logiske matriser behandles nå mer effektivt når de brukes som indekser. Octave vil holde indeksen som en logisk maske med mindre forholdet mellom ekte elementer er lite nok, ved hjelp av en spesialkode. Tidligere ble alle logiske matriser først konvertert til indeksvektorer. Dette resulterer i besparelser i både minne og datatid.
- Funksjonene `sub2ind 'og` ind2sub' ble reimplemented som kompilerte funksjoner for bedre ytelse. Disse funksjonene er nå raskere, kan levere mer økonomiske resultater for områder, og kan gjenbruke indeksbuffermekanismen beskrevet i forrige avsnitt.
- De innebygde funksjonsekvivalenter til tilknyttede operatører (`pluss ',` tider', `mtimes ',` og' og `eller ') er utvidet til å akseptere flere argumenter. Dette er spesielt nyttig for å summere (multiplisere, etc.) lister over objekter (av muligens forskjellige typer):
- matrix_sum = pluss (matrix_list {:});
- En FTP-objekttype basert på libcurl er implementert. Disse objektene tillater ftp-tilkoblinger, nedlastinger og opplastinger som skal administreres. For eksempel
- fp = ftp ("ftp.octave.org); cd (fp," gnu / oktav "); mget (fp," oktav-3.2.3.tar.bz2 "); lukke (fp);
- Standardbetjeningen til `assert (observed, expected) 'har vært avslappet for å ansette mindre streng kontroll som ikke krever at internene av verdiene skal matche. Dette unngår tidligere gyldige tester fra å bryte på grunn av nye interne klasser introdusert i fremtidige oktaversjoner.
- For eksempel var alle disse påstandene sanne i Octave 3.0.x, men falske i 3.2.x på grunn av nye optimaliseringer og forbedringer:
- assert (2 * linspace (1, 5, 5), 2 * (1: 5)) assert (nuller (0, 0), []) assert (2 * en (1, 5) (de (1,5)))
- Oppførelsen av biblioteket funksjoner 'ismatrix', `issquare 'og` issymmetric' er endret for bedre konsistens. `Ismatrix'-funksjonen returnerer nå sant for alle numeriske, logiske og tegn 2-D eller N-D-matriser. Tidligere returnerte "ismatrix" falsk hvis den første eller andre dimensjonen var null. Derfor er `ismatrix ([]) 'falsk, mens` ismatrix (nuller (1,2,0))' var sant.
- Funksjonen `issquare 'returnerer nå en logisk skalar, og tilsvarer uttrykket
- ismatrix (x) & amp; ndims (x) == 2 & amp; rader (x) == kolonner (x)
- Dimensjonen returneres ikke lenger. Som et resultat gir `issquare ([]) 'nå sant. Den `issymmetriske 'funksjonen kontrollerer nå for symmetri i stedet for Hermitianness. For sistnevnte ble ishermitian opprettet. Også, logisk skalar returneres i stedet for dimensjonen, så `issymmetrisk ([]) 'er nå sant. Funksjonshåndtak er nå klar over overbelastede funksjoner. Hvis en funksjon er overbelastet, bestemmer håndtaket på tidspunktet for referansen som funksjonen skal ringe. En ikke overbelastet versjon trenger ikke å eksistere.
- Overbelastningsfunksjoner for innebygde klasser (dobbelt, int8, celle osv.) er nå kompatibel med Matlab.
- Funksjonshåndtakene kan nå sammenlignes med == og! = operatørene, så vel som «isequal» -funksjonen.
- Resultatet av sammenkobling (ved bruk av []) og funksjonene «katt», «horzcat» og «vertcat» er forbedret for flerdimensjonale arrays.
- Operasjonsoperatørene + =, - =, * = og / = nå oppfører seg mer effektivt i visse tilfeller. For eksempel, hvis M er en matrise og S en skalar, så erklæringen
- M + = S;
- vil fungere på Ms data på plass hvis den ikke deles av en annen variabel, vanligvis øker både tid og minneeffektivitet. Bare utvalgte vanlige kombinasjoner påvirkes, nemlig: matrise + = matriksmatrise - = matriksmatrise. * = Matriksmatrise ./= matrise
- matrise + = skalar matrise - = skalar matrise * = skalar matrise / = skalar
- logisk matris | = logisk matrise logisk matrise & = logisk matrise
- hvor matrise og skalar tilhører samme klasse. Den venstre side må være en enkel variabel referanse.
- Når unary operatører oppstår i uttrykk, vil oktav også prøve å gjøre operasjonen på plass hvis det er et argument som er en midlertidig uttrykk.
- Effekten av sammenligningsoperatører (, =) anvendt på komplekse tall har endret seg for å være i samsvar med streng ordrebestemmelse definert av `max ',` min' og `sort '-funksjonene. Nærmere bestemt sammenlignes komplekse tall ved leksikografisk sammenligning av parene [abs (z), arg (z)] '. Tidligere ble bare virkelige deler sammenlignet; Dette kan oppnås trivielt ved å pakke operandene i ekte ().
- Den automatiske forenklingen av komplekse beregningsresultater har endret seg. Octave vil nå forenkle et komplekst tall med en null imaginær del eller en hvilken som helst kompleks matrise med alle elementer som har null imaginær del til en reell verdi. Tidligere ble dette gjort bare for positive nuller. Legg merke til at oppførselen til den komplekse funksjonen er uendret, og den fremkaller fortsatt en kompleks verdi selv om den imaginære delen er null.
- Som en bivirkning av koderefaktorering i liboctave er de binære logiske operasjonene lettere tilgjengelige for kompilatoroptimaliseringer og er dermed betydelig raskere.
- Oktav tillater nå brukerdefinerte `subsasgn 'metoder for å optimalisere ut overflødige kopier. For mer informasjon, se håndboken.
- Mer effektiv matriseplassbehandling. Octave er nå i stand til å håndtere uttrykkene M 'V M.' V V / M
- (M er en matrise og V er en vektor) mer effektivt i visse tilfeller. Spesielt, hvis M er trekantet, vil alle tre uttrykkene håndteres med en enkelt samtale til xTRTRS (fra LAPACK), med passende flagg. Tidligere krevde alle tre uttrykkene et fysisk transponering av M.
- Mer effektiv håndtering av visse blandede ekte komplekse matriksoperasjoner. For eksempel, hvis RM er en ekte matrise og CM en kompleks matrise, RM CM
- kan nå evalueres enten som
- kompleks (RM real (CM), RM-bilde (CM))
- eller som
- kompleks (RM) CM,
- avhengig av dimensjonene. Det første skjemaet krever flere tidsrammer og kopiering, men halverer FLOP-tellingen, som vanligvis gir bedre ytelse hvis RM har nok rader. Tidligere ble det andre skjemaet alltid brukt.
- Matrix divisjon påvirkes tilsvarende.
- Mer effektiv håndtering av trekantede matriksfaktorer returnert fra faktoriseringer. Funksjonene for beregning av QR-, LU- og Cholesky-faktoriseringer vil nå automatisk returnere de trekantede matriksfaktorene med riktig innvendig matrix_type-sett, slik at det ikke trenger å beregnes når matrisen brukes til deling.
- Den innebygde `sum'-funksjonen håndterer nå den ikke-opprinnelige summeringen (dvs. dobbel presisjonssummen av enkelt- eller heltallinnganger) mer effektivt, og unngår en midlertidig konvertering av hele inngangsarrangementet til dobbeltrom. Videre kan `sum 'nå akseptere et ekstraalternativargument, ved hjelp av en kompensert summeringsalgoritme i stedet for en enkel sum, noe som betydelig forbedrer presisjonen hvis det oppstår mye kansellering i summeringen.
- Den innebygde `bsxfun'-funksjonen bruker nå optimalisert kode for visse tilfeller der innebygde operatørhåndtak sendes inn. Navnlig optimaliseringene gjelder operatørene` pluss ', `minus',` ganger ', `ldivide' , `rdivide ',` power', `og ',` eller' (for logiske arrayer), relasjonsoperatørene `eq ',` ne', `lt ',` le', `gt ',` ge' og funksjonene `min 'og` max'. Optimaliseringer gjelder bare når begge operandene er av samme innebygde klasse. Blandede ekte / komplekse og enkle / doble operasjoner vil først konvertere begge operandene til en felles type.
- Funksjonene `strfind 'og` strrep' har nå utarbeidet implementeringer, noe som letter betydelig mer effektiv søking og erstatning i strenger, spesielt med lengre mønstre. Koden for `strcat 'er vektorisert og er nå mye mer effektiv når mange strenge er sammenkoblet. Funksjonene `strcmpi 'og` strncmpi' er nå innebygde funksjoner, noe som gir bedre ytelse.
- Matlab-stil ignorerer inngangs- og utgangsfunksjonsargumenter ved hjelp av tilde (~) støttes nå. Ignorerte utgangsargumenter kan detekteres fra en funksjon ved hjelp av den innebygde funksjonen `isargout '. For mer informasjon, se håndboken.
- Listen datatype, utdatert siden introduksjonen av celler, er fjernet.
- Accumarray-funksjonen er optimalisert og er nå betydelig raskere i visse viktige tilfeller.
- Oppførselen til isreal og isnumeriske funksjoner ble endret til å være mer Matlab-kompatibel.
- Heltaletematikk & amp; konvertering advarsler (oktav: int-convert-nan, oktav: int-convert-non-int-val, oktav: int-convert-overflow, oktav: int-math-overflow) er fjernet.
- rem og mod er nå innebygde funksjoner. De håndterer også heltallstyper effektivt ved hjelp av heltall aritmetikk.
- Sparsom indeksering og indeksert oppgave er for det meste omskrevet. Siden Octave bruker komprimert kolonnelager for sparsomme matriser, er stor oppmerksomhet viet til operasjoner som manipulerer hele kolonner. Slike operasjoner er nå betydelig raskere, så vel som noen andre viktige saker.
- Videre er det nå mulig å forhåndsfordele en sparsom matrise og deretter fylle den ved oppdrag, forutsatt at de oppfyller visse forhold. For mer informasjon, se "spalloc" -funksjonen, som ikke lenger er bare dummy. Følgelig er nzmax og nnz ikke lenger like i oktave. Octave kan også produsere en matrise med nnz & lt; nzmax som følge av andre operasjoner, så du bør konsekvent bruke nnz med mindre du virkelig vil bruke nzmax (dvs. plassen som er allokert til ikke-nullelementer).
- Sparsom sammenkobling er også berørt, og sammenføyende sparsomme matriser, spesielt større samlinger, er nå betydelig mer effektive. Dette gjelder både operatøren [] og katten / vertcat / horzcat.
- Det er nå mulig å ansette xGESDD LAPACK-drivere for å beregne singulærverdis dekomponering ved hjelp av svd (), i stedet for standard xGESVD, ved hjelp av konfigurasjonspseudo-variabelen svd_driver. XGESDD-driveren kan være opptil 6x ganger raskere når singulære vektorer blir bedt om, men rapporteres å være noe mindre robust på svært dårlig matriser.
- Konfigurasjons pseudo-variabler, for eksempel page_screen_output eller confirm_recursive_rmdir (eller ovennevnte svd_driver), aksepterer nå et "lokalt" alternativ som andre argument, og ber om at endringen skal bli avslått når den gjeldende funksjonen returnerer: funksjon [status, msg] = rm_rf (dir) confirm_recursive_rmdir (false, "local"); [status, msg] = rmdir (dir, "s"); ... endfunction Ved retur, vil confirm_recursive_rmdir bli gjenopprettet til verdien den hadde ved oppføring til funksjonen, selv om det var påfølgende endringer i variabelen i funksjonen rm_rf eller noen av funksjonene det ringer.
- pkg aksepterer nå a-forge-alternativet for å laste ned og installere pakker fra Octave Forge automatisk. For eksempel vil pkg install-forge General automatisk laste ned den nyeste versjonen av den generelle pakken og forsøke å installere den. Ingen automatisk oppløsning av avhengighet er gitt. Videre,
- pkg list -forge kan brukes til å liste alle tilgjengelige pakker.
- ** Den interne datarrepresentasjonen av strukturer er fullstendig omskrevet for å gjøre visse optimaliseringer mulig. Feltdataene kan nå deles mellom strukturer med liknende nøkler, men forskjellige dimensjoner eller verdier, og gjør operasjoner som bevarer feltene raskere. Økonomisert lagring brukes nå for skalarstrukturer (akkurat som de fleste andre skalarer), noe som gjør bruken mer minneeffektiv. Visse array-lignende operasjoner på strukturer (sammenkobling, uniform cellfun, num2cell) har fått en betydelig fart-up. I tillegg gir octave_scalar_map-klassen et enklere grensesnitt for å jobbe med skalarstrukturer i en C ++ DLD-funksjon.
- ** To nye formater er tilgjengelige for visning av tall:
- format short eng format long eng
- Begge visningstallene i ingeniørnotasjon, dvs. mantissa + eksponent hvor eksponenten er et multiplum av 3.
- ** Følgende funksjoner er nye i oktave 3.4:
- accumdim erfcx nfields pqpnonneg uigetdir bitpack fileread nth_element quadcc uigetfile bitunpack fminbnd onCleanup randi uiputfile blkmm fskipl pbaspect repelems uimenu cbrt ifelse pie3 reset whitebg krølle ishermitian powerset rsf2csf chop isindex ppder saveas daspect luupdate ppint strengt divergens slå sammen ppjumps textread
- ** Bruke bildefunksjonen for å vise bilder med eksterne programmer som display, xv og xloadimage støttes ikke lenger. Image_viewer-funksjonen har også blitt fjernet.
- ** Oppførselen til strukturoppgaver til ikke-strukturelle verdier er endret. Tidligere var det mulig å overskrive en vilkårlig verdi: a = 1; a.x = 2;
- Dette er ikke lenger mulig, med mindre a er en tom matrise eller cellegruppe.
- ** Dlmread-funksjonen er utvidet slik at du kan angi en egendefinert verdi for tomme felt.
- ** Dlmread og dlmwrite-funksjonene er modifisert for å akseptere fil-IDer (som returnert av fopen) i tillegg til filnavn.
- ** Octave kan nå optimalisere tolken overhead av et anonymt håndtak, hvis funksjonen bare kaller en annen funksjon eller håndterer med noen av parametrene bundet til bestemte verdier. Eksempel: f = @ (x) sum (x, 1);
- Når f kalles, blir anropet videresendt til @sum med konstant 1 vedlagt, og anonyme funksjonsanrop forekommer ikke på anropsstakken.
- Utdaterte funksjoner.
- Følgende funksjoner ble deprecated i oktave 3.2 og vil bli fjernet fra oktave 3.6 (eller hvilken versjon som er den andre store versjonen etter 3.2):
- create_set spcholinv splu dmult spcumprod spmax iscommand spcumsum spmin israwcommand spdet spprod lchol spdiag spqr loadimage spfind spsum mark_as_command sphcat spsumsq mark_as_rawcommand spinv spvcat spatan2 spkron str2mat spchol splchol unmark_command spchol2inv splitt unmark_rawcommand
- Følgende funksjoner er blitt utdatert i oktav 3.4 og vil bli fjernet fra oktave 3.8 (eller hvilken versjon som er den andre store versjonen etter 3.4):
- autocor cellidx gammai krylovb verdier autocov sending glpkmex replot betai fstat is_global saveimage
- For kompatibilitet med Matlab, er mu2lin (x) nå ekvivalent med mu2lin (x, 0).
- ARPACK-biblioteket distribueres nå med Octave, slik at det ikke lenger trenger å være tilgjengelig som ekstern avhengighet når man bygger Octave.
Hva er nytt i versjon 3.2.3:
- Octave 3.2.3 er en løsningsfrigivelse
Hva er nytt i versjon 3.0.4:
- Octave 3.0.4 er en utløsningsfeil. De fleste feilene som er rapportert siden utgivelsen av versjon 3.0.3 er blitt løst. Vær oppmerksom på at Octave 3.0 er vesentlig forskjellig fra Octave 2.1.x, spesielt med hensyn til grafikk, veibeskrivelse og innebygde variabler.
Kommentarer ikke funnet