GNU Octave

Screenshot Software:
GNU Octave
Detalii soft:
Versiune: 4.4.0 Actualizat
Incarca data: 22 Jun 18
Producător: John W. Eaton
Licenţă: Gratuit
Popularitate: 262

Rating: 2.7/5 (Total Votes: 3)

GNU Octave este un proiect software open source și distribuit gratuit, care are ca scop furnizarea unui limbaj de nivel înalt puternic, ușor de utilizat și extensibil, care poate fi utilizat pentru calcularea calculelor numerice .


Poate fi folosit pentru rezolvarea numerică a problemelor liniare și neliniare

Software-ul poate fi folosit pentru a rezolva numeric atât probleme liniare cât și neliniare, precum și pentru a efectua diverse experimente numerice. Este compatibil cu Matlab, un mediu de calcul numeric multi-paradigmatic și poate fi folosit ca limbaj orientat pe loturi.

În plus, GNU Octave oferă diverse utilități care vă permit să rezolvați problemele de algebră liniară numerică, să manipulați polinoame, să integrați funcțiile obișnuite, să descoperiți rădăcinile ecuațiilor neliniare, precum și să integrați ecuații diferențiale-algebrice și diferențiale obișnuite. / p>

Puteți utiliza module încărcate dinamic sau funcții definite de utilizator pentru a extinde GNU Octave. Acestea pot fi scrise în limbajul de programare propriu al Octavei sau în C, C ++, Fortran, etc.

Începeți cu GNU Octave

Sunt disponibile două metode pentru instalarea GNU Octave pe un sistem de operare GNU / Linux. Prima este cea mai ușoară și implică căutarea "octavei"; pachet din aplicația Centrul de programe (de exemplu, Synaptic Package Manager) al distribuției dvs.

A doua metodă vă va ajuta să instalați cea mai recentă versiune a produsului, dar implică executarea comenzilor într-un emulator terminal. Dacă nu sunteți în legătură cu acest lucru, descărcați ultimul pachet sursă din Softoware sau din pagina oficială a proiectului (vedeți link-ul de la sfârșitul articolului), salvați-l pe PC și despachetați-l.

Deschideți o aplicație emulator terminal, rulați "cd & rsquo; comanda urmată de calea spre locația fișierelor arhivate extrase (de exemplu, cd /home/softoware/octave-3.8.2), executați "& configure & amp; & amp; face & rsquo; comanda pentru configurarea și compilarea programului, apoi executați "sudo make install"; comanda pentru ao instala. Utilizați-l din interfața de comandă prin executarea "octavei"; comandă.

Sub capotă

Privind sub capota programului GNU Octave, putem observa că acesta este scris în întregime în limbajul de programare C ++. Am instalat-o în mai multe distribuții de GNU / Linux, inclusiv Arch Linux și Ubuntu, utilizând instrucțiunile furnizate în secțiunea de mai sus. Software-ul este compatibil cu platformele pe 32 de biți și pe 64 de biți.

Ce este nou în această versiune:

dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică de utilizator. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiune:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 4.2.0:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 4.0.3:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 4.0.1:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 4.0.0:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 3.8.2:

  • Una dintre cele mai mari caracteristici noi pentru seria de lansări Octave 3.8.x este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).

Ce este nou în versiunea 3.8.0:

  • Una dintre cele mai mari caracteristici noi pentru Octave 3.8 este o interfață grafică cu utilizatorul. Este singurul lucru pe care utilizatorii l-au solicitat cel mai adesea în ultimii ani și acum este aproape gata. Dar, pentru că nu este la fel de lustruit cum ne-am dori, am decis să așteptăm până la seria de lansare 4.0.x înainte de a face interfața implicită GUI (până atunci puteți utiliza opțiunea - force-gui pentru a porni GUI ).
  • Având în vedere durata de timp și numărul de soluții și îmbunătățiri ale erorilor de la ultima lansare majoră Octave, am decis, de asemenea, să nu amânăm eliberarea tuturor acestor îmbunătățiri noi doar pentru a perfecționa interfața grafică. Deci, vă rugăm să vă bucurați de versiunea 3.8 a Octavei și previzualizarea noului GUI. Credem că funcționează în mod rezonabil, dar știm, de asemenea, că există câteva pete evidente și multe lucruri care ar putea fi îmbunătățite.

Ce este nou în versiunea 3.4.0:

  • Bibliotecile BLAS și LAPACK sunt acum obligate să construiască Octave. Subgrupul bibliotecilor de referință BLAS și LAPACK a fost eliminat din sursele Octave.
  • Funcția de căutare a fost extinsă pentru a fi mai utilă pentru căutarea binară generală. Folosind această îmbunătățire, funcția ismember a fost rescrisă pentru o performanță semnificativ mai bună.
  • Matricele reale, întregi și logice, atunci când sunt utilizate în indexare, vor cachea valoarea index_vector intern (indici bazați pe zero) atunci când sunt folosiți cu succes ca indici, eliminând pedeapsa de conversie pentru indexarea ulterioară prin aceeași matrice. În special, acest lucru înseamnă că nu mai este necesar să evităm indexarea repetată de către rețelele logice utilizând găsirea din motive de performanță.
  • Matricele logice sunt tratate mai eficient atunci când sunt folosite ca indici. Octave va păstra indicele ca o mască logică dacă raportul elementelor adevărate nu este suficient de mic, utilizând un cod specializat. Anterior, toate matricile logice au fost întotdeauna convertite mai întâi în vectori de index. Acest lucru duce la economii atât în ​​memorie, cât și în timpul de calcul.
  • Funcțiile `sub2ind 'și` ind2sub' au fost reimplementate ca funcții compilate pentru o performanță mai bună. Aceste funcții sunt acum mai rapide, pot aduce rezultate mai economice pentru intervale și pot reutiliza mecanismul de cache al indexului descris în paragraful anterior.
  • Funcțiile echivalente ale funcțiilor încorporate cu operatorii asociativi ("plus", "ori", "mtimes", "and" și "or") au fost extinse pentru a accepta mai multe argumente. Acest lucru este util în special pentru însumarea (multiplicarea, etc.) a listelor de obiecte (de tipuri eventual diferite):
  • matrix_sum = plus (matrix_list {:});
  • Un tip de obiect FTP bazat pe libcurl a fost implementat. Aceste obiecte permit conexiunile ftp, descărcările și încărcările să fie gestionate. De exemplu,

  • fp = ftp ("ftp.octave.org"); cd (fp, gnu / octave); mget (fp, octave-3.2.3.tar.bz2) li>
  • Comportamentul implicit al "assert (observat, așteptat)" a fost relaxat pentru a utiliza o verificare mai puțin strictă, care nu necesită corelarea valorilor interne ale valorilor. Acest lucru evită încercările valabile anterior de la rupere din cauza noilor clase interne introduse în viitoarele versiuni Octave.
  • De exemplu, toate aceste afirmații erau adevărate în Octave 3.0.x dar false în 3.2.x datorită optimizărilor și îmbunătățirilor noi:
  • (1, 5), 2 * (1: 5)) afirma (zerouri (0, 0), []) (cele (1,5)))
  • Comportamentul funcțiilor bibliotecii `ismatrix ',` issquare' și `issymmetric 'a fost modificat pentru o mai bună consistență. Funcția `ismatrix 'revine acum pentru toate matricile numerice, logice și de caractere 2-D sau N-D. Anterior, "ismatrix" a revenit fals dacă prima sau a doua dimensiune era zero. Prin urmare, `ismatrix ([]) 'a fost fals, în timp ce` ismatrix (zeros (1,2,0)') era adevărat.
  • Funcția `issquare 'returnează acum un scalar logic și este echivalent cu expresia
  • ismatrix (x) & amp; ndims (x) == 2 & amp; rânduri (x) == coloane (x)
  • Dimensiunea nu mai este returnată. Drept rezultat, `issquare ([]) 'acum este adevărat. Funcția "issymmetric" verifică acum simetria în loc de hermitianitate. Pentru aceasta din urmă, a fost creat isermitian. De asemenea, scalarul logic este returnat mai degrabă decât dimensiunea, deci "issymmetric ([])" este acum adevărat. Mânerele funcțiilor sunt acum conștiente de funcțiile supraîncărcate. Dacă o funcție este supraîncărcată, mânerul determină în momentul referinței care este funcția de apel. O versiune non-supraîncărcat nu trebuie să existe.
  • Funcțiile de suprasarcină pentru clasele încorporate (dublu, int8, celulă etc.) sunt acum compatibile cu Matlab.
  • Funcțiile de funcții pot fi acum comparate cu operatorii == și! =, precum și cu funcția `isequal '.
  • Performanța concatenării (folosind []) și funcțiile `cat ',` horzcat' și `vertcat 'au fost îmbunătățite pentru rețelele multidimensionale.
  • Operatorii de atribuire a operațiilor + =, - =, * = și / = se comportă acum mai eficient în anumite cazuri. De exemplu, dacă M este o matrice și S un scalar, atunci instrucțiunea
  • M + = S;
  • va opera pe baza datelor M în loc dacă nu este partajată de o altă variabilă, de obicei crescând atât timpul cât și eficiența memoriei. Sunt afectate numai combinațiile comune selectate, și anume: matrix + = matrix matrix - matrice matrice matrice matrice matrice matrice
  • matricea + = matricea scalară - = matricea scalară * = matricea scalară / = scalară
  • matrice logică | = matrice logică matrice logică & matrice logică
  • unde matricea și scalarul aparțin aceleiași clase. Partea din stânga trebuie să fie o referință variabilă simplă.
  • Mai mult, atunci când operatorii unari apar în expresii, Octave va încerca, de asemenea, să facă operația în loc dacă argumentul este expresie temporară.
  • Efectul operatorilor de comparație (=) aplicat numerelor complexe sa modificat pentru a fi în concordanță cu ordinea strictă definită de funcțiile "max", "min" și "sortare". Mai exact, numerele complexe sunt comparate prin compararea lexicografică a perechilor "[abs (z), arg (z)]". Anterior, au fost comparate doar piese reale; acest lucru poate fi obținut trivial prin împachetarea operanzilor în real ().
  • Simplificarea automată a rezultatelor computationale complexe sa schimbat. Octave va simplifica acum orice număr complex cu o parte imaginară zero sau orice matrice complexă, toate elementele având o parte imaginară zero la o valoare reală. Anterior, acest lucru a fost făcut numai pentru zerouri pozitive. Rețineți că comportamentul funcției complexe este neschimbat și încă produce o valoare complexă chiar dacă partea imaginară este zero.
  • Ca efect secundar al refactorizării codului în liboctave, operațiile logice binare sunt acum mai ușor accesibile la optimizările de compilatoare și sunt astfel mult mai rapide.
  • Octave permite acum metodele subsasgn definite de utilizator pentru optimizarea copiilor redundante. Pentru mai multe informații, consultați manualul.
  • O manipulare mai eficientă a diviziunii matrice. Octave este capabil acum să se ocupe de expresiile M 'V M.' V V / M
  • (M este o matrice și V este un vector) mai eficient în anumite cazuri. În special, dacă M este triunghiular, toate cele trei expresii vor fi tratate printr-un singur apel către xTRTRS (de la LAPACK), cu steaguri corespunzătoare. Anterior, toate cele trei expresii au necesitat o transpunere fizică a lui M.
  • Manipularea mai eficientă a anumitor operațiuni de matrice complexe reale complexe. De exemplu, dacă RM este o matrice reală și CM o matrice complexă, RM CM
  • pot fi evaluate acum ca fiind
  • complex (RM real (CM), RM imagini (CM))
  • sau ca
  • Complex (RM) CM,
  • în funcție de dimensiuni. Prima formă necesită mai mulți temporari și copierea, dar jumătate din numărul FLOP, care în mod normal aduce performanțe mai bune dacă RM are suficiente rânduri. Anterior, a fost întotdeauna folosit al doilea formular.
  • Divizarea matricei este afectată în mod similar.
  • Manipularea mai eficientă a factorilor matricei triunghiulare a revenit din factorizări. Funcțiile pentru calcularea factorizărilor QR, LU și Cholesky vor întoarce automat în mod automat factorii matricei triunghiulare cu setul corect matrix_type intern, astfel încât nu va fi necesar să fie calculat atunci când matricea este folosită pentru divizare.
  • Funcția "Sumă" încorporată gestionează acum mai eficient suma sumară non-nativă (adică suma dublă de precizie a intrărilor cu un singur sau întreg), evitând o conversie temporară a întregii matrice de intrări să se dubleze. Mai mult, "sum" poate accepta acum un argument de extraopțiune, folosind mai degrabă un algoritm de compensare compensat decât o sumă simplă, ceea ce îmbunătățește în mod semnificativ precizia dacă se produce o mulțime de anulare în sumare.
  • Funcția "bsxfun" încorporată folosește acum codul optimizat pentru anumite cazuri în care sunt introduse mânerele operatorului încorporat. Optimizările se referă în special la operatorii "plus", "minus", "times", "ldivide" , "rdivide", "power", "și", "sau" (pentru matrice logice), operatorii relaționali `eq ',` ne', `lt ',` le', `gt ' funcțiile `min 'și` max'. Optimizările se aplică numai atunci când ambii operanzi au aceeași clasă încorporată. Operațiile mixte reale / complexe și simple / duble vor converti mai întâi ambii operanzi la un tip comun.
  • Funcțiile `strfind 'și` strrep' au acum compilate implementări, facilitând căutarea și înlocuirea în mod semnificativ mai eficient în șiruri, mai ales cu modele mai lungi. Codul "strcat" a fost vectorizat și este acum mult mai eficient atunci când multe șiruri sunt concatenate. Funcțiile `strcmpi 'și` strncmpi' sunt acum funcții încorporate, oferind o performanță mai bună.
  • Argumentele de intrare și ieșire care ignoră stilul Matlab folosind tilde (~) sunt acum acceptate. Argumentele de ieșire ignorate pot fi detectate de la o funcție utilizând funcția "isargout" încorporată. Pentru mai multe detalii, consultați manualul.
  • Lista de date listă, depreciată de la introducerea celulelor, a fost eliminată.
  • Funcția accumarray a fost optimizată și este acum semnificativ mai rapidă în anumite cazuri importante.
  • Comportamentul funcțiilor isreal și isnumeric a fost modificat pentru a fi mai compatibil cu Matlab.
  • Matemaia intreg & amp; au fost eliminate avertismentele de conversie (Octave: int-convert-nan, Octave: int-convert-non-int-val, Octave: int-convert-overflow, Octave:
  • rem și mod sunt acum funcții încorporate. De asemenea, ele se ocupă de tipurile întregi folosind aritmetica integeră.
  • Indexarea rară și atribuirea indexată au fost rescrise mai mult. Din moment ce Octave utilizează stocarea coloanelor comprimate pentru matricele rare, o atenție deosebită este acordată operațiilor care manipulează coloane întregi. Astfel de operații sunt acum mult mai rapide, precum și alte cazuri importante.
  • În plus, acum este posibilă prealocarea unei matrici rare și umplerea acesteia ulterior prin sarcini, cu condiția să îndeplinească anumite condiții. Pentru mai multe informații, consultați funcția "spalloc", care nu mai este doar simplă. În consecință, nzmax și nnz nu mai sunt întotdeauna egale în Octave. Octava poate de asemenea să producă o matrice cu nnz < nzmax ca rezultat al altor operații, deci ar trebui să folosiți în mod constant nnz dacă nu vreți să folosiți nzmax (adică spațiul alocat elementelor nonzero).
  • Este, de asemenea, afectată concatenarea rigidă, iar matricele rare de concatenare, în special colecțiile mai mari, sunt acum mult mai eficiente. Acest lucru se aplică atât funcțiilor [], cât și funcțiilor cat / vertcat / horzcat.
  • Acum este posibil să se folosească opțional driverele xGESDD LAPACK pentru calculul descompunerii singulare a valorilor folosind svd (), în loc de xGESVD implicit, folosind svd_driver pseudo-variabilă de configurare. Driverul xGESDD poate fi de până la 6 ori mai rapid când sunt solicitați vectori singulari, dar este raportat că este oarecum mai puțin robust în cazul matricelor extrem de malformate.
  • Pseudo variabilele de configurare, cum ar fi page_screen_output sau confirm_recursive_rmdir (sau svd_driver mai sus mentionate), accepta acum o optiune "locala" ca argument al doilea, solicitand ca schimbarea sa fie anula cand functia curenta revine: function [status, msg] = rm_rf (dir) confirm_recursive_rmdir (fals, "local"); [status, msg] = rmdir (dir, "s"); ... endfunction La întoarcere, confirm_recursive_rmdir va fi restabilită la valoarea pe care o are la intrarea în funcție, chiar dacă s-au produs modificări ulterioare la variabila în funcția rm_rf sau la oricare dintre funcțiile pe care le numește.
  • pkg acceptă acum o opțiune -forge pentru descărcarea și instalarea automată a pachetelor de la Octave Forge. De exemplu, pkg install -forge general va descărca automat ultima versiune a pachetului general și va încerca să o instaleze. Nu există o rezolvare automată a dependențelor. Mai mult,
  • lista pkg -forge poate fi utilizată pentru a lista toate pachetele disponibile.
  • ** Reprezentarea internă de date a structurilor a fost complet rescrisă pentru a face anumite optimizări fezabile. Datele de câmp pot fi acum împărțite între structuri cu chei egale, dar cu dimensiuni sau valori diferite, făcând operații care păstrează mai rapid câmpurile. Stocarea economizată este acum utilizată pentru structuri scalare (la fel ca majoritatea celorlalte scalare), ceea ce face utilizarea lor mai eficientă din punct de vedere al memoriei. Anumite operațiuni asemănătoare array-urilor (concatenare, celulă uniformă, num2cell) au câștigat o accelerare semnificativă. În plus, clasa octave_scalar_map oferă acum o interfață mai simplă pentru a lucra cu structuri scalare într-o funcție C ++ DLD.
  • ** Sunt disponibile două formate noi pentru afișarea numerelor:
  • format short eng format eng lung
  • Ambele numere de afișare în notație inginerie, adică mantisa + exponent unde exponentul este un multiplu de 3.
  • ** Următoarele funcții sunt noi în 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 reset whitebg ondulare ishermitian Powerset rsf2csf cotlet isindex ppder saveas daspect luupdate ppint strread divergență îmbinare ppjumps textread
  • ** Utilizarea funcției imagine pentru a vizualiza imagini cu programe externe, cum ar fi display, xv și xloadimage, nu mai este acceptată. Funcția imagine_viewer a fost, de asemenea, eliminată.
  • ** A fost schimbat comportamentul asignărilor structurilor la valorile non-struct. Anterior, a fost posibilă suprascrierea unei valori arbitrare: a = 1; a.x = 2;
  • Acest lucru nu mai este posibil decât dacă a este o matrice goală sau o matrice de celule.
  • ** Funcția dlmread a fost extinsă pentru a permite specificarea unei valori personalizate pentru câmpurile goale.
  • ** dlmread și funcțiile dlmwrite au fost modificate pentru a accepta ID-uri de fișier (returnat de fopen), în plus față de numele de fișiere.
  • ** Octave poate acum să optimizeze distanța de interpretare a unui mâner de funcție anonim, dacă funcția numește pur și simplu o altă funcție sau o manipulează cu câțiva dintre parametrii săi legați de anumite valori. Exemplu: f = @ (x) sumă (x, 1);
  • Când apelul f este apelat, apelul este redirecționat către @sum cu constanta 1 atașată și apelul pentru funcția anonimă nu apare pe stiva apelurilor.
  • Funcții depreciate.
  • Următoarele funcții au fost depreciate în Octave 3.2 și vor fi eliminate din Octave 3.6 (sau orice versiune este a doua versiune majoră după 3.2):
  • create_set spcholin splendid spumprod spmax iscommand spums spmn israwcommand spdet spprod lisp spod spqd spqr spidr spdt spdt spdt spdt spdt spkr spdt spkr spdt spkr spdr spcd sp2dv spchol spcr spmcr sp2r spchol spchol
  • Următoarele funcții au fost depreciate în Octave 3.4 și vor fi eliminate din Octave 3.8 (sau orice versiune este a doua versiune majoră după 3.4):
  • autocor cellidx gammai valori krylovb autocov expediere glpkmex replot betai fstat is_global saveimage
  • Pentru compatibilitatea cu Matlab, mu2lin (x) este acum echivalent cu mu2lin (x, 0).
  • Biblioteca ARPACK este distribuită acum cu Octave, deci nu mai trebuie să fie disponibilă ca o dependență externă atunci când construiești Octave.

Ce este nou în versiunea 3.2.3:

  • Octave 3.2.3 este o versiune de fixare a erorilor

Ce este nou în versiunea 3.0.4:

  • Octave 3.0.4 este o versiune de fixare a bug-urilor. Cele mai multe bug-uri raportate de la lansarea versiunii 3.0.3 au fost reparate. Rețineți că Octave 3.0 este semnificativ diferit de Octave 2.1.x, în special în ceea ce privește grafica, manipularea traseelor ​​și variabilele încorporate.

Software similare

C
C

3 Jun 15

DashO Pro
DashO Pro

11 May 15

Toka
Toka

3 Jun 15

Linaro GCC
Linaro GCC

17 Feb 15

Alte software-uri de dezvoltator John W. Eaton

Octave
Octave

2 Jun 15

Comentarii la GNU Octave

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!