Pour vous familiariser avec les nombreuses notions que nous allons aborder lors de ce cours d'optique non-linéaire, il sera très utilise d'effectuer des calculs numériques qui permettent soit de faire des représentations graphiques, soit de calculer le résultat de différents processus d'optique linéaire ou d'optique non-linéaire. Alors on peut faire ces calculs numériques avec des langages de programmation, comme le C ou Java, mais il sera beaucoup plus simple d'utiliser des logiciels de calculs scientifiques, comme par exemple le langage Scilab, que nous allons aborder dans cette vidéo. Donc Scilab est un logiciel libre de calculs numériques, de calculs scientifiques. Il a la particularité d'être un langage interprété, à la différence du C où vous devez d'abord éditer votre code source et ensuite le compiler. Dans le cas de Scilab, vous pourrez directement taper des commandes et voir immédiatement le résultat, ce qui sera bien sûr un avantage, même si c'est au prix d'une vitesse de calcul un peu moindre que des langages compilés, mais vous pourrez directement utiliser le langage à la manière d'une calculatrice. Mais contrairement à une calculatrice, ce langage vous permettra de manipuler directement à des matrices, ce qui veut dire que vous pourrez travailler sur un tableau d'un million de points par exemple, qui représente le profil d'un faisceau lumineux ou le profil temporel d'une impulsion laser. Le langage est fourni avec une vaste bibliothèque d'analyses numériques, donc tous les calculs numériques dont vous pourriez avoir besoin, comme par exemple la transformation de Fourier que nous avons la semaine prochaine feront partie intégrante du langage. Et enfin, vous aurez bien entendu diverses procédures de représentations graphiques en deux ou trois dimensions, des fonctions que vous pourrez calculer. Alors, pour bien démarrer avec ce langage, je vous recommande donc de commencer par copier dans votre répertoire de travail les fichiers onl.sci et onl.scilab.pdf. Donc le fichier onl.sci est une bibliothèque de fonctions sommaires qui nous seront utiles dans ce cours d'optique linéaire. Donc c'est un petit nombre de fonctions très simples. Donc vous avez une description dans le fichier PDF, avec éventuellement le code source si cela vous intéresse. Ensuite, si Scilab n'est pas déjà installé sur votre ordinateur, il faudra le télécharger à partir du site web de Scilab. Bien entendu, lancer le programme, et ensuite, définir comme répertoire par défaut le répertoire de travail où vous aurez stocké les fichiers dont je parlais tout à l'heure. Et enfin, charger la bibliothèque qui nous sera utile dans la suite en tapant exec.onl.sci au début de votre session Scilab. Alors, avant de poursuivre, je voudrais préciser que ceci n'est en aucun cas un cours sur Scilab. Vous trouverez notamment sur le site web de Scilab un certain nombre de didacticiels qui vous permettront de vous familiariser avec le langage. Mais vous verrez que ce langage est finalement d'un emploi très simple, très intuitif, et que vous pourrez directement démarrer simplement avec les quelques notions que je vais aborder dans cette vidéo. Donc d'abord, on lance le langage Scilab. Comme je le disais, il faut vérifier que votre répertoire par défaut, le répertoire courant, est le bon. Donc, dans mon cas, c'est déjà fait ici. Donc vous pourrez changer de cette manière le répertoire courant pour pouvoir ensuite directement charger la bibliothèque que nous vous fournissons, en tapant exec.onl.sci. Donc là , vous êtes prêt à travailler. Je vais vous montrer donc très simplement en quoi Scilab pourra nous permettre de faire un certain nombre de calculs numériques. Donc, tout d'abord, Scilab, c'est comme une calculatrice. Si vous faites un plus deux, eh bien vous avez directement le résultat. Vous pouvez utiliser les variables, donc je peux utiliser la variable a dans laquelle je vais mettre la valeur que je souhaite, par exemple quatre. Mais surtout on pourra manipuler des matrices. Donc par exemple, si je tape a égal un point virgule un, cela va me créer un vecteur colonne, constitué, donc, des deux éléments un et un. Donc une matrice colonne. Je peux aussi faire un vecteur ligne, en mettant non pas un point virgule, mais simplement un espace ou une virgule, et dans ce cas-là , j'aurai un vecteur ligne constitué des deux éléments, à nouveau un et un, ou quelques éléments que vous auriez mis à la place de ces nombres. Alors l'intérêt de Scilab, c'est que vous pourrez directement faire des calculs sur l'ensemble de la matrice. Par exemple, je peux calculer la somme des éléments contenus dans mon tableau, à l'aide de la commande somme, et là j'ai donc un plus un qui vaut deux. Je peux calculer la norme de ce vecteur en tapant norme de a, et je vais avoir évidemment racine de deux. Un autre exemple de calcul qu'on peut faire, c'est de normaliser le vecteur, donc pour ça, je vais faire, je vais dire que a est égal à a divisé par sa norme, et vous aurez immédiatement un vecteur normé, constitué des deux éléments un sur racine de deux et un sur racine de deux. Une commande utile sera la transposition, donc si je fais a prime, je vais en fait fabriquer le vecteur transposé du vecteur a. Donc tout à l'heure j'avais un vecteur ligne, maintenant j'ai un vecteur colonne, qui va être évidemment toujours un vecteur normé. Je peux faire du calcul matriciel en multipliant les matrices, donc par exemple, si je fais a fois a prime, eh bien je multiplie un vecteur ligne par un vecteur colonne, et cela me donne évidemment un nombre qui va être le carré de la norme du vecteur, donc en l’occurrence un. Je peux faire le contraire, je peux faire a prime multiplié par a, donc dans ce cas-là je multiplie un vecteur colonne par un vecteur ligne, ça va me donner une matrice deux deux avec un demi à chaque élément de matrice. Je peux construire une matrice de nombres nuls avec les dimensions spécifiées, donc par exemple, ça ça me fait une matrice avec trois lignes et deux colonnes. De la même manière, on peut faire une matrice avec des un, donc une matrice carrée par exemple, constituée de un. Bien, alors ce qui nous sera utile dans la suite, c'est de créer une rampe de nombres régulièrement espacés, et ça on le fait avec la commande deux points, enfin plus précisément, si je tape un deux points quatre, eh bien vous allez construire une rampe de nombre variants de un jusqu'à quatre, par défaut, par pas de un. Je peux également faire ça avec un pas différent en spécifiant le pas explicitement. Donc si je fais un deux points deux, deux points dix, je vais avoir l'ensemble des nombres, enfin une rampe, variant de un à dix, par pas de deux, c'est-à -dire les premiers nombres impairs, un, trois, cinq, sept, neuf. Évidemment, dix n'apparaît pas parce que dix n'est pas un nombre impair. Bien, alors on peut essayer de faire donc, comme j'ai dit, du calcul matriciel. Si je veux le carré de ces nombres, si je tape a multiplié par a, ça va pas marcher, parce que quand vous multipliez au sens de la multiplication matricielle deux vecteurs lignes l'un par l'autre, évidemment, vous aurez une erreur à multiplication incohérente, puisque vous avez pas les bonnes dimensions au sens de la multiplication matricielle. Alors il existe une commande dans Scilab pour faire une multiplication terme à terme, qui est ce qu'on voudrait faire pour avoir les carrés de ces nombres. Donc si je fais a point multiplié a, eh bien, ça veut dire que je vais faire l'opération, non pas au sens matriciel, mais au sens terme à terme. Donc je vais directement prendre le premier nombre fois le premier nombre, donc j'aurai le carré de un; le deuxième nombre fois lui-même, donc le carré de trois, ça me donne neuf, et cetera, donc j'ai ici un tableau qui contient les carrés des premiers nombres impairs. Je peux faire la même chose pour la division. Alors, là encore, il faut faire attention si je fais un divisé par a, on pourrait croire naïvement que ça va me calculer l'inverse de chaque élément terme à terme de la matrice. En fait, ça me donne un autre résultat. Ça me donne un vecteur colonne, puisque effectivement, si je prend un vecteur ligne, eh bien au sens de matrices, je peux définir l'inverse de ce vecteur ligne en prenant un vecteur colonne. Puisque en effet, si je fais le produit de ce vecteur ligne par ce vecteur colonne, eh bien, je vais en effet trouver le résultat qui m'intéresse, c'est-à -dire un. Donc là , c'est l'inverse au sens de la multiplication matricielle. Si on veut prendre l'inverse terme terme, à nouveau il faudra utiliser point divisé. Alors, le problème, c'est que si je fais un point divisé a, je vais en fait avoir le même résultat. Donc pourquoi? Tout simplement, parce que vous avez ici un warning que vous envoie Scilab. Pour lui, un point divisé a, c'est pas un point divisé a, c'est un point, c'est-à -dire le nombre réel un virgule zéro, divisé par a, au sens des matrices. Donc si vous voulez faire un point divisé a, il faut faire un espace point divisé a, et donc là , on aura effectivement un vecteur ligne où chaque élément sera l'inverse de l'élément de départ. Donc ça, c'est sans doute un risque d'erreur d'oublier cet espace. Donc je vous recommande d'utiliser la commande inverse qui a été définie dans la bibliothèque qu'on vous fournit. Donc inverse va vous faire l'inverse au sens terme à terme, l'inverse de votre vecteur ligne.