Le calcul formel/numérique sur ordinateur et son utilisation dans l'enseignement des mathématiques fait beaucoup fantasmer :certain pensent qu'avec le bon logiciel on peut résoudre n'importe quelle équation bien mieux qu'un humain et sans avoir besoin d'étudier beaucoup de mathématiques d'autres n'ont aucune confiance en ces outils et pensent qu'il ne peuvent que diminuer nos capacités de calcul et ensuite de raisonnement en mathématiques. La réalité me semble souvent bien plus complexe que cela et la confrontation des deux approches m'amène parfois à comprendre bien plus de choses que la question de départ ... un petit exemple au travers des formes closes que je viens d'obtenir pour les deux séries Fourier ci-dessous :
deux séries numériques calculées par le théorème de Dirichlet |
Pour les besoins d'un cours d'analyse Harmonique je suis souvent à la recherche de fonction développable en séries de Fourier pour tester la compréhension par les étudiants du théorème de Dirichlet ou de la formule de Parseval. Un des moyens classique de le faire est de demander de calculer la valeur d'une série donc les coefficients sont directement relié à la série de Fourier. C'est en étudiant la série de Fourier associée à la fonction $2\pi$-périodique égale à $\cos(x)$ sur $0[,\pi[$ et à $0$ sur $[-\pi,0[$ que j'ai pu calculer les 2 séries en question.
Je me sers du logiciel de calcul formel (wx)maxima pour rechercher des fonctions dont les coefficients de Fourier ne sont pas trop compliqués, puis ensuite pour vérifier mes résultats avant de poser mon sujet (et éviter une erreur de calcul dans la rédaction d'un sujet de DS). Quand je fais cette vérification je suis presque systématiquement impressionné de voir que (wx)maxima trouve plus ou moins la même forme close que moi ... mais parfois il donne une forme très compliquée utilisant certaines fonction spéciales peut connues comme $\rm erf$, $\Psi_0$ ou la fonction W de Lambert. Dans ce cas je compare les valeurs approchées des deux formules qui coïncident à $10^{-16}$ ou pas !
Dans le cas présent j'obtenais une confirmation nette du résultat pour la première série :
$$\sum_{k=1}^\infty {k\sin(k\pi/2)\over 4k^2-1}=
\frac{\sqrt{2} {\arctan}\left( \frac{\sqrt{2}}{\sqrt{2}+2}\right) -\sqrt{2} {\arctan}\left( \frac{\sqrt{2}}{\sqrt{2}-2}\right) }{8}
=
{\sqrt{2}\pi\over 16}\approx 0.2776801836348976$$
( avec une formule utilisant $\arctan$) mais pas pour la deuxième série avec des valeurs numériques complètement incompatibles :
$$\sum_{k=1}^\infty {k\sin(k\pi/2)\over 4k^2-1}=
\frac{\sqrt{2} {\arctan}\left( \frac{\sqrt{2}}{\sqrt{2}+2}\right) -\sqrt{2} {\arctan}\left( \frac{\sqrt{2}}{\sqrt{2}-2}\right) }{8}
=
{\sqrt{2}\pi\over 16}\approx 0.2776801836348976$$
( avec une formule utilisant $\arctan$) mais pas pour la deuxième série avec des valeurs numériques complètement incompatibles :
$$\frac{10 \sqrt{3} e-5 {{3}^{\frac{3}{2}}}\, \sqrt{{\pi} } i {\rm erf}\left( i\right) }{48}\approx 2.564242426927912\dots \neq \frac{\sqrt{3} {\pi} }{16}\approx 0.3400873807939158\dots $$
Avant de conclure que (wx)maxima possède un bug il est bon de faire d'autre vérification et de chercher de quelle partie de (wx)maxima provient l'erreur.J'ai commencé par vérifier avec d'autres outils de calculs, d'abord avec SAGE très apprécié des fans de python mais qui dans la pratique ne fait souvent rien d'autre que transférer les calculs à maxima! On trouve donc la même formule et la même valeur approchée en utilisant SAGE :
Une autre source très pratique pour vérifier ce de type de résultat est de poser la question au moteur de calcul wolframalpha accessible librement en ligne. Et là double surprise :
- cet outil trouve une formule close très différente de celle obtenue avec wxmaxima (elle fait appel à une fonction spéciale $F_1$ et des racines de $-1$)
- mais la valeur approchée correspond bien à celle de $ {\sqrt{3}\pi\over 16}$
D'un côté c'est rassurant car wolframalpha valide la formule que j'ai calculé, mais d'un autre côté quel est le bug dont est victime wxmaxima :
- est ce la formule trouvée qui est fausse ?
- est ce la valeur approchée qui est mal calculée ?
un moyen simple de trancher est de demander à wolframalpha de faire l'évaluation numérique de la forme close trouvée par wxmaxima :
Conclusion wxmaxima ne fait pas d'erreurs en calculant la valeur approchée, mais en cherchant la forme close qui est fausse !
En discutant sur la mailing liste des développeurs de Maxima j'ai pu découvrir que cette recherche de forme close est faite par l'algorithme de Gosper qui a été implémenté pour la première fois en 1970 sur le système de calcul formel MACSYMA (l’ancêtre de maximax/wxmaxima). Cet algorithme ramène le problème à la recherche d'une expression des coefficients de la série en terme de fractions rationnelles d'autres coefficients dont on peut déduire la valeur des série. Dans les faits cette fraction est très souvent un polynôme dont le degré peut être borné apriori ... en bref l'algorithme de Gosper revient à résoudre un (gros) système linéaire d'équations. Pour ceux qui s'intéressent au problème le rapport de bug est sur sourceforge: https://sourceforge.net/p/maxima/bugs/3630/
Très intéressant!!!!!! Merci!!!!
RépondreSupprimer