J'ai remplacé Mathematica par cette alternative gratuite et open source
Mathematica est réputé pour sa capacité à résoudre toutes sortes de problèmes mathématiques et scientifiques. Il est également notoirement coûteux et de source fermée. Et s’il existait un programme open source pour Linux vous permettant d’explorer les mathématiques gratuitement ? Il y en a, et ça s'appelle SageMath.
Sommaire
Qu’est-ce que SageMath ?
SageMath se décrit sur sa page d'accueil comme « un système logiciel de mathématiques open source gratuit sous licence GPL ». Sa mission est de créer « une alternative open source viable » aux programmes propriétaires comme Mathematica, Maple ou MATLAB. Le projet a été lancé par le mathématicien William A. Stein, qui enseignait auparavant à l'Université de Washington. Il a lancé sa propre société, CoCalc, pour fournir en ligne SageMath et d'autres outils populaires de l'écosystème Python via les notebooks Jupyter.
En plus d'être une alternative open source à certains grands programmes mathématiques, SageMath est basé sur Python. D'autres systèmes utilisent leurs propres langages. Puisque Python est déjà largement utilisé, cela aplatit la courbe d’apprentissage. Si vous connaissez déjà Python, vous connaissez déjà en grande partie SageMath. Si ce n'est pas le cas, Python est déjà facile à apprendre et vous pouvez probablement comprendre les exemples de code même si vous n'êtes pas familier avec Python.
SageMath s'appuie également sur un grand nombre de packages open source devenus populaires dans la communauté informatique scientifique, tels que NumPy, SciPy et SymPy. Cela ressemble à la façon dont une distribution Linux moderne est construite à partir de composants open source existants tels que les utilitaires GNU, X11, Wayland et autres.
Comme pour d’autres projets open source, il a même donné naissance à un fork appelé passagemath. Ce projet vise à établir « une adhésion de premier ordre à l'écosystème scientifique Python », selon sa page GitHub. Puisqu'il s'agit d'un projet assez nouveau, il est difficile de le recommander pour l'instant, mais il sera intéressant de voir si cela se concrétise.
Installation de SageMath
Si vous utilisez Linux, SageMath peut être inclus dans le gestionnaire de packages de votre distribution. Si vous utilisez Ubuntu, vous devrez probablement l'installer via un environnement Mamba. Si vous utilisez Windows, vous devrez également installer le sous-système Windows pour Linux.
Étant donné qu'Ubuntu est également la distribution par défaut de WSL, vous devrez également créer un environnement Mamba. Heureusement, c'est facile à faire :
mamba create -n sage sage
Cela créera un environnement Mamba appelé « sage » et installera le package SageMath, ainsi que ses nombreuses dépendances. L'ensemble du système pèse environ un gigaoctet.
Lancer SageMath dans le terminal
Démarrer SageMath sur le terminal est simple. Si vous avez installé SageMath via un environnement Mamba, vous devrez l'activer :
mamba activate sage
Vous pouvez ensuite démarrer SageMath depuis la ligne de commande :
sage
Un environnement similaire à l'interpréteur Python ou IPython vous sera présenté. C'est en grande partie IPython sous le capot.
Vous pouvez commencer à saisir des commandes SageMath dans le terminal de cette façon, mais si vous souhaitez une expérience plus graphique ou un moyen de sauvegarder facilement votre travail, vous pouvez plutôt lancer l'interface du bloc-notes.
Lancer un bloc-notes SageMath
Mathematica est célèbre pour son interface de bloc-notes, mais SageMath en possède également une. Vous pouvez le démarrer en utilisant l'option –notebook sur la ligne de commande :
sage --notebook
Cela démarrera l’interface Jupyter Notebook. Le bloc-notes se lancera dans votre navigateur Web. Vous pouvez ensuite créer un carnet en sélectionnant l'option « créer un carnet » dans le menu. Le carnet s'ouvrira alors dans un nouvel onglet. Lorsque le menu de sélection du noyau apparaît, sélectionnez « SageMath » dans le menu et cliquez sur le bouton « OK ».
Vous pouvez créer du code ou des cellules Markdown. Pour taper dans une cellule, cliquez dessus puis tapez ce que vous voulez. Pour basculer entre Markdown et code, sélectionnez le type de code dans le menu déroulant.
Pour exécuter une cellule, appuyez sur Maj + Entrée.
Pour formater la sortie afin qu'elle ressemble à celle d'un manuel, utilisez l'option %format et définissez-la sur LaTeX :
%format latex
Arithmétique simple avec SageMath
Vous pouvez utiliser SageMath comme une calculatrice de bureau de base :
2 + 2
Vous pouvez prendre des exposants avec l'opérateur ^ (caret), bien que la méthode standard double astérisque (**) en Python fonctionne également. Par exemple, au carré 9 :
9^2
Vous pouvez également prendre des racines carrées. Remarquez comment SageMath laisse non évalués les nombres qui ne sont pas des carrés parfaits et élimine les carrés parfaits.
sqrt(2)
Vous pouvez obtenir une approximation numérique d'un nombre algébrique avec la fonction n() :
n(sqrt(2))
Vous pouvez utiliser le caractère _ (trait de soulignement) dans une session interactive pour obtenir la dernière valeur réussie. Cela évite de retaper ou de couper et coller. L’ajout de traits de soulignement remonte plus loin dans le temps. Pour l’avant-dernière opération, utilisez deux traits de soulignement (__) et pour l’avant-dernière, trois traits de soulignement (___), et ainsi de suite.
Résoudre des équations avec SageMath
Vous pouvez non seulement travailler avec des nombres, mais aussi avec des variables de lettres, car SageMath est un système de calcul formel. C'est utile pour résoudre des équations.
Pour utiliser une variable symbolique, vous devez d'abord la déclarer. SageMath définit déjà « x » par défaut, mais je vais quand même le démontrer :
x = var('x')
Nous pouvons définir une équation et la définir sur une variable :
eq = 2*x + 3 == 5
Alternativement, nous pouvons le définir comme égal à 0 en soustrayant 5 des deux côtés :
eq = 2*x + 3 - 5
Pour le résoudre pour x, vous pouvez utiliser la fonction de résolution avec l'expression que vous souhaitez résoudre et la variable que vous souhaitez résoudre :
solve(eq,x)
Vous pouvez résoudre des équations quadratiques et des polynômes d’ordre supérieur de la même manière :
solve(2*x^2 + 3*x + 5*x,x)
Cela vous montrera les solutions. Comme vous pouvez le constater grâce au « est » dans le résultat, SageMath connaît les nombres complexes.
Vous pouvez également résoudre des systèmes d’équations avec la fonction de résolution. J'utiliserai l'exemple de l'article de Wikipédia sur les systèmes d'équations linéaires :
x = var('x')
y = var('y')
z = var('z')
solve((3*x + 2*y - z == 1,2*x - 2*y + 4*z == -2,-x + 1/2*y - z == 0),(x,y,z))
Faire des tracés
Vous pouvez également tracer des fonctions de la même manière que vous le feriez avec une calculatrice graphique. Pour tracer notre fonction quadratique pour les valeurs x de -5 à 5 :
plot(2*x^2 + 3*x + 5,(x,-5,5))
Pour les passionnés de mathématiques : un peu de calcul et d'algèbre linéaire
SageMath est encore plus puissant avec des mathématiques supérieures comme le calcul et l'algèbre linéaire.
Nous pouvons prendre la dérivée de notre fonction quadratique par rapport à x avec la commande diff :
diff(2*x^2 + 3*x + 5,x)
Et vous pouvez prendre l'intégrale avec la commande intégrale :
integral(2*x^2 + 3*x + 5,x)
Vous pouvez résoudre de manière compacte des systèmes d'équations linéaires avec des matrices et des vecteurs. Je vais démontrer en réécrivant le système précédent sous forme d'équation matricielle :
A = Matrix(((3,2,-1),(2,-2,4),(-1,0.5,-1)))
b = vector((1,-2,0))
x = A.solve_right(b)
x
Nous pouvons vérifier la réponse avec la multiplication matricielle :
A * x
Alternativement, nous aurions pu résoudre ce problème en multipliant l’inverse de A par b :
x = A.inverse() * b
Cela ne fait qu'effleurer la surface des fonctionnalités de SageMath. Il y a de quoi occuper un mathématicien en herbe pendant des années.
