### 6.39.32 Produit indicé : `product mul`

Voir aussi 6.39.32, 6.44.6 et 6.44.8).

#### Produit des valeurs d’une expression : `product`

`product` ou `mul` a 4 ou 5 arguments.

- Avec 5 arguments `product(Xpr,Var,a,b,p)` ou `mul(Xpr,Var,a,b,p)` renvoie le produit demandé c’est à dire renvoie le produit des valeurs de l’expression `Xpr` quand la variable `Var` va de `a` à `b` avec un pas égal à `p`.
  On tape :
  `product(x```^```2+1,x,1,5,2)`
  Ou on tape :
  `mul(x```^```2+1,x,1,5,2)`
  On obtient :
  `520`
  En effet :
  2*10*26=520
- Avec 4 arguments, `product(Xpr,Var,a,b)` ou `mul(Xpr,Var,a,b)` n’a pas la même valeur selon que `a` est plus petit ou égal à `b` ou non car on veut avoir l’égalité :
  `product(Xpr,Var,a,b)= product(Xpr,Var,a,c)*product(Xpr,Var,c+1,b)`.
  Aussi, lorsque le pas `p` n’est pas précisé on a :
  - si `a` est inférieur à `b`,
    `product(Xpr,Var,a,b)` renvoie le produit des valeurs de l’expression `Xpr` quand la variable `Var` va de `a` à `b` avec un pas de 1 : cette syntaxe est compatible avec Maple.
    Ainsi si `a<= b` on a :
    `product(Xpr,Var,a,b)`=`product(Xpr,Var,a,b,1)`.
    On tape :
    `product(x```^```2+1,x,1,4)`
    Ou on tape :
    `mul(x```^```2+1,x,1,4)`
    On obtient :
    `1700`
    En effet :
    2*5*10*17=1700
  - si `a` est supérieur à `b+1`,
    `product(Xpr,Var,a,b)` renvoie l’inverse du produit des valeurs de l’expression `Xpr` quand la variable `Var` va de `b+1` à `a-1` avec un pas `1` : cette syntaxe est compatible avec Maple.
    On tape :
    `product(x```^```2+1,x,4,1)`
    Ou on tape :
    `mul(x```^```2+1,x,4,1)`
    On obtient :
    `1/50`
    En effet :
    1/(5*10)=1/50
  - si `a` est égal à `b+1`,
    `product(Xpr,Var,b+1,b)` renvoie 1.
    On tape :
    `product(x```^```2+1,x,5,4)`
    Ou on tape :
    `mul(x```^```2+1,x,5,4)`
    On obtient :
    `1`

#### Produit des éléments d’une liste : `product`

Voir aussi `.*` (cf 6.40.5) et `hadamard` pour les matrices (cf 6.44.8).
`product` ou `mul` peut aussi avoir 1 ou 2 arguments :
une liste de nombres réels (ou de décimaux) ou
deux listes de même longueur.
(voir aussi 6.39.32, 6.44.6 et 6.44.8).

- si `product` ou `mul` a un argument `l`, `product` ou `mul` renvoie le produit des éléments de `l`.
  On tape :
  `product([2,3,4])`
  On tape :
  `mul([2,3,4])`
  On obtient :
  `24`
  On tape :
  `product([[2,3,4],[5,6,7]])`
  On obtient :
  `[10,18,28]`
  -
- si `product` ou `mul` a deux arguments `l1` et `l2` (qui sont deux listes ou deux matrices), `product` ou `mul` renvoie le produit terme à terme des éléments de `l1` et des éléments de `l2`.
  On tape :
  `product([2,3,4],[5,6,7])`
  Ou on tape :
  `mul([2,3,4],[5,6,7])`
  On obtient :
  `[10,18,28]`
  On tape :
  `product([[2,3,4],[5,6,7]],[[2,3,4],[5,6,7]])`
  Ou on tape :
  `mul([[2,3,4],[5,6,7]],[[2,3,4],[5,6,7]])`
  On obtient :
  `[[4,9,16],[25,36,49]]`