Définir des hypothèses sur les symboles avec SymPy : positive, real, integer

1. À propos des hypothèses dans SymPy

Lorsque nous créons une variable symbolique avec SymPy, nous pouvons préciser certaines de ses propriétés mathématiques. Ces informations sont appelées des hypothèses.

Par défaut, SymPy ne suppose généralement pas qu'un symbole est positif, réel ou entier. Lorsque ces informations sont importantes, nous pouvons les indiquer au moment de la création du symbole.

Parmi les hypothèses les plus courantes, nous trouvons :

  • positive=True : le symbole est strictement positif ;
  • real=True : le symbole est réel ;
  • integer=True : le symbole est entier.

Le programme suivant crée un symbole x sans aucune hypothèse particulière puis interroge SymPy sur quelques-unes de ses propriétés.

Sortie :

La valeur None signifie ici que SymPy ne dispose pas d'informations suffisantes pour répondre par True ou False. Elle ne signifie donc pas que la propriété est fausse.

2. Définir un symbole positif avec positive=True

L'hypothèse positive=True indique à SymPy que le symbole représente une quantité strictement positive.

Le programme suivant crée un symbole x supposé positif.

Sortie :

SymPy sait maintenant que x > 0. Cette information peut être utilisée automatiquement lors de certaines simplifications et déductions.

Une quantité strictement positive est également non nulle et réelle. SymPy peut donc déduire ces propriétés.

Sortie :

3. Définir un symbole réel avec real=True

L'hypothèse real=True permet d'indiquer qu'un symbole appartient à l'ensemble des nombres réels.

Le programme suivant crée un symbole réel x.

Sortie :

Tout nombre réel étant également un nombre complexe dont la partie imaginaire est nulle, SymPy déduit que x.is_complex est également vrai.

En revanche, savoir que x est réel ne permet pas de savoir s'il est positif ou négatif.

Sortie :

Le symbole peut être positif, négatif ou nul. SymPy ne possède donc pas assez d'informations pour déterminer son signe.

4. Définir un symbole entier avec integer=True

L'hypothèse integer=True indique qu'un symbole représente un nombre entier.

Le programme suivant crée le symbole entier n.

Sortie :

SymPy sait qu'un entier est également un nombre réel. Il peut donc déduire automatiquement la seconde propriété.

En revanche, l'hypothèse integer=True ne précise pas si l'entier est positif, négatif ou nul.

Sortie :

5. Tester les propriétés d'un symbole

SymPy fournit de nombreux attributs commençant par is_ permettant d'interroger les propriétés mathématiques d'un objet symbolique.

Parmi les plus courants, nous pouvons citer is_positive, is_negative, is_real, is_integer, is_nonzero, is_even et is_odd.

Le programme suivant crée un entier positif puis examine plusieurs de ses propriétés.

Sortie :

Même si n est un entier positif, SymPy ne peut pas savoir s'il est pair ou impair. La propriété is_even retourne donc None.

Les résultats de ces tests doivent ainsi être interprétés selon trois possibilités : True, False ou None.

6. Comprendre les déductions automatiques de SymPy

Le système d'hypothèses de SymPy est capable de déduire certaines propriétés à partir des informations fournies. Il n'est donc pas nécessaire de préciser toutes les propriétés d'un symbole.

Le programme suivant crée un symbole entier positif. SymPy peut en déduire plusieurs autres propriétés.

Sortie :

Ces résultats correspondent aux inclusions mathématiques classiques : un entier est rationnel, un rationnel est réel et un réel est complexe.

De même, lorsqu'un symbole est déclaré positif, SymPy sait automatiquement qu'il n'est pas négatif.

Sortie :

7. Utiliser les hypothèses pour simplifier des expressions

Les hypothèses peuvent modifier la manière dont SymPy simplifie certaines expressions. Une information sur le signe ou la nature d'un symbole permet parfois d'obtenir un résultat plus précis.

Par exemple, pour un nombre réel quelconque x, la racine carrée de x² est égale à la valeur absolue de x. Le programme suivant illustre cette propriété.

Sortie :

SymPy ne peut pas remplacer sqrt(x**2) par x, car un nombre réel peut être négatif. Il retourne donc Abs(x).

Si nous indiquons que x est positif, SymPy peut simplifier davantage l'expression.

Sortie :

Comme SymPy sait maintenant que x > 0, il peut conclure que |x| = x. Les hypothèses peuvent donc avoir une influence directe sur les transformations symboliques.

8. Définir plusieurs symboles avec les mêmes hypothèses

La fonction symbols() permet de créer plusieurs variables symboliques en leur attribuant simultanément les mêmes hypothèses.

Le programme suivant crée trois variables réelles x, y et z.

Sortie :

De la même manière, nous pouvons créer plusieurs entiers positifs en une seule instruction.

Sortie :

Tous les symboles créés par cet appel à symbols() reçoivent ici les mêmes hypothèses.

9. Combiner plusieurs hypothèses

Plusieurs hypothèses peuvent être fournies lors de la création d'un symbole lorsque nous avons besoin de préciser davantage son domaine mathématique.

Le programme suivant crée un symbole n qui représente un entier strictement positif.

Sortie :

Il n'est pas nécessaire d'ajouter real=True, puisque SymPy sait déjà qu'un entier est réel.

Nous pouvons également créer deux symboles appartenant à des domaines différents et observer l'effet de leurs hypothèses sur une expression.

Sortie :

Il est préférable de fournir uniquement les hypothèses réellement utiles. SymPy se charge ensuite de nombreuses déductions logiques entre les différentes propriétés.

10. À retenir !

Le système d'hypothèses SymPy permet de fournir des informations mathématiques sur les symboles afin d'améliorer les déductions et certaines simplifications symboliques.

  • positive=True indique qu'un symbole est strictement positif.
  • real=True indique qu'un symbole appartient aux nombres réels.
  • integer=True indique qu'un symbole représente un nombre entier.
  • Les hypothèses sont généralement précisées lors de la création du symbole.
  • is_positive, is_real et is_integer permettent d'interroger les propriétés d'un symbole.
  • Une propriété peut retourner True, False ou None.
  • None signifie que SymPy ne dispose pas d'informations suffisantes pour décider.
  • SymPy peut déduire automatiquement certaines propriétés à partir des hypothèses fournies.
  • Les hypothèses peuvent modifier le résultat de certaines simplifications symboliques.
  • La fonction symbols() permet d'attribuer les mêmes hypothèses à plusieurs symboles simultanément.

Le programme suivant rassemble les principales notions étudiées en créant trois symboles ayant des propriétés différentes.

Sortie :




 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *