Cette fois, le langage arrive avec un nombre impressionnant de travaux et de recherche qui ont été réalisés. Non seulement un total de 117 fonctions entièrement nouvelles, mais aussi plusieurs centaines de fonctions mises à jour et améliorées, plusieurs milliers de corrections de bogues et de petites améliorations, et une foule de nouvelles idées pour rendre le système encore plus facile et plus fluide à utiliser. Ce résultat des travaux de recherche et développement est le fruit d'un travail acharné, il reflète également le succès des principes de conception fondamentaux du langage Wolfram.
Le langage Wolfram est un langage de calcul multiparadigme développé par la société Wolfram Research. Ce langage est utilisé pour le calcul symbolique, la programmation fonctionnelle et la programmation basée sur des règles et il peut utiliser des structures et des données arbitraires. C'est également le langage de programmation de Mathematica (programme de calcul symbolique mathématique) et du Wolfram Programming Cloud. Il est utilisé pour le calcul symbolique, la programmation fonctionnelle et la programmation basée sur des règles et il peut utiliser des structures et des données arbitraires.
Ce langage comprend des fonctions intégrées pour générer et exécuter des machines de Turing, créer des graphiques et du son, analyser des modèles 3D, des manipulations matricielles et résoudre des équations différentielles. Largement documenté, le Langage Wolfram possède des principes fondamentaux qui le différencient des autres langages de programmation : une base de connaissances intégrée, l'automatisation sous la forme de méta-algorithmes et de superfonctions, une compréhension du langage naturel intégrée. En 2019, les bibliothèques de Wolfram sont devenues compatibles avec le moteur de jeu Unity, donnant ainsi aux développeurs de jeux un accès aux fonctions de haut niveau du langage.
Chaque jour, chaque semaine, chaque mois, depuis un tiers de siècle, nous nous efforçons d'enrichir ce vaste cadre intégré qu'est Mathematica et le langage Wolfram. Aujourd'hui, nous pouvons constater les résultats de toutes ces idées, de tous ces projets et de tous ces travaux individuels : un rythme d'innovation régulier, qui se poursuit maintenant depuis plus d'un tiers de siècle :
Dans la version 1.0 du langage Wolfram et de Mathematica, il y avait un total de 554 fonctions. Pourtant, entre la version 12.0 et la version 13.0, l’équipe Wolfram Research a ajouté un total de 635 nouvelles fonctions (en plus des 702 fonctions qui ont été mises à jour et améliorées). L'éventail complet des nouveautés de la version 13 par rapport à la version 12 est très large et impressionnant. Nous présentons, ci-dessous, les nouveautés de la version 13.0 par rapport à la version 12.3.
Les intégrales
En 1988, l'une des caractéristiques de Mathematica 1.0 que les gens appréciaient le plus était la possibilité d'effectuer des intégrales de manière symbolique. Au fil des ans, l’équipe Wolfram Research a progressivement élargi l'éventail des intégrales réalisables. Et un tiers de siècle plus tard, dans la version 13.0, elle apporte des améliorations remarquables. Voici une intégrale qui ne pouvait pas être réalisée « en forme fermée » auparavant, mais qui peut l'être dans la version 13.0 :
Toute intégrale d'une fonction algébrique peut en principe être effectuée en fonction des objets généraux DifferentialRoot. Mais le plus grand défi algorithmique est d'obtenir une « réponse conviviale » en termes de fonctions familières. Il s'agit d'une activité délicate, où un petit changement dans un coefficient peut avoir un effet important sur les réductions possibles. Mais dans la version 13.0, il y a maintenant de nombreuses intégrales qui ne pouvaient auparavant être réalisées qu’avec des fonctions spéciales, mais qui donnent maintenant des résultats en fonctions élémentaires. Voici un exemple :
Dans la version 12.3, la même intégrale pouvait encore être réalisée, mais uniquement en termes d'intégrales elliptiques :
Fonctions mathématiques
À l'époque où l'on devait encore faire des intégrales et autres opérations de ce genre à la main, on était toujours ravi de découvrir que son problème pouvait être résolu grâce à une « fonction spéciale » exotique dont on n'avait jamais entendu parler auparavant. Les fonctions spéciales sont en quelque sorte un moyen d'emballer les connaissances mathématiques : une fois qu’on sait que la solution de l’équation est une fonction de Lamé, cela indique immédiatement beaucoup de détails mathématiques à son sujet.
Avec le langage Wolfram, l’équipe Wolfram Research considère les fonctions spéciales avec beaucoup de sérieux, non seulement en prenant en charge une vaste collection de ces fonctions, mais aussi en permettant de les évaluer avec n'importe quelle précision numérique et de les faire participer à une gamme complète d'opérations mathématiques.
« Lorsque j'ai commencé à utiliser les fonctions spéciales, il y a environ 45 ans, le livre qui constituait la référence standard était le Handbook of Mathematical Functions d'Abramowitz & Stegun (1964). Il répertoriait des centaines de fonctions, certaines largement utilisées, d'autres moins. Et au fil des années, dans le cadre du développement du langage Wolfram, nous avons régulièrement vérifié de nouvelles fonctions d'Abramowitz & Stegun », a déclaré Stephen Wolfram.
Dans la verion 13.0, de Mathematica, toutes les fonctions d'Abramowitz & Stegun sont désormais entièrement calculables dans le langage Wolfram. Les dernières fonctions ajoutées étaient les fonctions d'onde de Coulomb (pertinentes pour l'étude des processus de diffusion quantique).
Et voici, à partir de la version 13, comment obtenir cette première image dans le langage Wolfram.
L'histoire ne s'arrête pas là, comme on peut le voir maintenant :
Un autre type de nombre
On pourrait penser qu'un nombre n'est qu'un nombre. Et c'est fondamentalement vrai pour les nombres entiers. Mais lorsqu'un nombre est un nombre réel, l'histoire est plus compliquée. Parfois, il est possible de « nommer » un nombre réel de manière symbolique, par exemple. Mais la plupart des nombres réels n'ont pas de « nom symbolique ». Et pour les spécifier exactement, il faudrait donner un nombre infini de chiffres, ou l'équivalent. Le résultat est que l'on finit par vouloir avoir des nombres réels approximatifs que l'on peut considérer comme représentant certaines collections entières de nombres réels.Une façon de le faire est d'utiliser des nombres à précision finie, comme dans :
Une autre approche introduite dans la version 12.0 est celle de l'Around, qui représente en fait une distribution de nombres « répartis au hasard » autour d'un nombre donné :
Lorsqu’on effectue des opérations sur des nombres approximatifs, les « erreurs » sont combinées à l'aide d'un certain calcul d'erreurs qui est effectivement basé sur des distributions gaussiennes et les résultats obtenus sont toujours, dans un certain sens, statistiques. Dans le cas où le besoin d’utiliser des nombres approximatifs tout en obtenant des résultats vérifiables se présente ? L'une des approches consiste à utiliser Interval. Mais une approche plus rationnelle, désormais disponible dans la version 13.0, consiste à utiliser CenteredInterval. Voici un CenteredInterval utilisé comme entrée d'une fonction de Bessel :
Il est possible d'apporter la preuve dans le langage Wolfram de plusieurs manières. En utilisant Reduce, FindEquationalProof ou CenteredInterval qui, en fait, tirent parti de l'évaluation numérique. Comme dans chaque nouvelle version du langage Wolfram, la version 13.0 comporte de nombreuses améliorations en mathématique. Par exemple, un nouveau moyen pratique d'obtenir les pôles d'une fonction.
Et voici les pôles exacts (et leurs multiplicités) pour cette fonction dans le cercle unitaire :
Maintenant, il est possible d’additionner les résidus à ces pôles et utiliser le théorème de Cauchy pour obtenir une intégrale de contour. Toujours dans le domaine du calcul, l’équipe Wolfram Research a ajouté diverses commodités à la manipulation des équations différentielles. Grâce à son potentiel en matière de théorie des graphes, l'équipe a également été en mesure d'améliorer considérablement le traitement des Équations différentielles ordinaires (EDO), en trouvant des moyens de les « démêler » en formes bloc-diagonales qui nous permettent de trouver des solutions symboliques dans des cas beaucoup plus complexes qu'auparavant.
Pour les Équation différentielle partielle (EDP ), il n'est généralement pas possible d'obtenir des solutions générales « à forme fermée » pour les EDP non linéaires. Mais on peut parfois obtenir des solutions particulières connues sous le nom d'intégrales complètes (dans lesquelles il n'y a que des constantes arbitraires, et non des fonctions arbitraires « entières »). La version 13.0 de apporte une fonction explicite pour les trouver.
En passant du calcul à l'algèbre, l’équipe Wolfram Research a ajouté la fonction PolynomialSumOfSquaresList qui fournit une sorte de « certificat de positivité » pour un polynôme multivarié. L'idée est que si un polynôme peut être décomposé en une somme de carrés (et la plupart, mais pas tous, qui ne sont jamais négatifs le peuvent), cela prouve que le polynôme est effectivement toujours non négatif. En additionnant les carrés, on retrouve le polynôme d'origine. Dans la version 13.0, l’équipe Wolfram Research a également ajouté quelques nouvelles fonctions matricielles. Il y a Adjugate, qui est essentiellement un inverse de matrice, mais sans diviser par le déterminant. Et il y a DrazinInverse qui donne l'inverse de la partie non singulière d'une matrice, comme cela est particulièrement utilisé dans la résolution d'équations différentielles-algébriques.
Mécanique des solides et des structures
Les EDP sont à la fois difficiles à résoudre et difficiles à configurer pour des situations particulières. Au fil des ans, l’équipe Wolfram Research a développé des capacités de pointe en matière de résolution par éléments finis pour les EDP. Elle a également mis au point un système de géométrie informatique symbolique révolutionnaire qui permet de décrire de manière flexible des régions pour les EDP. Mais à partir de la version 12.2, l’équipe Wolfram Research a également apporté des améliorations : elle a commencé à créer des cadres de modélisation symbolique explicite pour des types particuliers de systèmes physiques qui peuvent être modélisés avec des EDP. Le transfert de chaleur étant déjà possible, ainsi que le transport de masse et l'acoustique. Maintenant, dans la version 13.0, l’équipe Wolfram Research ajoute la mécanique des solides et des structures.
La mécanique des solides est un domaine complexe, et la version 13 du langage Wolfram et de Mathematica offre une bonne technologie de niveau industriel pour le gérer. En fait, l’équipe Wolfram Research indique qu'elle possède une monographie entière intitulée Solid Mechanics Model Verification qui décrit comment elle valide les résultats de ses expériences. Elle fournit également une monographie générale sur la mécanique des solides qui décrit comment prendre des problèmes particuliers et les résoudre avec sa pile technologique.
Et vous ?
Avez-vous une expérience avec Mathematica ?
Que pensez-vous du langage Wolfram ?
Quelle nouveauté vous interesse le plus dans la version 13.0 ?
Voir aussi :
La version 12.0 de Mathematica (et du langage Wolfram) est disponible, elle est censée repousser les limites de ce qui peut être fait en mathématiques
Stephen Wolfram publie gratuitement le moteur Wolfram pour les développeurs, mais pas en open source
Wolfram Language et Mathematica v12.1 permettent de mieux se servir du machine learning, tandis que WolframScript permet au code Wolfram Language d'être exécuté à partir de n'importe quel terminal
Sortie de Mathematica 11, avec des réseaux neuronaux symboliques, la gestion de l'impression 3D et une interface retravaillée