exercices classiques en Scilab

Le Scilab est une partie des mathématiques bien souvent négligée par les candidats. Pourtant cette partie du programme prend une place toujours plus importante dans les épreuves. En particulier, pour les Parisiennes qui l’utilisent à l’écrit comme à l’oral. Il est donc dans ton intérêt de travailler cette partie du programme pour te démarquer et gagner de précieux points ! Pour beaucoup, le Scilab semble trop compliqué et ils se contentent de sauter les questions pour ne pas perdre de temps. Si tu as cliqué sur ce lien c’est que tu ne veux pas que ça soit ton cas aux concours ! On va donc reprendre ensemble les fondamentaux des matrices en Scilab !

1) Définir une matrice avec Scilab

A) Ecrire une matrice

Les matrices sont une notion centrale à savoir maîtriser avec le logiciel Scilab. En effet, de nombreux exercices de concours se basent sur les matrices qu’il faut soit comprendre soit écrire. C’est pourquoi il est indispensable de comprendre comment elles fonctionnent ainsi que de savoir les écrire.

Tout d’abord, il faut savoir que les matrices (et les vecteurs) s’écrivent entre CROCHETS (et non entre parenthèses !)

On remarque que les coefficients d’une même colonne peuvent être séparés par des virgules ou par un espace. En revanche, il est indispensable de séparer les lignes par des points-virgules (notamment sur une copie !).

B) Les matrices déjà définies dans Scilab

Tout comme pour les fonctions, certaines matrices usuelles et très utiles sont déjà programmées dans Scilab. Cela permet d’y accéder plus facilement en utilisant une simple commande plutôt que de la paramétrer à la main. Parmi ces matrices, on peut notamment retrouver les suivantes :

Les commandes pour appeler ces matrices sont à connaître par cœur car il est fréquent de devoir les utiliser dans des exercices.

2) Le calcul avec les matrices

A) Les différentes formes de calcul

Scilab étant avant tout un logiciel de calcul, on peut évidemment en faire sur les matrices. Cependant, il est important de comprendre que le calcul matriciel dans Scilab est très particulier et c’est sûrement l’aspect de Scilab où il faut être le plus rigoureux.

En effet, si Scilab permet bien évidemment de faire les calculs habituels avec les matrices (ceux que nous avons l’habitude de faire en mathématiques donc les additions, les multiplications et les soustractions) il est possible d’y faire une nouvelle forme de calcul matriciel. D’où l’importance d’être très rigoureux puisque cette forme de calcul est propre à Scilab et est bien différente du calcul matriciel habituel.

Voyons donc ce qui différencie ces deux méthodes de calcul et comment les différencier en informatique à travers ces deux exemples :

On observe sur le script précédent que la première opération fait apparaître le carré de A au sens habituel. La seconde opération quant à elle, celle qui est propre à Scilab, permet d’effectuer une multiplication terme à terme des coefficients des différentes matrices.

B) Exemples de calculs

Si A = [a , b ;c ,d] et B = [w , x ; y , z] alors

A . * B = [a*w, b*x ;c*y, d*z]

Alors que

A * B = [a*w+b*y , a*x+b*z ; c*w+d*y , c*x+d*z ]

Ainsi, on remarque que la différence entre les deux opérations est minime : un simple point. Seulement cette légère différence modifie complètement le calcul et son résultat, d’où l’importance d’être rigoureux mais aussi de comprendre quel forme de calcul l’exercice attend de vous.

Evidemment ces opérations restent des opérations sur les matrices, il faut donc s’assurer du fait qu’elles soient valables, que les tailles des matrices en jeu soient compatibles pour les calculs ! Donc qu’elles aient le même format si on souhaite utiliser la forme de multiplication propre à Scilab ou que les formats soient compatibles pour une multiplication usuelle.

Remarque :

Cette nouvelle opération permet donc d’introduire une sorte de « division » pour les matrices, par exemple si w,x,y et z sont tous non nuls alors

A . / B = [a/w , b/x , c/y , d/z].

Encore une fois il faut s’assurer de la validité des calculs (et notamment du fait que les coefficients de B soient non nuls par exemple).

3) Travailler sur les matrices

A) Le travail sur une matrice déjà existante

Pour simplifier l’utilisation des matrices, il existe de nombreuses commandes qui permettent de travailler sur une matrice et ses coefficients.

On peut notamment accéder très rapidement à la transposée d’une matrice car si B est une matrice alors B’ est sa transposée.

On peut aussi accéder rapidement à un coefficient particulier d’une matrice : si on note B une matrice de NxM alors B(i ;j) est son coefficient situé à l’intersection de la i-ème ligne avec la j-ème colonne (avec 1<=i<=N et 1<=j<=M).

Cela est très utile si on cherche à construire une matrice terme à terme. Ou encore pour ne modifier qu’un seul des coefficients d’une matrice déjà définie.

B. Créer des matrices rapidement

Il est aussi possible de créer des tableaux très rapidement. Par exemple l’instruction a : h : b  renvoie un tableau contenant des valeurs réparties régulièrement dans l’intervalle [a;b] avec un pas de h. Il existe aussi le cas particulier où h=1 et il suffit alors de noter a : b (où a < b) pour avoir un tableau contenant des valeurs réparties régulièrement dans l’intervalle [a;b] avec un pas de 1.

Ce procédé est très souvent utile (et notamment pour le pas de 1) lorsque l’on cherche à construire rapidement une matrice suivant une suite logique.

De plus, il permet aussi de construire des tableaux plus « complexes » mais suivant une suite logique assez rapidement. Par exemple pour construire le tableau contenant les puissances de 2 entre 0 et 5 il y a plusieurs possibilités :

La première étant de remplir le tableau à la main (mais cela devient très fastidieux dès que la puissance augmente : si on veut aller jusqu’à la puissance 100 par exemple, ça risque d’être long…)

La seconde est d’écrire un algorithme qui construit le tableau au fur et à mesure :

C’est déjà plus efficace car si la puissance finale n’est pas 5 mais 100 il suffit de demander à l’algorithme de tourner jusqu’à 100 mais il faut tout de même écrire l’algorithme, l’exécuter etc…

Enfin, pour que le programme soit plus rapide et plus pratique il peut être intéressant de passer par le script suivant :

Encore une fois il ne faut pas oublier le point qui permet de faire l’opération. En effet sans lui le script renvoie une erreur et donc la réponse devient alors fausse. Evidemment l’algorithme précédent fonctionne quelque soit la valeur choisie pour le nombre qu’on va élever en puissance (donc pas uniquement pour 2) ainsi que pour la valeur de la puissance choisie (donc pas uniquement 5).

Conclusion

Comme tu l’as remarqué, il faut faire très attention aux subtilités de la rédaction des algorithmes Scilab : on a vu ici l’importance d’un simple point qui peut changer tout ton algorithme.

Tu comprends donc que maîtriser le Scilab passe donc par la maîtrise de ces subtilités qui peuvent différencier un candidat qui bluffe, d’un candidat qui a vraiment travaillé le Scilab. C’est pourquoi je te conseille de t’entraîner à rédiger le Scilab aussi bien sur ton ordinateur (pour qu’il fasse apparaître les éventuelles erreurs) mais aussi à la main afin de prendre des réflexes le plus tôt possible.

Il est nécessaire de s’entraîner à rédiger des scripts sur papier puisque c’est comme ça que tu auras à les rédiger aux concours : ça te permettra de t’entraîner de ne pas te faire aider par l’ordinateur qui parfois complète les lignes de code de lui-même (il ajoute un alinéa automatiquement par exemple). Cependant il est aussi important de s’entraîner à rédiger le Scilab sur ton ordinateur. En  effet, rédiger un script sur ordinateur de permettra de repérer tes fautes plus facilement puisque le code renverra une erreur et indiquera la (ou les) ligne(s) où se trouvent les erreurs dans ta rédaction. En outre si tu rédiges ton algorithme sur papier tu auras tendance à laisser passer des erreurs que tu juges minimes mais qui ont en réalité de grosses répercutions sur ton script !