Cours Apl 05 : Commençons à jouer avec les objets
 

   


Dans le chapitre précédent nous avons vu comment créer et dimensionner les objets.

Nous allons un peu approfondir ce sujet et vite passer au suivant.

 

Concaténation, linéarisation

Pour ces 2 opérations on utilise la fonction symbolisée par une virgule.

- on appelle linéarisation le fait de transformer un objet en vecteur.

Exemple ,Mat1   donne

1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1

sa dimension est : ½ ,Mat1

16

 

On peut aussi transformer un scalaire en un vecteur d'un seul élément.

ex : ½,5 rend 1

alors que ½5 rend vide.

 

- La concaténation consiste à coller 2 objets.

Soient 2 vecteurs numériques :

V1 1 2 3

V2 4 5 6 7

 

         V1,V2 rend

1 2 3 4 5 6 7

 

On peut également concaténer des matrices sous réserve que leurs dimensions soient compatibles.

Par exemple pour coller 2 matrices cote à cote, il faut qu'elles aient le même nombre de lignes.

Soient :

         Ma1 2 2 ½ 'aabb'

         Ma2 2 2 ½ 'eeff'

         Ma1

aa
bb

         Ma2

ee
ff

Pour obtenir une matrice composée de Ma1 et Ma2, il suffit d'écrire :

         Ma1,Ma2       on obtient :

aaee
bbff

 

 

Travail avec axes

Par défaut Apl travaille sur la dernière dimension (pour une matrice : les colonnes).

Pour le coller des matrices l'une en dessous de l'autre, il faut préciser qu'on veut travailler sur la première dimension en collant [1] juste à droite de la virgule.

         Ma1,[1]Ma2

aa
bb
ee
ff

Quand on manipule 2 matrices "Ma1,Ma2" est équivalent à "Ma1,[2]Ma2".

Le travail avec axes s'applique également au take et au drop.

Ainsi pour afficher la première colonne d'une matrice Mnum1, on peut écrire : 1[2]Mnum1

On peut ainsi l'utiliser sans même connaître son nombre de lignes.

 

Générer une suite de nombre en utilisant le iota monadique : ¼

Exemple :

         ¼ 5 rend

1 2 3 4 5

Retenez bien cette fonction. Nous l'utiliserons dans les chapitres suivants.


Travaux pratiques :

 

0. Chargez votre Ws de travaux pratiques :

)load c:\Mes documents\pratique-apl

 

1. Affichez la première colonne de Mnum1, puis la dimension de cette colonne.

 

2. Affichez cette colonne sous forme de vecteur.

 

3. Affichez Mnum1 puis Mnum2 sous forme de vecteurs.

Affichez un grand vecteur représentant la concaténation de Mnum1 et Mnum2.

 

4. Multipliez chaque élément du vecteur du point 3 par la longueur de Mnum2.

 

5. Affichez les 4 premières colonnes de Mnum2 sous Mnum1.

 

6. Créez une matrice Mnum3 de même dimensions que Mnum1 et remplie de chiffres allant de 1 au nombre d'éléments composant Mnum1.

Contraintes : ne pas saisir explicitement la dimension de Mnum1, ni le nombre d'éléments la composant, ni bien sûr les éléments eux mêmes.

 

7. Affichez :

- Mnum1 à gauche de Mnum3

- Mnum3 au dessus de Mnum1

- Mnum1 à droite de Mnum3

- Mnum1 au dessus de Mnum3

 

8. En utilisant le iota et d'autres fonctions déjà vues dans ce cours, affichez :

- une suite de nombres allant de 1 à 10

- de 10 à 100

- de 6 à 15

- de ¯9 à 0

- de 5 à 10, puis de 15 à 20 : 5 6 7 8 9 10 15 16 17 18 19 20

 

9. Affichez une matrice de 3 lignes, 4 colonnes composées des nombres allant de 100 à 1200.

Recommencez en collant Mnum1 à droite.

Recommencez en additionnant Mnum1 à cette matrice.

 

10. Collez une ligne de 100 au dessus de Mnum1 et une colonne de 0 à droite.

- Collez une ligne de 100 sous Mnum1 et une colonne de 0 à gauche.

- Collez une ligne de 100 au dessus de Mnum1 et une colonne de 0 à gauche.

 

11. Sauvez votre travail :

)save


Solutions :

 

1. Affichez la première colonne de Mnum1, puis la dimension de cette colonne.

         1[2]Mnum1

Puis

         ½1[2]Mnum1

 

 

2. Affichez cette colonne sous forme de vecteur.

         ,1[2]Mnum1

 

 

3. Affichez Mnum1 puis Mnum2 sous forme de vecteurs.

         , Mnum1

         , Mnum2

 

Affichez un grand vecteur représentant la concaténation de Mnum1 et Mnum2.

         ( , Mnum1), , Mnum2

 

 

4. Multipliez chaque élément du vecteur du point 3 par la longueur de Mnum2.

         (½Mnum2) x ( , Mnum1), , Mnum2

 

 

5. Affichez les 4 premières colonnes de Mnum2 sous Mnum1.

         Mnum1,[1]4[2]Mnum2

 

 

6. Créez une matrice Mnum3 de même dimensions que Mnum1 et remplie de chiffres allant de 1 au nombre d'éléments composant Mnum1.

Contraintes : ne pas saisir explicitement la dimension de Mnum1, ni le nombre d'éléments la composant, ni bien sûr les éléments eux mêmes.

         Mnum3(½Mnum1)½¼½,Mnum1

 

7. Affichez :

- Mnum1 à gauche de Mnum3

         Mnum1, Mnum3

 

- Mnum3 au dessus de Mnum1

         Mnum3,[1] Mnum1

 

- Mnum1 à droite de Mnum3

         Mnum3, Mnum1

 

- Mnum1 au dessus de Mnum3

         Mnum1,[1] Mnum3

 

8. En utilisant le iota et d'autres fonctions déjà vues dans ce cours, affichez :

- une suite de nombres allant de 1 à 10

         ¼10

 

- de 10 à 100

         10×¼10

 

- de 6 à 15

         5+¼10

Ou

         5‡¼15

 

- de ¯9 à 0

         ¯10+¼10

 

- de 5 à 10, puis de 15 à 20 : 5 6 7 8 9 10 15 16 17 18 19 20

         (4+¼6),14+¼6

 

9. Affichez une matrice de 3 lignes, 4 colonnes composées des nombres allant de 100 à 1200.

         3 4½100×¼12

 

Recommencez en collant Mnum1 à droite.

         (3 4½100×¼12),Mnum1

 

Recommencez en additionnant Mnum1 à cette matrice.

         (3 4½100×¼12)+Mnum1

 

 

10. Collez une ligne de 100 au dessus de Mnum1 et une colonne de 0 à droite.

         100,[1]Mnum1,0

 

- Collez une ligne de 100 sous Mnum1 et une colonne de 0 à gauche.

         0,Mnum1,[1]100

 

- Collez une ligne de 100 au dessus de Mnum1 et une colonne de 0 à gauche.

         100,[1]0,Mnum1