On peut utiliser la méthode .match() pour de la recherche de motifs au sein d'une expression :
>>> from sympy import * >>> x = Symbol('x') >>> p = Wild('p') >>> q = Wild('q') >>> (5*x**2 + 3*x).match(p*x**2 + q*x) {p_: 5, q_: 3} >>> (x**2).match(p*x**q) {p_: 1, q_: 2}
S'il n'y a aucun motif correspondant, le retour est None :
>>> print (x+1).match(p**x) None
Il est possible d'étendre cette recherche de motifs aux fonctions :
>>> f = WildFunction('f', nofargs=1) >>> (5*cos(x)).match(p*f) {p_: 5, f_: cos(x)} >>> (cos(3*x)).match(f(p*x)) {p_: 3, f_: cos} >>> g = WildFunction('g', nofargs=2) >>> (5*cos(x)).match(p*g) None
Enfin, on peut exclure certains résultats dans la recherche de motifs :
>>> x = Symbol('x') >>> p = Wild('p', exclude=[1,x]) >>> print (x+1).match(x+p) None >>> print (x+1).match(p+1) None >>> print (x+1).match(x+2+p) {p_: -1}