Il permet également d'intégrer des fonctions ordinaires, manipuler des polynômes et intégrer des équations différentielles et différentielles algébriques ordinaires. Il est facilement extensible et personnalisable via des fonctions définies par l'utilisateur et écrites dans le langage d'Octave, ou en utilisant des modules chargés dynamiquement et écrits en C++, C, Fortran ou d'autres langages. GNU Octave est aussi un logiciel librement redistribuable. Vous pouvez le redistribuer ou le modifier selon les termes de la licence publique générale GNU (GPL) telle que publiée par la Free Software Foundation.
Octave a été écrit par John W. Eaton et beaucoup d'autres. La version 6.1.0 d'Octave est maintenant disponible et introduit de nombreuses modifications, notamment l'amélioration des performances, étiquetage de certaines fonctions et propriétés comme obsolètes, suppression des fonctions et propriétés obsolètes dans les versions précédentes, etc. Voici quelques changements notables dans la nouvelle version de GNU Octave.
Améliorations générales
- les fonctions "intersect", "setdiff", "setxor", "union" et "unique" acceptent une nouvelle option de tri "stable" qui renvoie les valeurs de sortie dans le même ordre que l'entrée, plutôt que par ordre croissant ;
- les services Web complexes RESTful sont désormais accessibles par les fonctions "webread" et "webwrite" en plus de la structure "weboptions". L'une des principales caractéristiques est la prise en charge des cookies pour permettre la communication RESTful avec le service Web. En outre, le navigateur Web du système peut désormais être ouvert par la fonction Web ;
- la fonction "linspace" produit maintenant des séquences symétriques lorsque les points terminaux sont symétriques. Cette fonction est plus intuitive et également compatible avec les récents changements apportés à MATLAB R2019b ;
- l'algorithme sous-jacent de la fonction "rand" a été modifié. Pour les sorties à précision unique, l'algorithme a été fixé de manière à produire des valeurs strictement dans la plage (0, 1). Auparavant, il pouvait occasionnellement générer la valeur du point final droit de 1. De plus, la nouvelle implémentation utilise un intervalle uniforme entre les valeurs en virgule flottante dans la plage (0, 1) plutôt que de viser une densité uniforme (nombre d'entiers aléatoires / longueur le long de la ligne des nombres réels) ;
- l'intégration numérique a été améliorée. La fonction "quadv" a été réécrite afin de pouvoir calculer les intégrales des fonctions périodiques. En même temps, les performances sont meilleures avec environ 3,5 fois moins d'évaluations de fonctions nécessaires. Un bogue dans "quadgk" qui faisait que les intégrales de chemins complexes spécifiées avec des "Waypoints" étaient parfois calculées dans la direction opposée a été corrigé ;
- l'option "edit" de la fonction d'édition "editinplace" est maintenant à "true" par défaut et l'option "home" est maintenant par défaut à la matrice vide []. Les fichiers ne seront plus copiés dans le répertoire HOME de l'utilisateur pour être édités. L'ancien comportement peut être restauré en réglant "editinplace" sur false et "home" sur "~/octave" ;
- la commande "format" prend en charge deux nouvelles options : "uppercase" et "lowercase" (par défaut). Par défaut, un "e" minuscule pour l'exposant en notation scientifique et un "a-f" minuscule pour les chiffres hexagonaux représentant 10-15. Avec les majuscules, imprimez plutôt "E" et "A-F". Les formats précédents de majuscules, E et G, ne contrôlent plus la casse de la sortie. De plus, la commande "format" peut être appelée avec plusieurs options pour contrôler le format, l'espacement et la casse dans un ordre arbitraire ;
- les références à la valeur "L" [par exemple, l'incrémentation (++), la décrémentation (-) et tous les opérateurs d'affectation en place (+=, -=, *=, /=, etc.)] ne sont plus autorisées dans les fonctions anonymes ;
- de nouveaux avertissements ont été ajoutés concernant les utilisations douteuses de l'opérateur de plage deux-points ":". Chaque opérateur a un nouvel identifiant d'avertissement afin qu'il puisse être désactivé si nécessaire ;
- Les "regexp" et les fonctions connexes gèrent et requièrent maintenant correctement les chaînes de caractères en codage UTF-8. Comme pour toute autre fonction qui nécessite que les chaînes soient encodées dans l'encodage natif d'Octave, vous pouvez utiliser "native2unicode" pour convertir à partir de votre locale préférée. Par exemple, le symbole de copyright en UTF-8 est native2unicode(169, "latin1" ;
- le fichier de démarrage "octaverc" peut maintenant être situé dans l'emplacement dépendant de la plateforme pour les fichiers de configuration locale de l'utilisateur (par exemple, ${XDG_CONFIG_HOME}/octave/octaverc sur les systèmes d'exploitation de type Unix ou %APPDATA%\octave\octaverc sur Windows) ;
- etc.
Graphics backend
- l'utilisation de Qt4 pour les graphiques et l'interface graphique est obsolète dans la version 6 d'Octave et aucune autre correction de bogue ne sera effectuée. Le support de Qt4 sera complètement supprimé dans la version 7 d'Octave ;
- La fonction "legend" a été entièrement réécrite. Elle corrige un certain nombre de bogues historiques et implémente également de nouvelles propriétés telles que "AutoUpdate" et "NumColumns". La boîte à outils "gnuplot", qui n'est plus activement maintenue, utilise toujours l'ancienne version de la fonction "legend" ;
- la fonction "axis" a été mise à jour, permettant ainsi de résoudre 10 bogues affectant les axes lorsque l'on applique la fonction "equal" ;
- les primitives graphiques acceptent maintenant une valeur de propriété de couleur dont la valeur est "none". Cela est utile lorsqu'une primitive particulière doit être cachée (par exemple, l'axe Y d'un objet axe avec "ycolor" = "none" sans cacher toute la primitive "visibility" = "off" ;
- une nouvelle propriété "FontSmoothing" a été ajoutée aux objets texte et axes qui contrôle si l'anticrénelage est utilisé lors du rendu des caractères. La valeur par défaut est "on", ce qui produit un texte lisse et plus attrayant visuellement ;
- la propriété de figure "windowscrollwheelfcn" est maintenant implémentée. Cela permet de fournir une fonction de rappel à exécuter lorsque les utilisateurs manipulent la molette de la souris sur une figure donnée ;
- les propriétés de figure "pointer", "pointershapecdata" et "pointerhapehotspot" sont maintenant implémentées. Cela permet de modifier la forme du curseur (pointeur en langage MATLAB) affiché dans une fenêtre de tracé ;
- la propriété de figure "paperpositionmode" a maintenant la valeur par défaut "auto" plutôt que "manual". Ce changement est plus intuitif et compatible avec MATLAB ;
- l'apparence des lignes à motifs "LineStyle" = " :"|"--"|"-." a été améliorée pour les petites largeurs ("LineWidth" moins de 1,5 pixel) ce qui est un scénario courant ;
- l'impression vers des fichiers EPS utilise désormais par défaut une zone de délimitation étroite (argument "-tight" pour l'impression). Cela a plus de sens pour les fichiers EPS qui sont normalement intégrés dans d'autres documents, et est compatible avec MATLAB. Si nécessaire, utilisez l'option "-loose" pour reproduire les chiffres tels qu'ils apparaissaient dans les versions précédentes d'Octave ;
- les périphériques d'impression suivants ne sont plus officiellement pris en charge : cdr, corel, aifm, ill, cgm, hpgl, mf et dxf. Un avertissement sera lancé lors de l'utilisation de ces dispositifs, et le code de prise en charge de ces formats sera éventuellement supprimé dans une prochaine version d'Octave ;
- Le placement des indices de texte et des exposants a été repensé et produit désormais des résultats visuellement attrayants, similaires à ceux de LaTeX.
Packages
- "pkg describe" liste maintenant les dépendances et les dépendances inverses (c'est-à-dire les autres paquets installés qui dépendent du paquet en question) ;
- "pkg test" teste maintenant toutes les fonctions d'un package ;
- lors du déchargement d'un package, pkg vérifie maintenant si les packages chargés restants dépendent de celui qui doit être retiré. Si c'est le cas, pkg abandonne avec un message d'erreur explicatif. Ce comportement peut être contourné avec l'option "-nodeps".
Compatibilité avec MATLAB
- la fonction "unique" renvoie maintenant des vecteurs d'index de colonne pour les deuxième et troisième sorties. Lorsque des valeurs doubles sont présentes, l'indice par défaut à renvoyer est maintenant la "première" occurrence. Le comportement précédent d'Octave, ou le comportement de MATLAB dans les versions antérieures à R2012b, peut être obtenu en utilisant l'indicateur "legacy" ;
- la fonction "setdiff" avec l'argument "rows" renvoie maintenant des résultats compatibles avec MATLAB. Le comportement précédent d'Octave, ou le comportement de MATLAB des versions antérieures à R2012b, peut être obtenu en utilisant l'indicateur "legacy" ;
- les fonctions "intersect", "setxor" et "union" acceptent maintenant un drapeau "legacy" qui modifie les valeurs d'index (deuxième et troisième sorties) ainsi que l'orientation de toutes les sorties pour correspondre aux versions de MATLAB antérieures à R2012b ;
- l'interpréteur supporte maintenant les poignées des fonctions imbriquées ;
- les propriétés graphiques "LineWidth" et "MarkerSize" sont maintenant mesurées en points, et non plus en pixels. Par rapport aux versions précédentes d'Octave, certaines lignes et certains marqueurs apparaîtront 4/3 plus grands ;
- la propriété meta.class "SuperClassList" a été renommée "Superclasslist" pour la compatibilité avec MATLAB. Le nom original existera comme alias jusqu'à la version 8.1 d'Octave ;
Fonctions et propriétés dépréciées
- les fonctions et propriétés suivantes ont été abandonnées dans Octave 6 et seront supprimées dans Octave 8 (ou toute autre version qui est la deuxième version majeure après 6) : "runtests" remplacé par "oruntests" ;
- la variable d'environnement utilisée par "mkoctfile" pour les indicateurs de l'éditeur de liens est maintenant "LDFLAGS" plutôt que "LFLAGS". LFLAGS est obsolète et un avertissement est émis s'il est utilisé, mais il continuera à fonctionner ;
Liste de quelques nouvelles fonctions ajoutées dans Octave 6
- auto_repeat_debug_command ;
- commandhistory ;
- commandwindow ;
- filebrowser ;
- is_same_file ;
- lightangle ;
- mustBeFinite ;
- mustBeGreaterThan ;
- mustBeGreaterThanOrEqual ;
- mustBeInteger ;
- mustBeNonpositive ;
- mustBeNonsparse ;
- namedargs2cell ;
- newline ;
- ode23s ;
- ostreamtube ;
- rescale ;
- rotx ;
- roty ;
- rotz ;
- stream2 ;
- stream3 ;
- streamline ;
- streamtube ;
- uisetfont ;
- verLessThan ;
- web ;
- weboptions ;
- webread ;
- webwrite ;
- workspace.
Source : GNU Octave 6.1.0
Et vous ?
Que pensez-vous de GNU Octave ?
Quelle nouveauté de GNU Octave 6.1.0 vous avez hâte de tester ?
Voir aussi
GNU Octave 3.8.0 : enfin une interface graphique pour le clone libre de MATLAB
La FSF et le projet GNU tentent de clarifier leur position respective vis-à-vis de Richard Matthew Stallman et évoquent leur collaboration future
Un ancien mainteneur de noyau de GNU partage ses réflexions sur le départ de Richard Stallman : « il est temps que la communauté des logiciels libres quitte l'adolescence et passe à l'âge adulte »
GNU/Linux : après plus de 25 ans d'existence, retour sur l'histoire mouvementée de l'OS libre