GNU Octave

Software skärmdump:
GNU Octave
Mjukvaruinformation:
Version: 4.4.0 Uppdaterad
Ladda upp dagen: 22 Jun 18
Utvecklare: John W. Eaton
Licens: Gratis
Popularitet: 262

Rating: 2.7/5 (Total Votes: 3)

GNU Octave är ett program med öppen källkod och fritt distribuerad kommandoradsprogram som syftar till att tillhandahålla ett kraftfullt, lättanvänt och utökbart språk på hög nivå som kan användas för att hantera numeriska beräkningar .


Kan användas för att numeriskt lösa linjära och olinjära problem

Programvaran kan användas för att numeriskt lösa både linjära och olinjära problem, samt att utföra olika numeriska experiment. Den är kompatibel med Matlab, en numerisk datormiljö med flera paradigm, och kan användas som ett partiorienterat språk.

Dessutom erbjuder GNU Octave olika verktyg som låter dig lösa vanliga numeriska lineraalgebraproblem, manipulera polynomier, integrera vanliga funktioner, upptäcka rötterna av olinjära ekvationer, samt integrera vanliga differential-algebraiska och differentialekvationer.

Du kan använda dynamiskt laddade moduler eller användardefinierade funktioner för att utöka GNU Octave. Dessa kan skrivas i Octaves eget programmeringsspråk eller i C, C ++, Fortran, etc.

Komma igång med GNU Octave

Två metoder finns tillgängliga för installation av GNU Octave på ett GNU / Linux-operativsystem. Den första är det enklaste och innebär att du söker i "oktav & rdquo; paket i programmet Software Center (t.ex. Synaptic Package Manager) av din distribution.

Den andra metoden hjälper dig att installera den senaste versionen av produkten, men det handlar om att exekvera kommandon i en terminalemulator. Om du är nere med det, ladda ner det senaste källpaketet från Softoware eller från projektets officiella hemsida (se länken i slutet av artikeln), spara den på din dator och packa ut den.

Öppna en terminalemulatorapp, kör cd & rsquo; kommando följt av sökvägen till platsen för de extraherade arkivfilerna (t.ex. cd /home/softoware/octave-3.8.2), kör & lsquo; ./ configure & amp; gör & rsquo; kommandot att konfigurera och kompilera programmet och kör sedan & lsquo; sudo make install & rsquo; kommando att installera det. Använd det från kommandoradsgränssnittet genom att köra & lsquo; oktav & rsquo; kommando.

Under huven

Ta en titt under huven på GNU Octave-programmet, vi märker att det är skrivet helt i C ++-programmeringsspråket. Vi har installerat det i flera distribueringar av GNU / Linux, inklusive Arch Linux och Ubuntu, med hjälp av instruktionerna i ovanstående avsnitt. Programvaran är kompatibel med 32-bitars och 64-bitars datorplattformar.

Vad är nytt i den här utgåvan:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 4.2.0:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 4.0.3:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 4.0.1:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 4.0.0:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 3.8.2:

  • En av de största nya funktionerna för Octave 3.8.x-serien är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).

Vad är nytt i version 3.8.0:

  • En av de största nya funktionerna för Octave 3.8 är ett grafiskt användargränssnitt. Det är den enda sak användarna har begärt oftast de senaste åren och nu är det nästan klart. Men eftersom det inte är så polerat som vi vill, har vi bestämt oss för att vänta till 4.0.x-serien innan vi gör GUI till standardgränssnittet (tills dess kan du använda alternativet --force-gui för att starta GUI ).
  • Med tanke på hur länge tiden har gått och hur många buggfixar och förbättringar har gått sedan den senaste stora release-oktavan beslutade vi också att inte längre släppa ut alla dessa nya förbättringar för att bara förbättra GUI. Så snälla njut av Octave 3,8-versionen och förhandsgranskningen av den nya GUI. Vi tror att det fungerar bra, men vi vet också att det finns några uppenbara grova fläckar och många saker som kan förbättras.

Vad är nytt i version 3.4.0:

  • BLAS och LAPACK-bibliotek måste nu bygga Octave. Delmängden av referens BLAS- och LAPACK-biblioteken har tagits bort från oktavkällorna.
  • Funktionen "lookup" utökades till att vara mer användbar för binär sökning i allmänhet. Med hjälp av denna förbättring har ismemberfunktionen skrivits om för betydligt bättre prestanda.
  • Verkliga, heltal och logiska matriser, när de används i indexering, kommer nu att cache det interna index_vector-värdet (nollbaserade index) när de används framgångsrikt som index, vilket eliminerar konverteringsstraffet för efterföljande indexering av samma matris. I synnerhet betyder det att det inte längre behövs för att undvika upprepad indexering genom logiska arrayer med hjälp av funktionshinder.
  • Logiska matriser behandlas nu mer effektivt när de används som index. Oktav kommer att hålla indexet som en logisk mask om inte förhållandet mellan sanna element är tillräckligt liten med hjälp av en specialkod. Tidigare konverterades alla logiska matriser först till indexvektorer. Detta resulterar i besparingar både i minne och datatid.
  • Funktionerna `sub2ind 'och` ind2sub' implementerades som kompilerade funktioner för bättre prestanda. Dessa funktioner är nu snabbare, kan ge mer ekonomiserade resultat för intervall och kan återanvända indexbuffermekanismen som beskrivs i föregående stycke.
  • De inbyggda funktionskvivalenterna till associativa operatörer (`plus ',` tider', 'mtimes', `och 'och` eller') har utökats för att acceptera flera argument. Detta är särskilt användbart för att summera (multiplicera etc.) listor över objekt (av möjligen olika typer):
  • matrix_sum = plus (matrix_list {:});
  • En FTP-objekttyp baserad på libcurl har implementerats. Dessa objekt tillåter ftp-anslutningar, nedladdningar och uppladdningar som ska hanteras. Till exempel
  • fp = ftp ("ftp.octave.org); cd (fp," gnu / oktav "); mget (fp," oktav-3.2.3.tar.bz2 "), stäng (fp);
  • Standardbeteendet för "assert (observerat, förväntat)" har blivit avslappnad för att anställa mindre strikt kontroll som inte kräver att de interna värdena matchar. Detta undviker tidigare giltiga test från att bryta på grund av nya interna klasser införda i framtida oktavversioner.
  • Till exempel var alla dessa påståenden sanna i Octave 3.0.x men falska i 3.2.x på grund av nya optimeringar och förbättringar:
  • hävda (2 * linspace (1, 5, 5), 2 * (1: 5)) assert (nollor (0, 0), []) assert (2 * en (1, 5) (en (1,5)))
  • Bibliotekets beteende har "ismatrix", "issquare" och "issymmetric" ändrats för bättre konsistens. Funktionen `ismatrix 'returnerar nu sant för alla numeriska, logiska och tecken 2-D eller N-D matriser. Tidigare returnerade "ismatrix" false om den första eller andra dimensionen var noll. Därför var "ismatrix ([])" falskt, medan "ismatrix (nollor (1,2,0))" var sant.
  • Funktionen `issquare 'returnerar nu en logisk skalär och motsvarar uttrycket
  • ismatrix (x) & & amp; ndims (x) == 2 & amp; rader (x) == kolumner (x)
  • Dimensionen returneras inte längre. Som ett resultat ger `issquare ([]) 'nu sant. Den `issymmetric'-funktionen kontrollerar nu efter symmetri istället för Hermitianness. För den senare skapades ishermitian. Dessutom returneras logisk skalär snarare än dimensionen, så `issymmetrisk ([]) 'är nu sann. Funktionshandtag är nu medvetna om överbelastade funktioner. Om en funktion är överbelastad bestämmer handtaget vid tidpunkten för dess referens vilken funktion som ska ringas. En icke överbelastad version behöver inte existera.
  • Överbelastningsfunktioner för inbyggda klasser (dubbel, int8, cell etc.) är nu kompatibla med Matlab.
  • Funktionshandtag kan nu jämföras med == och! = operatörerna, liksom funktionen "isequal".
  • Prestation av sammanlänkning (med hjälp av []) och funktionerna "cat", "horzcat" och "vertcat" har förbättrats för multidimensionella arrays.
  • Operationsuppdragsoperatörerna + =, - =, * = och / = beter sig nu mer effektivt i vissa fall. Till exempel, om M är en matris och S en skalär, så uttalandet
  • M + = S;
  • kommer att fungera på M: s data på plats om den inte delas av en annan variabel, vilket oftast ökar både tid och minneseffektivitet. Endast valda gemensamma kombinationer påverkas, nämligen: matris + = matrismatris - = matrismatris. * = Matrismatris ./= matris
  • matris + = skalärmatris - = skalärmatris * = skalärmatris / = skalär
  • logisk matris | = logisk matris logisk matris & = logisk matris
  • där matris och skalär tillhör samma klass. Vänster sida måste vara en enkel variabelreferens.
  • När unära operatörer uppträder i uttryck, kommer Octave också att försöka göra operationen på plats om argumentet är en tillfällig uttryck.
  • Effekten av jämförelseoperatörer (, =) som tillämpas på komplexa tal har ändrats för att överensstämma med den stränga ordningen som definieras av funktionerna "max", "min" och "sort". Mer specifikt jämförs komplexa tal med lexikografisk jämförelse av paret `[abs (z), arg (z)] '. Tidigare jämfördes bara riktiga delar; detta kan uppnås trivialt genom att paketera operanderna i reella ().
  • Den automatiska förenkling av komplexa beräkningsresultat har ändrats. Octave kommer nu att förenkla ett komplext tal med en noll imaginär del eller någon komplex matris med alla element som har noll imaginär del till ett reellt värde. Tidigare gjordes detta endast för positiva nollor. Observera att beteendet hos den komplexa funktionen är oförändrad och det ger fortfarande ett komplext värde även om den imaginära delen är noll.
  • Som en bieffekt av kodrefaktorer i liboctave är de binära logiska operationerna lättare möjliga för kompilatoroptimeringar och är därmed betydligt snabbare.
  • Oktav tillåter nu användardefinierade "subsasgn" -metoder för att optimera överflödiga kopior. Mer information finns i handboken.
  • Effektivare hantering av matrisdelning. Octave kan nu hantera uttrycken M 'V M.' V V / M
  • (M är en matris och V är en vektor) mer effektivt i vissa fall. I synnerhet, om M är triangulär, kommer alla tre uttryck att hanteras med ett enda samtal till xTRTRS (från LAPACK), med lämpliga flaggor. Tidigare krävde alla tre uttryck en fysisk transponering av M.
  • Effektivare hantering av vissa blandade verkliga komplexa matrisoperationer. Till exempel, om RM är en riktig matris och CM en komplex matris, RM CM
  • kan nu utvärderas antingen som
  • komplex (RM real (CM), RM-bild (CM))
  • eller som
  • komplex (RM) CM,
  • beroende på måtten. Den första formen kräver mer tidsfördröjningar och kopiering men halverar FLOP-räkningen, vilket normalt ger bättre prestanda om RM har tillräckligt många rader. Tidigare användes den andra formen alltid.
  • Matrix division påverkas på samma sätt.
  • Effektivare hantering av triangulära matrisfaktorer returneras från faktoriseringar. Funktionerna för att beräkna QR-, LU- och Cholesky-faktoriseringar returnerar nu automatiskt de triangulära matrisfaktorerna med korrekt intern matrisenhetstyp, så att den inte behöver beräknas när matrisen används för division.
  • Den inbyggda "summa" -funktionen hanterar nu den icke-inhemska summeringen (dvs dubbel precisionssumma av enskilda eller heltalingångar) mer effektivt, vilket undviker en tillfällig omvandling av hela ingångsarrayen till dubblar. Vidare kan "summa" nu acceptera ett extraalternativargument med en kompenserad summeringsalgoritm snarare än en enkel summa, vilket avsevärt förbättrar precisionen om mycket avbrytning sker i summeringen.
  • Den inbyggda funktionen "bsxfun" använder nu optimerad kod för vissa fall där inbyggda handtag hanteras. Namnlösa: Optimeringarna gäller nämligen operatörerna "plus", "minus", "times", "ldivide" , `rdivide ',` power', `och ',` eller' (för logiska arrayer), relationsoperatörerna `eq ',` ne', `lt ',` le', `gt ',` ge' och funktionerna "min" och "max". Optimeringar gäller endast när båda operanderna är av samma inbyggda klass. Blandade verkliga / komplexa och enkla / dubbla operationer kommer först att konvertera båda operanderna till en gemensam typ.
  • Funktionerna `strfind 'och` strrep' har nu sammanställt implementeringar, vilket underlättar en betydligt effektivare sökning och ersättning i strängar, särskilt med längre mönster. Koden för `strcat 'har vektoriserats och är nu mycket effektivare när många strängar är sammanfogade. Funktionerna `strcmpi 'och` strncmpi' är nu inbyggda funktioner, vilket ger bättre prestanda.
  • Matlab-stil ignorerar inmatnings- och utgångsfunktionsargument med hjälp av tilde (~) stöds nu. Ignorerade utgångsargument kan detekteras från en funktion med den inbyggda funktionen 'isargout'. Mer information finns i handboken.
  • Listdatatypen, avlägsnad sedan introduktionen av celler, har tagits bort.
  • Accumarray-funktionen har optimerats och är nu betydligt snabbare i vissa viktiga fall.
  • Uppförandet av isrealiska och isnumeriska funktioner har ändrats för att vara mer Matlab-kompatibla.
  • Heltalets matte & amp; omvandlingsvarningar (oktav: int-convert-nan, oktav: int-convert-non-int-val, oktav: int-convert-overflow, oktav: int-math-överflöde) har tagits bort.
  • rem och mod är nu inbyggda funktioner. De hanterar också heltalstyper effektivt med hjälp av heltal aritmetik.
  • Sparsom indexering och indexerad uppgift har för det mesta omskrivits. Eftersom Octave använder komprimerad kolonnlagring för glesa matriser är stor uppmärksamhet ägnad åt operationer som manipulerar hela kolumnerna. Sådana operationer är nu betydligt snabbare, liksom några andra viktiga fall.
  • Vidare är det nu möjligt att fördela en glesmatris och därefter fylla den genom uppdrag, förutsatt att de uppfyller vissa villkor. För mer information, se "spalloc" -funktionen, som inte längre är enbart dummy. Följaktligen är nzmax och nnz inte längre lika i oktav. Octave kan också producera en matris med nnz & lt; nzmax som ett resultat av andra operationer, så du borde konsekvent använda nnz om du inte vill använda nzmax (det vill säga det utrymme som tilldelats för icke-nollelement).
  • Sparsam sammankoppling påverkas också, och sammanhängande sparsamma matriser, särskilt större samlingar, är nu betydligt effektivare. Detta gäller både operatören [] och katten / vertcat / horzcat.
  • Det är nu möjligt att använda xGESDD LAPACK-drivrutinerna för att beräkna singulärvärdesupplösningen med svd (), i stället för standard xGESVD, med hjälp av konfigurationspseudo-variabel svd_driver. XGESDD-drivrutinen kan vara upp till 6x gånger snabbare när singulära vektorer begärs, men rapporteras att vara något mindre robust på mycket dålig matriser.
  • Konfiguration pseudo-variabler, till exempel page_screen_output eller confirm_recursive_rmdir (eller ovanstående svd_driver), accepterar nu ett "lokalt" alternativ som andra argument, och begär att ändringen ska ångras när den aktuella funktionen returnerar: funktion [status, msg] = rm_rf (dir) confirm_recursive_rmdir (false, "local"); [status, msg] = rmdir (dir, "s"); ... slutfunktion Vid retur kommer confirm_recursive_rmdir att återställas till det värde som den hade vid inmatning till funktionen, även om det fanns efterföljande ändringar av variabeln i funktionen rm_rf eller någon av de funktioner som den ringer.
  • pkg accepterar nu a -forge-alternativet för att ladda ner och installera paket från Octave Forge automatiskt. Till exempel kommer pkg install-forge General automatiskt att hämta den senaste versionen av det allmänna paketet och försöka installera det. Ingen automatisk upplösning av beroenden ges. Vidare,
  • pkg list -forge kan användas för att lista alla tillgängliga paket.
  • ** Den interna datarrepresentationen av strukturer har skrivits om fullständigt för att göra vissa optimeringar möjliga. Fältdata kan nu delas mellan strukturer med samma nycklar men olika dimensioner eller värden, vilket gör operationer som bevarar fälten snabbare. Ekonomiserad lagring används nu för skalärstrukturer (precis som de flesta andra skalarer), vilket gör användningen mer minneseffektiv. Vissa array-liknande operationer på strukturer (sammankoppling, enhetlig cellfunction, num2cell) har fått en signifikant uppskyndning. Dessutom ger octave_scalar_map-klassen ett enklare gränssnitt för att arbeta med skalärstrukturer inom en C ++ DLD-funktion.
  • ** Två nya format är tillgängliga för att visa nummer:
  • format short eng format long eng
  • Båda visningsnumren i den tekniska notationen, dvs mantissa + exponent där exponenten är en multipel av 3.
  • ** Följande funktioner är nya i Octave 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 återställ whitebg curl ishermitian powerset rsf2csf chop isindex ppder saveas daspect luupdate ppint sträng divergens sammanfoga ppjumps textread
  • ** Användning av bildfunktionen för att visa bilder med externa program som display, xv och xloadimage stöds inte längre. Image_viewer-funktionen har också tagits bort.
  • ** Uppförandet av strukturuppdrag till icke-strukturella värden har ändrats. Tidigare var det möjligt att skriva över ett godtyckligt värde: a = 1; a.x = 2;
  • Det här är inte längre möjligt om inte a är en tom matris eller cellmatris.
  • ** Dlmread-funktionen har utökats för att möjliggöra att ange ett anpassat värde för tomma fält.
  • ** Funktionerna dlmread och dlmwrite har modifierats för att acceptera fil-ID (som returneras av fopen) utöver filnamn.
  • ** Octave kan nu optimera bort tolkens överhuvud för ett anonymt funktionshandtag, om funktionen helt enkelt kallar en annan funktion eller hanterar några av dess parametrar som är bundna till vissa värden. Exempel: f = @ (x) summa (x, 1);
  • När f kallas vidarebefordras samtalet till @sum med konstant 1 bifogad, och det anonyma funktionssamtalet uppträder inte på samtalstapeln.
  • Utförda funktioner.
  • Följande funktioner avlägsnades i oktave 3.2 och kommer att tas bort från oktav 3.6 (eller vilken version som är den andra stora versionen efter 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 dela unmark_rawcommand
  • Följande funktioner har avlägsnats i Octave 3.4 och kommer att tas bort från Octave 3.8 (eller vilken version som är den andra stora versionen efter 3.4):
  • autocor cellidx gammai krylovb värden autocov avsändning glpkmex replot betai fstat is_global saveimage
  • För kompatibilitet med Matlab motsvarar mu2lin (x) nu mu2lin (x, 0).
  • ARPACK-biblioteket distribueras nu med Octave, så det behöver inte längre vara tillgängligt som ett externt beroende när man bygger Octave.

Vad är nytt i version 3.2.3:

  • Octave 3.2.3 är en buggfixering

Vad är nytt i version 3.0.4:

  • Octave 3.0.4 är en buggfixering. De flesta buggar som rapporterats efter det att version 3.0.3 har släppts har blivit fixad. Observera att Octave 3.0 är väsentligt annorlunda än Octave 2.1.x, särskilt med avseende på grafik, banahantering och inbyggda variabler.

Liknande mjukvara

phc
phc

3 Jun 15

CodeViz
CodeViz

3 Jun 15

OpenCL
OpenCL

11 May 15

Annan programvara för utvecklare John W. Eaton

Octave
Octave

2 Jun 15

Kommentarer till GNU Octave

Kommentarer hittades inte
Kommentar
Slå på bilder!