Le produit externe sert à composer chacun des termes de l’opérande gauche avec chacun des termes de l’opérande droit par n’importe quelle fonction dyadique.
L’exemple classique est la table de multiplication de Pythagore :
Code : Tout sélectionner
1 2 3 ∘.× 1 2 3 4 5 ⍝ ∘ se prononce JOT
Output:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
⍴ 1 2 3 ∘.× 1 2 3 4 5
Output: 3 5 ⍝ 3 lignes et 5 colonnes
On peut obtenir un résultat analogue en RPL de plusieurs façons :
Code : Tout sélectionner
1: [ 1 2 3 ] # Sous forme de matrice
2: { 1 2 3 4 5 } # Sous forme de liste
×
1: {[1 2 3] [2 4 6] [3 6 9] [4 8 12] [5 10 15]}
Code : Tout sélectionner
1: { 1 2 3 } # Sous forme de liste
2: [ 1 2 3 4 5 ] # Sous forme de matrice
×
1: {[1 2 3 4 5] [2 4 6 8 10] [3 6 9 12 15]}
En APL :
Code : Tout sélectionner
1 2 3 4 5 ∘.÷ 1 2 3
Output:
1 0.5 0.3333333333
2 1 0.6666666667
3 1.5 1
4 2 1.333333333
5 2.5 1.666666667
En RPL :
1: [ 1 2 3 4 5] # Matrice
2: { 1 2 3 } # Liste
÷
1: {[1 2 3 4 5]
[.5 1 1.5 2 2.5]
[.333 .666 1 1.333 1.666]
}
Code : Tout sélectionner
« → x y f « y « x f EVAL » MAP » »
'PE. STO
Code : Tout sélectionner
3: [ 1 2 3 ] # ou { 1 2 3 }
2: [ 1 2 3 4 5 ] # ou { 1 2 3 4 5 }
1: « × »
VAR PE.
1: ⌈ 1 2 3 4 5 ⌉
| 2 4 6 8 10 |
⌊ 3 6 9 12 15 ⌋
Table d’addition en utilisant des listes :
Code : Tout sélectionner
3: { 1 2 3 }
2: { 1 2 3 4 5 }
1: « ADD »
VAR PE.
1: {{2 3 4 5 6} {3 4 5 6 7} {4 5 6 7 8}}
Code : Tout sélectionner
5 4 8 ∘.⌈ 7 3 9 1
Output:
7 5 9 5
7 4 9 4
8 8 9 8
Code : Tout sélectionner
3: { 5 4 8 }
2: { 7 3 9 1 }
1: « MAX »
VAR PE.
1: {{7 5 9 5} {7 4 9 4} {8 8 9 8}}
La seconde ligne aux max entre 4 et 7 3 9 1
Et la dernière ligne aux max entre 8 et 7 3 9 1
Exemple – Répartition des âges
On se donne une liste d’âges et une liste de répartitions, par exemple on veut savoir combien de personnes ont entre 10 et 15 ans, entre 15 ans et 40 ans et plus de 40 ans.
Code : Tout sélectionner
AGES ← 27 12 18 75 40 22 35 6 ⍝ Les âges
TRAN ← 10 15 40 ⍝ Tranches d'âges
TRAN ∘.< AGES ⍝ Matrice des comparaisons
1 1 1 1 1 1 1 0
1 0 1 1 1 1 1 0
0 0 0 1 0 0 0 0
CUM ← +/ TRAN ∘.< AGES ⍝ Cumul des lignes
7 6 1
Code : Tout sélectionner
CUM - 1↓CUM,0 ⍝ Différence entre les termes
1 5 1
En RPL :
Code : Tout sélectionner
3 : { 10 15 40 }
2 : { 27 12 18 75 40 22 35 6 }
1: « < »
VAR PE.
1: {{1 1 1 1 1 1 1 0}
{1 0 1 1 1 1 1 0}
{0 0 0 1 0 0 0 0}}
1: « ∑LIST »
PGR LIST PROC DOLIST
1: { 7 6 1 }
Code : Tout sélectionner
1: { 7 6 1 }
0 + △LIST ABS
1: {1 5 1}
Code : Tout sélectionner
STAT ← {c - 1↓(c ← +/⍺ ∘.< ⍵),0}
TRAN STAT AGES
Output:
1 5 1
Code : Tout sélectionner
« « < » PE. « ∑LIST » DOLIST
0 + △LIST ABS
»
'STA STO
3 : { 10 15 40 }
2 : { 27 12 18 75 40 22 35 6 }
VAR STAT
1: { 1 5 1 }