Unité 4 / 11

Calcul symbolique : contrôler l'intelligence artificielle avec SymPy

Gains :

  • Capacité à reconnaître les capacités de base de SymPy (simplification, factorisation, résolution d'équations, dérivée, intégrale, limite) et à les utiliser pour valider les résultats de l'IA
  • Capacité à obtenir des résultats déterministes et précis en imprimant le code SymPy sur l'intelligence artificielle et en exécutant le code lui-même ; Comprendre que le fait que le code soit prédit par l'intelligence artificielle n'est pas une vérification
  • Lorsque le résultat de l'intelligence artificielle ne correspond pas à la sortie SymPy, possibilité d'utiliser SymPy comme base pour localiser l'erreur et ajouter manuellement des subtilités telles que des domaines.

L'outil le plus pratique et le plus puissant de ce module se trouve dans cette unité : le calcul symbolique et sa bibliothèque Python SymPy. Le calcul symbolique consiste à faire des mathématiques exactes non pas avec des nombres mais avec des symboles (des variables comme x, y, etc.) : prendre une intégrale avec sa formule exacte, résoudre une équation avec des lettres, simplifier une expression. SymPy est une bibliothèque Python open source, gratuite et déterministe qui fait cela, ce qui signifie qu'elle donne toujours exactement le même résultat correct à la même entrée. Cela le rend idéal pour valider les résultats de l'IA : l'IA donne de la vitesse et de la perspicacité, SymPy donne de la précision.

L'idée centrale de cette unité est la suivante : laisser l'IA faire le calcul, mais laisser SymPy valider le résultat. Mieux encore : demandez à l'IA d'écrire le code SymPy, vous exécutez le code et obtenez le résultat final. Vous éliminez donc le risque d’hallucination de l’IA avec le déterminisme de SymPy.

Encore une définition : CAS (Computer Algebra System) est le nom général donné à un logiciel qui effectue des mathématiques symboliques ; SymPy est un CAS. Les exemples commerciaux sont Mathematica et Maple, mais SymPy est gratuit et accessible car il fonctionne en Python.

Capacités principales de SymPy

SymPy fait précisément ce qui suit :

  • Simplification : simplifier(expression) réduit une expression à sa forme la plus simple.
  • Factorisation/expansion : factor() et expand().
  • Résoudre une équation : solve(equation, x) donne les racines exactes de l’équation.
  • Dérivée : diff(expr, x).
  • Intégrale : intégrer(expr, x) (indéfini) ou intégrer(expr, (x, a, b)) (défini).
  • Limite : limite (expression, x, point).
  • Série signifie : série (expression, x, 0, n).
  • Opérations matricielles, systèmes d'équations, équations différentielles et plus encore.

Étape par étape : workflow de validation AI + SymPy

1. Demandez à l’IA de résoudre le problème. Obtenez une solution étape par étape et le résultat final.

2. Demandez à l'IA d'écrire le code SymPy pour le même problème. Dites « Écrivez le code qui vérifie ce résultat avec SymPy ».

3. Exécutez le code vous-même. Ne laissez pas l'IA "prédire" la sortie du code - ce serait une hallucination. Exécutez le code dans un véritable environnement Python.

4. Comparez les deux résultats. Si le résultat trouvé manuellement par l'IA et la sortie SymPy sont les mêmes, la confiance augmente ; si différent, la faute vient de l'IA (faites confiance à SymPy).

5. S'il y a une différence, recherchez l'erreur. Dites à l'IA : "SymPy a donné ceci, votre résultat est différent ; trouvez votre erreur."

Attention : si vous prenez le code de l'IA et demandez « que produit ce code ? » Demander à l'IA "n'est PAS une vérification - car l'IA peut également constituer la sortie du code. Assurez-vous d'exécuter le code dans un environnement Python réel (installation locale, Jupyter ou un exécuteur Python en ligne). La puissance de SymPy est révélée lors de son exécution.

Solution manuelle d'IA, etc. SymPy - comparaison

fonctionnalité

Solution manuelle d'IA

SymPy

vitesse

très vite

rapide

précision

Aucune garantie (hallucination)

Déterministe, certain

Expliquer les étapes

bien

Faible (axé sur les résultats)

Intuition/stratégie

bien

Aucun

Admissibilité à la vérification

non

Oui

Meilleure combinaison : IA pour l'explication et la stratégie, SymPy pour la précision.

trois mini-cases

Cas 1 — Inadéquation intégrale. Un étudiant a demandé à AI ∫ x/(x²+1) dx. YZ a donné (1/2)·ln(x²+1) + C. L'étudiant a exécuté Integra(x/(x**2+1), x); SymPy a renvoyé log(x**2 + 1)/2. C’étaient les mêmes : une confiance totale. Ensuite, le contrôle dérivé a également été effectué avec diff ; Nous revenons à x/(x²+1). Triple confirmation, 3 minutes.

Cas 2 — Erreur de simplification. Un enseignant a demandé à l'IA de simplifier l'expression (x²−1)/(x−1) ; YZ a dit x+1 (correct mais omis la condition x≠1). SymPy simplifie((x**2-1)/(x-1)) a également donné x+1, mais l'enseignant a ajouté manuellement la contrainte de domaine (non définie à x=1). Leçon : Même SymPy ne met parfois pas l'accent sur la finesse du domaine ; l'humain ajoute un contexte mathématique.

Cas 3 — Système d'équations. Un ingénieur a demandé à l'IA de résoudre un système d'équations linéaires à 3 inconnues et s'est trompé sur une variable. SymPy avec solve([equations], [x, y, z]) a donné la solution exacte ; La valeur z de l'IA était fausse. L'ingénieur a pris le résultat SymPy et a demandé à l'IA de trouver le bug : une erreur de signe. Cela a été résolu en 4 minutes.

Quatre modèles copiables

1) Demander le code de vérification SymPy à YZ :

Vous avez résolu le problème suivant : [problème], votre résultat est [résultat]. Écrivez maintenant un code exécutable SymPy qui VÉRIFIE ce résultat. Laissez le code définir les symboles, calculez le résultat et imprimez-le. Ne devinez pas le résultat du code ; Je vais l'exécuter.

2) Solution à partir de zéro avec SymPy :

Écrivez un code Python qui résout le problème suivant avec SymPy : [problème]. Ajoutez les importations, les définitions de symboles et les impressions nécessaires. Écrivez ce que le code produit ; Donnez-moi simplement le code et je l'exécuterai. Ajoutez un court commentaire à chaque ligne de code.

3) Correction de l'IA avec la sortie SymPy :

Vous avez dit [résultat], mais SymPy a donné ceci : [Sortie SymPy]. Les deux sont différents. Puisque SymPy est déterministe, acceptez-le comme correct. Découvrez QUELLE étape vous avez commis une erreur dans votre solution et montrez-la.

4) Code de vérification croisée dérivé/intégral :

Vous avez pris l'intégrale suivante : ∫ [f(x)] dx = [F(x)]. Pour vérifier cela, écrivez un code dans SymPy qui prend le DERIVATIVE de F(x) et vérifie s'il est égal à f(x) (avec la logique de simplifier(diff(F)-f) == 0). Donnez juste le code.

Invite faible/Invite forte

Faible : "Qu'est-ce que ∫ sin²(x) dx ? Vérifiez également avec SymPy et écrivez le résultat."
Résultat : L'IA s'adapte à la fois à la réponse et à la « sortie SymPy » ; Les deux semblent cohérents, mais aucun n’a été confirmé. Fausse confiance.
Strong : "Écrivez un code SymPy exécutable pour ∫ sin²(x) dx (importation, symbole, intégration, impression). Vous n'écrivez pas la sortie - je vais l'exécuter et voir. Ajoutez également une ligne qui vérifie pour différencier le résultat et le renvoyer à sin²(x)."
Résultat : vous exécutez le code et voyez le résultat exact de SymPy ; la vérification devient réelle.

Erreurs courantes

  • Demander à l'IA de prédire la sortie du code. Il ne s’agit pas d’une validation ; L'IA peut également adapter la sortie. Vous exécutez le code.
  • Accepter le résultat SymPy sans le lire. Le format de sortie de SymPy est parfois inhabituel (par exemple log = logarithme naturel) ; Savoir interpréter.
  • Oublier le domaine. La simplification de SymPy ne met pas toujours l'accent sur des contraintes telles que x≠1 ; l'humain ajoute du contexte.
  • Définition du symbole incorrecte. Si x = symbol('x') est oublié, le code ne fonctionnera pas ; les hypothèses (positives, réelles) affectent le résultat (symboles('x', positif=True)).
  • Manque d'importation. C'est une erreur courante d'oublier d'importer depuis sympy import * ou les fonctions nécessaires.
Astuce : Pour vérifier l'exactitude d'une égalité dans SymPy, l'expression simplifier(left_side - right_side) == 0 est très utile : deux expressions sont identiques si la différence se simplifie à zéro. C’est le moyen le plus propre de vérifier une identité ou une simplification produite par l’IA.

Hypothèses de SymPy : même expression, résultat différent

Une fonctionnalité subtile mais importante de SymPy est son système d'hypothèses. Lors de la définition d'un symbole, vous pouvez lui donner des propriétés : symboles('x', positive=True) indique que x est positif, real=True indique qu'il est réel. Ces hypothèses peuvent changer le résultat. Par exemple, l'expression √(x²) reste sqrt(x**2) s'il n'y a aucune hypothèse sur x (car SymPy prend en compte que x peut être négatif et sait qu'il doit être |x|) ; Mais si x est défini comme positif, le résultat est directement x. Ce n'est pas une erreur, mais une rigueur mathématique : √(x²) = |x|, pas x = x.

L'IA omet souvent ou suppose à tort ces hypothèses lors de la génération du code SymPy. En conséquence, le code produit par l’IA peut ne pas apporter la simplification à laquelle vous « vous attendez » – et cela signifie en fait que SymPy se comporte avec plus de précision. Ainsi, lorsqu'une simplification semble « ne pas fonctionner », considérez d'abord les conditions mathématiques réelles du problème (x est-il positif ? est-il réel ? est-il différent de zéro ?) et ajoutez ces hypothèses au code. Faire les bonnes hypothèses garantit non seulement que SymPy renvoie le résultat correct, mais vous oblige également à réfléchir au domaine du problème, ce qui fait partie de la précision mathématique.

Attention : l'incapacité de SymPy à « simplifier » une expression n'est souvent pas un défaut, mais une question de rigueur mathématique : puisque les hypothèses nécessaires (positivité, réalisme) ne sont pas données, SymPy détient le résultat le plus général et le plus sûr. Si vous ne voyez pas la simplification que vous attendez, examinez d’abord les hypothèses relatives aux symboles.

En résumé

SymPy est un outil déterministe idéal pour valider les résultats mathématiques de l'IA. Workflow le plus puissant : stratégie et description pour l'IA, précision pour SymPy. Demandez à l'IA le code SymPy, mais assurez-vous d'exécuter la sortie vous-même - en faisant deviner à l'IA que la sortie du code n'est pas une validation. Si les résultats ne correspondent pas, faites confiance à SymPy et laissez l'IA trouver l'erreur. Recoupez les identités avec simplifier(différence) == 0 et les intégrales avec diff.

Tâche de candidature

Choisissez une intégrale, une solution d'équation et une simplification d'expression (trois problèmes distincts). Pour chacun, demandez à l’IA d’écrire manuellement la solution, puis le code SymPy. Exécutez les codes dans un véritable environnement Python (installation locale ou runner en ligne). Comparez les sorties SymPy avec les résultats manuels de l'IA. Essayez de trouver au moins une divergence ; Si vous le trouvez, demandez à l'IA de trouver son erreur. Notez le processus.

liste de contrôle

  • [ ] J'ai reçu à la fois la solution AI et le code SymPy pour chaque problème.
  • [ ] J'ai exécuté le code SymPy dans un véritable environnement Python.
  • [ ] J'ai comparé le résultat manuel YZ avec la sortie SymPy.
  • [ ] J'ai recoupé l'inverse dérivée/intégrale avec SymPy.
  • [ ] J'ai ajouté manuellement le domaine et les hypothèses (positives/réelles).
  • [ ] Dans le litige, je me suis appuyé sur SymPy et j'ai demandé à l'IA de trouver son erreur.