Licence CC BY-SA

Optique géométrique et matrices

Aujourd’hui j’aimerais vous présenter une technique qui permet de simplement modéliser un système optique sans recourir aux traditionnelles formules de conjugaison que l’on apprend au lycée. Cette technique a l’avantage d’être relativement simple et c’est pourquoi je vais tenter de l’introduire dans ce billet !

Ce contenu est une version légèrement retravaillé de ce post de blog.

Rappels de mathématiques

Dans la suite nous allons avoir besoin de faire des calculs avec des matrices. Pas de panique, pas de prérequis compliqués je vais tout expliquer simplement. Les vrais matheux sont priés de m’envoyer un mail pour que l’on organise ma pendaison publique.

Nous n’allons utiliser que des matrices 2×22\times 2. Qu’est-ce que donc que cela ? tout simplement un objet mathématique avec 4 dimension. C’est à dire que l’on définit avec quatre nombres. Par exemple si notre matrice MM est définie avec les nombres aa, bb, cc et dd, nous l’écrirons

M=(abcd)M = \begin{pmatrix} a & b \\ c & d \end{pmatrix}

Dans la suite nous auront également besoin de vecteurs. Là encore il s’agit d’un objet mathématique particulier. Un vecteur se caractérise par deux grandeurs. Ainsi par exemple, si l’on a un vecteur VV défini par les grandeurs xx et yy, on le notera

V=(xy)V = \begin{pmatrix} x \\ y \end{pmatrix}

Opérations sur nos jouets : l’addition

Avec nos nouveaux jouets, nous allons pouvoir réaliser quelques opérations. Dans la suite, nous utiliserons deux matrices, MM et PP, et un vecteur VV que nous noterons comme suit :

M=(abcd),  P=(efgh),  V=(xy)M = \begin{pmatrix} a & b \\ c & d \end{pmatrix}, \; P = \begin{pmatrix} e & f \\ g & h \end{pmatrix},\; V = \begin{pmatrix} x \\ y \end{pmatrix}

Dans cette partie, nous allons voir deux façons de combiner MM et PP. La première est de les additionner. Le résultat de l’addition de deux matrices s’écrit

M+P=(abcd)+(efgh)=(a+eb+fc+gd+h)M + P = \begin{pmatrix} a & b \\ c & d\end{pmatrix} + \begin{pmatrix} e & f \\ g & h\end{pmatrix} = \begin{pmatrix} a+e & b+f \\ c+g & d+h\end{pmatrix}

Rien de bien compliqué non ? la somme de deux matrices est une matrice dont les composantes sont les sommes des composantes des matrices.

Opérations sur nos jouets : multiplication par un scalaire

De même, on peut multiplier une matrice ou un vecteur par un scalaire. Soit α\alpha un scalaire,

α×M=(α×aα×bα×cα×d),  α×V=(α×xα×y)\alpha \times M = \begin{pmatrix} \alpha \times a & \alpha \times b \\ \alpha \times c & \alpha \times d \end{pmatrix}, \; \alpha \times V = \begin{pmatrix} \alpha \times x \\ \alpha \times y \end{pmatrix}

Le produit d’un scalaire et d’une matrice est une matrice dont les composantes sont le produit du scalaire et des composantes de la matrice. Pareillement, le produit d’un scalaire et d’un vecteur est un vecteur dont les composantes sont le produit du scalaire et des composantes du vecteur

Nous verrons d’autres opérations réalisables sur ces objets, mais nous n’en avons pas besoin pour l’instant.

Comment étudier la lumière ?

Il existe beaucoup de modèles de la lumière, que ce soit corpusculaire ou ondulatoire. La question de sa nature a donné l’occasion à beaucoup de scientifiques de s’arracher des cheveux. Quel est donc le bon modèle à utiliser ? la réponse est… que cela n’a pas d’importance dans notre cas. L’optique géométrique reste valide dans beaucoup de cas, en particulier pour ce qui concerne des dispositifs tels que les microscopes, les téléscopes, les loupes… C’est aussi une façon d’aborder l’étude de la lumière simple qui permet parfois une première approche à certains systèmes complexes. Enfin, l’optique géométrique ne permet pas d’expliquer des phénomènes tels que la diffraction ou les interférences.

Nous allons étudier la propagation de la lumière dans un plan, dans une direction donnée. On utilisera un repère orthonormé Ox,y\mathcal{O}_{x,y}. Pour matérialiser le comportement de la lumière, on utilise le concept de rayons lumineux. Si vous imaginez la lumière comme étant de minuscules billes se déplaçant dans l’espace, alors ces rayons peuvent être vus comme des trajectoires. Nous faisons l’hypothèse que, sans interaction, la lumière se déplace en ligne droite. Autrement dit, si l’on trace un rayon lumineux dans le vide, il s’agit d’une droite. On peut donc représenter sa trajectoire comme sur l’image suivante :

Rayon lumineux
Rayon lumineux

On indique l’axe Ox\mathcal{O}_x (que l’on appelle l'axe optique) pour se donner une idée de la direction de propagation du rayon, et on donne le sens grâce à la petite flêche sur le rayon. En se plaçant à l’endroit sur l’axe Ox\mathcal{O}_x d’où est émis ce rayon, on peut donc caractériser cette demi-droite par deux informations : la hauteur yy et l’angle avec l’horizontale θ\theta.

Repèrage d'un rayon lumineux
Repèrage d'un rayon lumineux

On représente un le rayon avec le vecteur suivant : (yθ)\begin{pmatrix}y\\ \theta\end{pmatrix}

Toute la suite de cet article aura pour but de travailler sur ce vecteur afin de trouver comment il évolue. Pour cela, nous allons avoir besoin d’un nouvel interlude mathématique…

Multiplications dans tous les sens

Pour l’instant, nous ne savons qu’additionner des matrices et multiplier par un scalaire un vecteur ou une matrice. Il temps que cela change !

Multiplication d’une matrice et d’un vecteur

Nous allons définir la multiplication à gauche d’un vecteur par une matrice. Attention, ici, le sens de la multiplication est important. On parle bien de la multiplication MVM\cdot V. On la défini ainsi :

MV=(abcd)(xy)=(a×x+b×yc×x+d×y)M\cdot V = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \cdot \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} a \times x + b \times y \\ c \times x + d \times y \end{pmatrix}

Le produit d’une matrice et d’un vecteur est un vecteur dont les composantes sont la combinaison de la première ligne de la matrice avec les composantes du vecteur et la combinaison de la deuxième ligne de la matrice avec les composante du vecteur.

Multiplication de deux matrices

On peut également multiplier deux matrices carrées (je rappelle que les matrices qui nous intéressent sont carrées). Ainsi,

MP=(abcd)(efgh)=(a×e+b×ga×f+b×hc×e+d×gc×f+d×h)M\cdot P = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \cdot \begin{pmatrix} e & f \\ g & h \end{pmatrix} = \begin{pmatrix} a \times e + b \times g & a \times f + b \times h \\ c \times e + d \times g & c \times f + d \times h \end{pmatrix}

On peut remarquer que le résultat est similaire à celui obtenu lors de la multiplication MVM \cdot V, si l’on considère que la matrice PP comme un couple de vecteurs : (eg)et(fh)\begin{pmatrix} e \\ g \end{pmatrix} \text{et} \begin{pmatrix} f \\ h \end{pmatrix}.

Cette formule peut sembler un peu pénible à retenir. À titre personnel, je la retrouve à l’aide d’une petite astuce que j’ai tenté de résumer dans l’animation suivante :

Animation du produit matriciel
Animation du produit matriciel

Matrices optique

Grâce au produit matriciel, nous allons pouvoir exprimer les transformations que subit le vecteur représentant la lumière lorsque cette dernière se propage. L’idée principale est de déduire une matrice MM telle que, si l’on connaît le vecteur originel VV, on puisse déduire le vecteur d’arrivée VV' tel que V=MVV' = M\cdot V.

Propagation dans un matériau

Supposons que l’on souhaite connaître l’évolution de notre vecteur après propagation dans un matériau sur une longueur ll.

Schéma de propagation
Schéma de propagation

On a alors dy=tan(θ)×ldy = \tan (\theta) \times l

Comme on se place dans l’approximation des petits angles, on a alors dyθ×ldy \approx \theta \times l

Si on pose VV le vecteur originel et VV' le vecteur après propagation, tels que V=(yθ),  V=(yθ)V = \begin{pmatrix}y\\ \theta\end{pmatrix},\; V'=\begin{pmatrix}y'\\ \theta'\end{pmatrix} on a : V=(y+dyθ)=(y+l×θθ)V' = \begin{pmatrix}y + dy\\ \theta\end{pmatrix} = \begin{pmatrix}y + l\times\theta\\ \theta\end{pmatrix}

Cette expression va nous permettre de déduire une matrice MM telle que V=MVV' = M\cdot V :

M=(1l01)M = \begin{pmatrix}1 & l\\ 0 & 1\end{pmatrix}

On remarque que l’angle de propagation ne varie pas lorsque le rayon se propage dans le vide, ce qui est conforme à notre dessin. Il est temps de trouver des matrices plus amusantes.

Loi de Snell-Descartes et interfaces entre milieux

Jusqu’à maintenant j’ai, dans le but de simplifier, supposé que la lumière se propageait dans le vide. Mais afin de pouvoir altérer son angle de propagation, il est utile de lui faire changer de milieu. Pour rappel, en optique géométrique, on caractérise un milieu par son indice, noté nn. Ainsi, si l’on considère l’interface entre deux milieux d’indices n1n_1 et n2n_2, un rayon qui se propage en direction de cette interface se verra en partie réfléchi, et en partie transmis (on parle de réfraction).

Schéma réfraction
Schéma réfraction

Comme le laisse deviner mon schéma, la partie réfléchie le sera de l’autre côté de la normale avec le même angle que celui d’arrivée. L’autre partie sera transmise avec un angle θ2\theta_2 qui vérifie la relation de Snell-Descartes : n1sin(θ1)=n2sin(θ2)n_1\sin(\theta_1) = n_2\sin(\theta_2)

Nous voulons exprimer la relation entre VV le vecteur du rayon avant l’interface et VV' le vecteur après l’interface. Dans l’approximation des petits angles, la relation de Snell-Descartes s’écrit n1θ1=n2θ2n_1\cdot\theta_1 = n_2\cdot\theta_2 La position du rayon ne changeant pas, la composante yy de VV' est la même que celle de VV. On a alors V=(yn1n2θ1)V' = \begin{pmatrix}y\\\frac{n_1}{n_2}\theta_1\end{pmatrix}

On peut donc en déduire la matrice MM: M=(100n1n2)M = \begin{pmatrix}1 & 0\\ 0 & \frac{n_1}{n_2}\end{pmatrix}

Exercice : combinaison de propagations

Avec les deux matrices que nous avons vu, nous pouvons déjà réaliser un premier exercice !

On dispose d’un objet plongé dans l’eau d’où partent deux rayons σ1\sigma_1 et σ2\sigma_2. Le but est de calculer σ1\sigma_1' et σ2\sigma_2', les vecteurs rayons qui résultent de leur propagation.

Schéma de la propagation
Schéma de la propagation

On pose σ1=(yθ1),  σ2=(yθ2)\sigma_1 = \begin{pmatrix}y\\\theta_1\end{pmatrix},\;\sigma_2 = \begin{pmatrix}y\\\theta_2\end{pmatrix}

Données :

Grandeur Valeur Unité
l1l_1 1010 cm
l2l_2 4040 cm
ee 3.03.0 mm
n0n_0 1.31.3
n1n_1 1.51.5
n2n_2 1.01.0
yy 5.05.0 cm
θ1\theta_1 0.00.0 rad
θ2\theta_2 1.7×1011.7\times10^{-1} rad

À vos stylos ! il est interdit de regarder la correction sans avoir essayé.

Correction

La première étape est de déterminer quelles matrices nous allons calculer. On peut découper la propagation en 5 étapes:

  1. Propagation dans l’eau;
  2. Interface eau-verre;
  3. Propagation dans le verre;
  4. Propagation dans l’air.

Appelons P0P_0, P1P_1 et P2P_2 les matrices de propagation dans l’eau, dans le verre et dans l’air. Appelons Me/vM_{e/v} la matrice représentant l’interface eau-verre et Mv/aM_{v/a} la matrice représentant l’interface verre-air.

On peut donner directement les expressions des matrices :

P0=(1l101),  P1=(1e01),  P2=(1l201)Me/v=(100n0n1),  Mv/a=(100n1n2)P_0 = \begin{pmatrix}1 & l_1\\ 0 & 1\end{pmatrix},\; P_1 = \begin{pmatrix}1 & e\\ 0 & 1\end{pmatrix},\; P_2 = \begin{pmatrix}1 & l_2\\ 0 & 1\end{pmatrix}\\ M_{e/v} = \begin{pmatrix}1 & 0\\ 0 & \frac{n_0}{n_1}\end{pmatrix},\; M_{v/a} = \begin{pmatrix}1 & 0\\ 0 & \frac{n_1}{n_2}\end{pmatrix}

On pourrait calculer étape par étape tous les vecteurs rayons, mais ce n’est pas nécessaire. En effet, on peut remarquer que pour un rayon représenté par un vecteur σ\sigma, les vecteurs engendrés sont

  • σ=P0σ\sigma' = P_0 \sigma;
  • σ=Me/vσ\sigma'' = M_{e/v} \sigma';
  • σ=P1σ\sigma''' = P_1 \sigma'';
  • σ=Mv/aσ\sigma'''' = M_{v/a} \sigma''';
  • σ=P2σ\sigma''''' = P_2 \sigma'''';

En "dépliant" le tout, on remarque qu’il suffit donc de calculer la matrice MM telle que M=P2Mv/aP1Me/vP0M = P_2 \cdot M_{v/a} \cdot P_1 \cdot M_{e/v} \cdot P_0

Pour éviter de se fatiguer à tout calculer, on peut ici utiliser un logiciel de calcul formel comme wolfram alpha. On obtient alors :

M=(1l1+n0n1(n1n2l2+e)0n0n2)M = \begin{pmatrix} 1 & l_1 + \frac{n_0}{n_1}\left( \frac{n_1}{n_2}l_2 + e \right) \\ 0 & \frac{n_0}{n_2} \end{pmatrix}

On peut remarquer que, à condition que ee soit faible devant n1n2l2\frac{n_1}{n_2}l_2, on a

M=(1l1+n0n2l20n0n2)=(1l201)(100n0n2)(1l101)M = \begin{pmatrix} 1 & l_1 + \frac{n_0}{n_2}l_2 \\ 0 & \frac{n_0}{n_2} \end{pmatrix} = \begin{pmatrix}1 & l_2\\0 & 1\end{pmatrix}\begin{pmatrix}1 & 0\\0 & \frac{n_0}{n_2}\end{pmatrix}\begin{pmatrix}1 & l_1\\0 & 1\end{pmatrix}

C’est à dire que si l’on a un verre suffisamment fin, on peut ne considérer qu’une interface eau-air.

Pour finir, on peut calculer les vecteurs d’arrivée. Pour cela j’ai réalisé un petit script en Julia:

l_1 = 10 # cm
l_2 = 40 # cm
e   = 3.0e-1 # cm
n_0 = 1.3
n_1 = 1.5
n_2 = 1.0
y   = 5.0 # cm

θ_1 = 0 # rd
θ_2 = 1.7e-1 #rd


P_0  = [1  l_1; 0   1]
P_1  = [1  e;   0   1]
P_2  = [1  l_2; 0   1]
M_ev = [1  0;   0   n_0/n_1]
M_va = [1  0;   0   n_1/n_2]

M = P_2 * M_va * P_1 * M_ev * P_0
σ_1 = [y; θ_1]
σ_2 = [y; θ_2]

(M*σ_1, M*σ_2)

Ce qui nous donne : ([5.0, 0.0], [15.5842, 0.221]). Comme on pouvait s’y attendre, le rayon qui part perpendiculairement aux interfaces n’est pas dévié. On peut calculer la valeur qu’aurait prise le vecteur si la propagation s’était faite sans changement de matériau :

julia> [1 l_1+l_2+e; 0 1]*σ_2
2-element Array{Float64,1}:
 13.551
  0.17

On voit que le rayon se serait trouvé plus bas. Inversement, pour obtenir un rayon arrivant à 15.5842 cm de haut, il aurait fallu que la source se trouve plus loin. Autrement dit, pour un observateur extérieur, la source semble plus éloignée que ce qu’elle est réellement.


Hop hop hop, on m’avait parlé d’une technique pour ne pas utiliser les formules de conjugaison ! On y a même pas fait allusion, et je ne saurais pas résoudre un exercice type avec des lentilles avec ça !

Bonne remarque. Mais ce billet est déjà relativement long. Avec ceci vous disposez de tout le matériel nécessaire. Dans un prochain billet, on pourra approcher d’autres systèmes et voir des vrais cas pratiques !

5 commentaires

Merci pour ce billet :)

Dans un prochain billet, on pourra approcher d’autres systèmes et voir des vrais cas pratiques !

La suite est attendue avec grande impatience alors ! Pour le moment tu proposes une façon originale de représenter un système optique, mais j’ai un peu de mal à cerner en quoi l’écriture matricielle nous fait gagner du temps. Le traitement de quelques cas d’école (prisme, fibre optique ?) pourrait nous éclairer.

Ne serait-ce pas encore un tour de force des matrices de rotation ?

Aabu

Je t’avoue que je ne connais pas de lien vraiment direct, autre que "c’est une opération linéaire sur un objet en 2 dimensions". Si tu en vois un lien plus direct ça m’intéresse beaucoup !

ça dépend de si tu as un token de disponible.

artragis

Merci pour ce billet :)

Dans un prochain billet, on pourra approcher d’autres systèmes et voir des vrais cas pratiques !

La suite est attendue avec grande impatience alors ! Pour le moment tu proposes une façon originale de représenter un système optique, mais j’ai un peu de mal à cerner en quoi l’écriture matricielle nous fait gagner du temps. Le traitement de quelques cas d’école (prisme, fibre optique ?) pourrait nous éclairer.

pyromorphite

Je compte traiter quelques problèmes classiques ! Par contre cette méthode n’est absolument pas de moi, c’est traîté dans plusieurs livres d’optique géométrique et ça m’a été présenté dans plusieurs cours que j’ai pu suivre durant mes études. Cette technique ne remplace pas avantageusement les fameuses formules de conjugaison dans tous les cas. Typiquement je pense que si on me donnait un système simple du type un objet et une lentille et que l’on me demandait de calculer la position de l’image, ce ne serait pas ma méthode de résolution de prédilection. Un des gros avantages de cette technique c’est qu’elle peut se transposer pour les faisceaux gaussiens, et ça c’est bien pratique. J’espère pouvoir faire un billet sur la question.

Ne serait-ce pas encore un tour de force des matrices de rotation ?

Aabu

Je t’avoue que je ne connais pas de lien vraiment direct, autre que "c’est une opération linéaire sur un objet en 2 dimensions". Si tu en vois un lien plus direct ça m’intéresse beaucoup !

Dans le repère (y,θ)(y,\theta) choisi, on ne peut pas écrire une rotation générale sous forme matricielle, une rotation d’angle α\alpha est l’ajout d’un vecteur (0,α)(0,\alpha). C’est d’ailleurs la raison pour laquelle cette formulation matricielle ne peut pas traiter des interfaces non perpendiculaires à Ox\mathcal O_x sans changer d’abord de repère en ajoutant une rotation.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte