Modélisation de systèmes physiques ou chimiques
CCINPTPC2026
**Session 2026 — TPC7MO**
**Épreuve spécifique — filière TPC**
# Modélisation
**Durée : 4 heures**
*N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.*
**Rappel des consignes**
- Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, bleu clair ou turquoise, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
- Ne pas utiliser de correcteur.
- Écrire le mot FIN à la fin de votre composition.
**Les calculatrices sont interdites.**
Le sujet est composé de deux parties indépendantes et d'une Annexe en fin de sujet.
# Étude d'un spectrophotomètre infrarouge
La spectroscopie infrarouge est une spectroscopie moléculaire d'absorption dans laquelle la substance étudiée est exposée à un rayonnement électromagnétique. Certaines radiations sont absorbées par la molécule et l'examen des radiations absorbées permet d'en déduire des informations sur la structure de la molécule.
La première partie de ce sujet présente divers modèles de l'absorption vibrationnelle.
Le principe d'un spectrophotomètre (**figure 1**) est étudié dans la seconde partie.
**Figure 1 — Spectrophotomètre infrarouge**
Repère imprimé sur l'appareil : V-780.
## Partie I — Absorption vibrationnelle
### I.1 — Modèle classique de la vibration d'une molécule diatomique
Dans le modèle classique, on assimile les deux atomes \(A\) et \(B\) unis par une liaison covalente à deux masses ponctuelles \(m_A\) et \(m_B\). La molécule est isolée et les noyaux vibrent selon l'axe \(Ox\). On note \(x_A\) et \(x_B\) les positions de \(A\) et de \(B\) dans un référentiel d'étude supposé galiléen et \(x = x_B - x_A\) la distance internucléaire \(AB\) (**figure 2**). L'énergie potentielle de ce système est notée \(E_p(x)\).
**Figure 2 — Molécule diatomique \(AB\)**
Repères imprimés : \(O\), \(x_A\), \(x\), \(x_B\), \(m_A\), \(m_B\), axe \(x\).
**Potentiel de Morse**
Dans cette sous-partie, le mouvement des atomes sera traité dans le cadre de la mécanique newtonienne. L'énergie potentielle d'interaction peut être modélisée par le potentiel de Morse (**figure 3**) :
\[
E_p(x) = D\left(1 - \mathrm{e}^{-\alpha(x - x_e)}\right)^2 \tag{1}
\]
où \(D\), \(\alpha\) et \(x_e\) sont des constantes positives appelées *constantes de Morse*.
**Q1.** Préciser les unités des constantes de Morse, \(D\), \(\alpha\) et \(x_e\), dans le Système International. Justifier.
**Q2.** Dessiner la courbe \(E_p(x)\) de la **figure 3** sur la copie. Si le système possède une position d'équilibre, indiquer sa position, notée \(x_e\), sur l'axe des abscisses. Justifier en une phrase si cet équilibre est stable.
**Q3.** En justifiant la démarche, indiquer sur l'axe des ordonnées la position de la constante \(D\).
**Figure 3 — Énergie potentielle d'une molécule diatomique en fonction de la distance entre les noyaux**
Axes imprimés : \(E_p\), \(x\). Aucune graduation numérique.
**Q4.** En utilisant l'**équation (1)**, montrer que :
\[
\frac{\mathrm{d}E_p}{\mathrm{d}x} = 2\alpha D\,\mathrm{e}^{-\alpha(x - x_e)}\left(1 - \mathrm{e}^{-\alpha(x - x_e)}\right).
\]
En déduire l'expression de \(\dfrac{\mathrm{d}^2 E_p}{\mathrm{d}x^2}\).
**Modèle élastique**
On se place dans le cadre de l'approximation harmonique, c'est-à-dire que l'on ne considère que de petites variations de \(x\) autour de \(x_e\). On suppose que \(x_e\) est une position d'équilibre du système. À l'ordre 2, le développement limité autour de \(x_e\) de la fonction énergie potentielle s'écrit :
\[
E_p(x) \approx E_p(x_e) + (x - x_e)\left(\frac{\mathrm{d}E_p}{\mathrm{d}x}\right)(x_e) + \frac{1}{2}(x - x_e)^2\left(\frac{\mathrm{d}^2 E_p}{\mathrm{d}x^2}\right)(x_e).
\]
**Q5.** À l'aide de l'**équation (1)** et de la question **Q4**, calculer \(E_p(x_e)\), puis \(\left(\dfrac{\mathrm{d}E_p}{\mathrm{d}x}\right)(x_e)\) et \(\left(\dfrac{\mathrm{d}^2 E_p}{\mathrm{d}x^2}\right)(x_e)\).
**Q6.** En déduire, en utilisant le développement limité proposé, que l'énergie potentielle prend la forme \(E_p(x) = \dfrac{1}{2}k(x - x_e)^2\) et exprimer \(k\) en fonction de \(\alpha\) et de \(D\).
À proximité de leur position d'équilibre, le modèle précédent montre que l'on peut considérer que les masses sont liées entre elles par un ressort qui aurait une constante de raideur \(k\) et une longueur à vide \(x_e\).
**Q7.** On considère comme système l'atome \(A\) repéré par l'abscisse \(x_A\). En appliquant la 2e loi de Newton, montrer que :
\[
\ddot{x}_A - \frac{k}{m_A}(x - x_e) = 0. \tag{2}
\]
**Q8.** On considère comme système l'atome \(B\) repéré par l'abscisse \(x_B\). En appliquant la 2e loi de Newton, montrer que :
\[
\ddot{x}_B \pm \frac{k}{m_B}(x - x_e) = 0 \tag{3}
\]
en précisant le signe devant la constante \(k/m_B\) dans l'équation différentielle.
**Q9.** En combinant les **équations (2)** et **(3)**, montrer que la variable \(x = x_B - x_A\) vérifie l'équation différentielle \(\mu\ddot{x} + kx = kx_e\) et exprimer \(\mu\), appelée la *masse réduite* du système \(AB\), en fonction de \(m_A\) et de \(m_B\).
**Q10.** Exprimer la fréquence \(f_0\) des petites oscillations de la molécule \(AB\), en fonction de \(\mu\) et de \(k\).
Dans la suite, on note \(\lambda_0\) la longueur d'onde correspondant à la fréquence \(f_0\) et \(\sigma_0 = 1/\lambda_0\) le nombre d'onde associé.
Lorsque la molécule \(AB\) est soumise à l'action d'une onde électromagnétique de fréquence \(f = f_0\), on observe que la molécule entre en résonance et absorbe l'onde.
**Q11.** Exprimer \(\sigma_0\) en fonction de \(f_0\) et de \(c\), la célérité de la lumière dans le vide, puis en fonction de \(\mu\), \(c\) et de \(k\).
**Validité de la loi de Hooke sur la multiplicité de la liaison**
La loi de Hooke associe une liaison simple entre deux atomes à un ressort de constante de raideur \(k\) et de longueur à vide \(x_e\). Une liaison double entre deux atomes est alors modélisée par deux ressorts identiques, de même constante de raideur \(k\) et de longueur à vide \(x_e\), placés en parallèle (**figure 4**). Une liaison triple entre deux atomes est modélisée par trois ressorts identiques, de même constante de raideur \(k\) et de longueur à vide \(x_e\), placés en parallèle.
On considère un point matériel de masse \(\mu\), relié à un support fixe par 2 ressorts identiques de constante de raideur \(k\) et de longueur à vide \(x_e\), placés en parallèle dont l'autre extrémité est fixe (**figure 4**).
**Figure 4 — Masse reliée à deux ressorts identiques, placés en parallèle et fixés à l'autre extrémité**
Repères imprimés : \(k\), \(O\), \(x\).
**Q12.** En exprimant la somme des forces exercées sur le point matériel de masse \(\mu\), montrer que la constante de raideur équivalente aux 2 ressorts, notée \(k_{\mathrm{éq},2}\), vaut \(2k\).
**Q13.** En déduire alors, sans démonstration, l'expression de la constante de raideur équivalente \(k_{\mathrm{éq},3}\), pour un ensemble de 3 ressorts placés en parallèle.
**Q14.** En déduire enfin le nombre d'onde \(\sigma_0\) en fonction de \(\mu\), \(c\) et de \(k\) lorsque l'onde est :
- absorbée par une double liaison (que l'on notera \(\sigma_{0,2}\)) ;
- absorbée par une triple liaison (que l'on notera \(\sigma_{0,3}\)).
**Q15.** Attribuer alors les nombre d'onde suivants : \(1{,}65\cdot 10^3~\mathrm{cm}^{-1}\), \(1{,}30\cdot 10^3~\mathrm{cm}^{-1}\) et \(2{,}20\cdot 10^3~\mathrm{cm}^{-1}\) aux liaisons simple \(\mathrm{C{-}N}\), double \(\mathrm{C{=}N}\) et triple \(\mathrm{C{\equiv}N}\).
### I.2 — Modèle quantique
À la différence du modèle classique, le modèle quantique permet de décrire le comportement discret de la vibration d'une liaison soumise à une onde électromagnétique.
Ainsi, l'énergie vibrationnelle \(E\) est quantifiée par la relation :
\[
E = \left(n + \frac{1}{2}\right)\hbar\omega_0 \tag{4}
\]
avec \(n \in \mathbb{N}\) appelé nombre quantique vibrationnel, \(\hbar = \dfrac{h}{2\pi}\) la constante de Planck réduite et \(\omega_0\) la pulsation d'absorption.
On considère un problème unidimensionnel dans lequel une particule de masse \(\mu\), localisée dans l'intervalle \([-L, L]\), est placée dans un potentiel \(V(x)\) (**figure 5**) :
\[
V(x) = \frac{1}{2}\mu\omega_0^2 x^2. \tag{5}
\]
**Figure 5 — Représentation graphique de \(V(x)\) et des cinq premiers niveaux d'énergie**
Repères imprimés : \(V(x)\), \(x\), \(-L\), \(L\), niveaux \(E_1\), \(E_2\), \(E_3\), \(E_4\), \(E_5\).
On rappelle l'équation de Schrödinger :
\[
\mathrm{i}\hbar\frac{\partial\psi(x,t)}{\partial t} = -\frac{\hbar^2}{2\mu}\frac{\partial^2\psi(x,t)}{\partial x^2} + V(x)\psi(x,t).
\]
On s'intéresse à des états stationnaires dont la fonction d'onde est de la forme : \(\psi(x,t) = \varphi(x)\mathrm{e}^{-\mathrm{i}\frac{E}{\hbar}t}\).
**Q16.** Montrer que la fonction d'onde spatiale \(\varphi(x)\) vérifie l'équation différentielle :
\[
\frac{\mathrm{d}^2\varphi(x)}{\mathrm{d}x^2} + \frac{2\mu}{\hbar^2}\left(E - \frac{1}{2}\mu\omega_0^2 x^2\right)\varphi(x) = 0. \tag{6}
\]
**Résolution numérique**
On cherche à résoudre numériquement l'**équation (6)**.
Pour ce faire, on approxime d'abord la dérivée à l'aide d'un développement de Taylor (rappelé en **Annexe**).
**Q17.** À l'aide d'un développement limité à l'ordre deux, exprimer \(\varphi(x + \mathrm{d}x)\) au second ordre par rapport à \(x\). Faire de même avec \(\varphi(x - \mathrm{d}x)\).
**Q18.** En déduire que : \(\dfrac{\mathrm{d}^2\varphi(x)}{\mathrm{d}x^2} = \dfrac{\varphi(x + \mathrm{d}x) - 2\varphi(x) + \varphi(x - \mathrm{d}x)}{\mathrm{d}x^2}\).
On discrétise l'intervalle \([-L, L]\) en \(\mathrm{N}\) points régulièrement espacés du pas spatial \(\mathrm{D}x\). On note \(x_i = i*\mathrm{D}x\), \(i \in \llbracket 0, \mathrm{N}\llbracket\), les abscisses des points discrétisés. On pose \(\varphi_i = \varphi(x_i)\) et \(V_i = V(x_i)\) la fonction d'onde spatiale et le potentiel à l'abscisse évalués en \(x_i\).
**Q19.** Déduire de la question **Q18** une relation entre \(\dfrac{\mathrm{d}^2\varphi(x)}{\mathrm{d}x^2}\), \(\varphi_{i+1}\), \(\varphi_i\), \(\varphi_{i-1}\) et \(\mathrm{D}x\).
**Q20.** À partir des questions **Q16** et **Q19**, montrer que :
\[
\varphi_{i+1} = 2\left[1 + \frac{\mu\omega_0}{\hbar^2}\left(\frac{1}{2}\mu\omega_0 x_i^2 - \left(n + \frac{1}{2}\right)\hbar\right)\mathrm{D}x^2\right]\varphi_i - \varphi_{i-1}. \tag{7}
\]
Le **code Python 1**, page 6, permet de déterminer les valeurs de la fonction d'onde spatiale aux abscisses \(x_i\). Dans les questions suivantes, on cherche à compléter les instructions manquantes repérées par « ___ ». Les commandes Python utiles sont rappelées en **Annexe**.
La valeur numérique de \(L\) (**figure 5**) est déterminée par l'intersection du potentiel \(V\) (**équation (5)**) avec l'énergie \(E\) atteinte pour \(n = 5\) (**équation (4)**).
**Q21.** En résolvant l'équation \(V(x = L) = E(n = 5)\), déterminer l'expression littérale de \(L\) en fonction de \(\hbar\), \(\mu\) et de \(\omega_0\). Compléter la **ligne 11** du **code Python 1** qui calcule \(L\).
On note \(X\) le tableau unidimensionnel (ou vecteur) contenant les \(\mathrm{N}\) positions discrètes accessibles à la particule dans l'intervalle \([-L, L]\).
**Q22.** Compléter la **ligne 12**, qui crée le tableau unidimensionnel \(X\), en fonction de \(L\) et de \(\mathrm{N}\).
Le pas spatial \(\mathrm{D}x\) peut être calculé soit à partir du tableau \(X\), soit à partir des variables \(L\) et \(\mathrm{N}\).
**Q23.** Compléter la **ligne 13** du **code Python 1** en choisissant l'une ou l'autre de ces méthodes.
On définit une fonction appelée `fonction_onde`, de signature :
```text
fonction_onde(n: int) -> np.ndarray:
```
qui prend en paramètre le nombre quantique \(n\) et retourne un tableau unidimensionnel `phi` contenant les valeurs de la fonction d'onde spatiale normalisée.
On choisit comme conditions aux limites \(\varphi(x_0) = 0\) et \(\varphi(x_1) = 1\).
**Q24.** Compléter la **ligne 17** qui crée un tableau `phi` de taille \(\mathrm{N}\) rempli de zéro et la **ligne 18** qui l'initialise.
**Q25.** Compléter la **ligne 21** et la **ligne 22** du **code Python 1** qui permettent la détermination complète du tableau `phi` à partir de l'**équation (7)**.
Le tableau `phi` doit encore être modifié pour traduire la réalité physique de la fonction d'onde. Pour cela, on calcule l'intégrale suivante par la méthode des rectangles :
\[
K = \int_{-L}^{L} \left|\varphi(x)\right|^2\mathrm{d}x.
\]
**Q26.** La mécanique quantique nécessite que \(K = 1\). Que traduit physiquement cette relation ?
**Q27.** En exploitant la méthode des rectangles rappelée ci-dessous, compléter la **ligne 25** du **code Python 1**.
**Méthode des rectangles à gauche (figure 6).**
On cherche à calculer de manière approchée l'intégrale
\[
F = \int_a^b f(x)\,\mathrm{d}x
\]
d'une fonction continue \(f : [a, b] \to \mathbb{R}\).
La méthode des rectangles à gauche consiste à découper l'intervalle \([a, b]\) en intervalles élémentaires \([x_i, x_{i+1}]\), puis sur chacun de ces intervalles, on remplace \(f(x)\) sur le segment \([x_i, x_{i+1}]\) par \(f(x_i)\).
L'intégrale \(\displaystyle\int_{x_i}^{x_{i+1}} f(x)\,\mathrm{d}x\) est alors approchée par \((x_{i+1} - x_i) \times f(x_i)\).
Ainsi,
\[
F \approx \sum_i (x_{i+1} - x_i) \times f(x_i).
\]
**Figure 6 — Méthode des rectangles à gauche**
Repères imprimés : \(y\), \(x\), \(a\), \(x_i\), \(x_{i+1}\), \(b\), \(f(a)\), \(f(x_i)\), \(f(b)\).
```python
1 import numpy as np
2
3 # Données du problème
4 hbar = 1.05e-34 # [J.s] constante de Planck réduite
5 mu = 1e-28 # [kg] masse
6 omega0 = 1e14 # [rad/s] pulsation d'absorption
7
8 N = 10_000 # nombre de points de discrétisation
9
10 # Discrétisation de l'axe x
11 L = ___ # Q21
12 X = ___ # Q22
13 Dx = ___ # Q23
14
15 def fonction_onde(n):
16 # initialisation de la fonction d'onde
17 phi = ___ # Q24
18 ___ # Q24
19
20 # calcul de la fonction d'onde
21 for i in range(___, ___): # Q25
22 phi[i + 1] = ___ # Q25
23
24 # calcul supplémentaire
25 I = ___( [___ for i in range(N-1)] ) * Dx # Q27
26 phi = phi / np.sqrt(I)
27
28 return phi
```
**Code Python 1 — Résolution numérique de l'équation de Schrödinger**
Le tracé des premières fonctions d'onde produite par le **code Python 1** est représenté sur la **figure 7**.
**Figure 7 — Tracés des premières fonctions d'onde phi**
Titre imprimé : « Fonction d'onde de l'oscillateur harmonique ». Axes : \(\mathrm{phi}(x)\), graduations \(80\,000\), \(60\,000\), \(40\,000\), \(20\,000\), \(0\), \(-20\,000\), \(-40\,000\), \(-60\,000\) ; \(x\), graduations \(-3\), \(-2\), \(-1\), \(0\), \(1\), \(2\), \(3\), facteur \(10^{-10}\). Légende : \(n = 0\), \(n = 1\), \(n = 2\).
## Partie II — Principe de fonctionnement d'un spectrophotomètre infrarouge
Un spectrophotomètre est constitué d'une source infrarouge et d'un monochromateur à réseau qui sélectionne une étroite bande de longueurs d'onde afin d'en mesurer l'intensité.
### II.1 — Étude de la source infrarouge
**Étude cristalline de la source infrarouge**
Le rayonnement infrarouge est produit par une résistance électrique constituée d'un alliage nickel–chrome. L'élément nickel a pour numéro atomique \(Z = 28\).
**Q28.** Donner la configuration électronique du nickel et indiquer sa position (période et groupe) dans le tableau de classification périodique.
Dans un alliage nickel-chrome, les atomes de nickel cristallisent selon une structure cubique à faces centrées dans laquelle deux atomes situés aux centres de deux faces opposées sont substitués par deux atomes de chrome, les autres faces restent identiques. On note \(a\) le paramètre de maille de l'alliage.
**Q29.** Combien y a-t-il d'atomes de chrome et de nickel par maille ?
**Q30.** Établir l'expression littérale du paramètre de maille de l'alliage en fonction de sa masse volumique \(\mu_{\mathrm{NiCr}}\), des masses molaires du nickel \(M_{\mathrm{Ni}}\) et du chrome \(M_{\mathrm{Cr}}\) et du nombre d'Avogadro \(N_A\).
Le calcul non demandé du paramètre de maille donne la valeur numérique \(a = 350~\mathrm{pm}\).
**Q31.** En déduire la valeur numérique de la distance \(d\) entre deux atomes voisins de l'alliage, dans un modèle où il serait formé d'atomes de rayons identiques.
Aide aux calculs : \(350\cdot\sqrt{2} \approx 495\) ; \(350/\sqrt{2} \approx 247\) ; \(350\cdot\sqrt{3} \approx 606\) ; \(350/\sqrt{3} \approx 202\).
**Évaluation de la température ambiante autour de la source infrarouge**
La source infrarouge est un filament cylindrique, de longueur \(L\), de diamètre \(D\) et de conductivité électrique \(\gamma\). On note \(R = \dfrac{4L}{\gamma\pi D^2}\) sa résistance électrique.
Le filament est traversé par un courant électrique constant d'intensité \(I\) et s'échauffe par effet Joule jusqu'à atteindre la température d'équilibre \(T_s\).
**Q32.** Donner l'expression de la puissance électrique \(P_{\mathrm{élec}}\) reçue par le filament en fonction de \(\gamma\), \(L\), \(D\) et de \(I\).
Le filament et le gaz effectuent entre eux des échanges thermiques de deux natures :
- par *rayonnement thermique* selon la loi de Stefan
*Loi de Stefan* : la puissance surfacique \(\varphi_r\) rayonnée par un corps noir dont la température de surface est \(T\) s'écrit : \(\varphi_r = \sigma T^4\) où \(\sigma\) est la constante de Stefan.
Le gaz et le filament se comportent comme des corps noirs si bien qu'il existe deux sources de *rayonnement thermique* :
- l'une provenant du filament à la température \(T_s\) ;
- l'autre provenant du gaz à la température \(T_a\).
- par *échange conducto-convectif* selon la loi de Newton
*Loi de Newton* : la puissance surfacique \(\varphi_c\) échangée entre un solide à la température \(T_s\) et un fluide à la température \(T_a\) s'écrit : \(\varphi_c = h(T_s - T_a)\) où \(h\) est une constante.
On cherche à déterminer, à l'équilibre thermique, la température \(T_a\) du gaz environnant.
**Q33.** Exprimer la puissance thermique \(P_{\mathrm{ray}}\) échangée par rayonnement thermique entre le filament et le gaz en fonction de \(\sigma\), \(D\), \(L\), \(T_a\) et de \(T_s\).
**Q34.** Exprimer la puissance thermique \(P_{\mathrm{conv}}\) échangée par conducto-convection entre le filament et le gaz en fonction de \(h\), \(D\), \(L\), \(T_a\) et de \(T_s\).
**Q35.** En réalisant un bilan énergétique sur le filament, montrer que la température \(T_a\) du gaz environnant vérifie l'équation :
\[
\sigma T_a^4 + h T_a = \sigma T_s^4 + h T_s - \frac{4I^2}{\gamma\pi^2 D^3}. \tag{8}
\]
**Détermination de la température \(T_a\) par dichotomie**
*Méthode de dichotomie* (**figure 8**).
Soient deux réels \(a\) et \(b\) et une fonction \(f : x \mapsto f(x)\) strictement monotone et continue sur l'intervalle \([a, b]\).
On suppose que \(f(a)\) et \(f(b)\) sont de signes opposés. Dans ces conditions, l'équation \(f(x) = 0\) admet une solution unique.
L'objectif est de déterminer cette solution avec une précision \(\varepsilon\).
Pour trouver la solution, on divise l'intervalle en deux parties égales avec comme milieu \(m = \dfrac{a + b}{2}\).
Si \(f(a)\) et \(f(m)\) sont de même signe, la solution se trouve alors dans l'intervalle \([m, b]\), sinon elle se trouve dans l'intervalle \([a, m]\).
On réitère alors la recherche dans le nouvel intervalle jusqu'à atteindre la précision voulue.
**Figure 8 — Méthode de dichotomie**
Repères imprimés : \(f(x)\), \(x\), \(a\), \(m\), \(b\), \(f(a)\), \(f(m)\), \(f(b)\).
```python
1 # Données du problème
2 D = 2.00e-3 # [m] diamètre du filament
3 gamma = 1.00e7 # [S/m] conductivité électrique
4 Ts = 1.00e3 # [K] température de surface
5 I = 25.0 # [A] intensité électrique
6 h = 1.00 # [W/m²/K] coefficient de convection
7 sigma = 5.67e-8 # [W/m²/K**4] constante de Stefan
8
9 # Définition de l'équation à résoudre
10 def f(T):
11 ___ # Q36
12
13 # Recherche de la valeur de Ta par dichotomie
14 def dichotomie(f, a, b, eps): # Q37
15 while ___:
16 m = (a + b) / 2
17 if ___:
18 return m
19 if ___:
20 ___
21 ___
22 ___
23 return ___
24
25 # Résultat
26 print('La température Ta recherchée est :', dichotomie(f, 298, 1000, 1), 'K') # Q38
```
**Code Python 2 — Recherche par dichotomie de la température du gaz environnant le filament**
On souhaite compléter le **code Python 2** qui permet de déterminer la valeur de \(T_a\) par dichotomie.
**Q36.** On souhaite résoudre l'équation \(f(T_a) = 0\), la fonction \(f\) étant obtenue à partir de l'**équation (8)**. Compléter la **ligne 11** qui définit la fonction \(f\) à résoudre en fonction des variables globales `Ts`, `h`, `I`, `gamma` et de `D`.
**Q37.** Compléter le code de la fonction `dichotomie` (à partir de la **ligne 14**), de signature :
```text
dichotomie(f: callable, a: float, b: float, eps: float) -> float:
```
qui implémente l'algorithme de dichotomie pour déterminer la solution de l'équation \(f(T_a) = 0\).
**Q38.** L'instruction finale (**ligne 26**) affiche \(986~\mathrm{K}\). Commenter cette valeur au regard des données numériques figurant dans le **code Python 2**.
### II.2 — Monochromateur à réseau
Un monochromateur est un dispositif optique qui permet d'obtenir une onde électromagnétique quasi-monochromatique à partir d'une source polychromatique.
Le monochromateur contient un réseau constitué de fentes rectilignes parallèles distantes de \(a\). Le réseau comporte \(n = 1/a = 3\cdot 10^2\) traits/mm et est éclairé par un faisceau parallèle sous l'angle d'incidence \(i_0\) (**figure 9**).
**Figure 9 — Réseau par transmission**
Repères imprimés : (1), (2), \(i_0\), \(\theta\), \(a\), sens \(+\).
**Q39.** Montrer que la différence de marche \(\delta_{2/1}\) entre deux rayons diffractés parallèlement dans la direction \(\theta\) par deux fentes consécutives vaut :
\[
\delta_{2/1} = a\big(\sin(\theta) - \sin(i_0)\big).
\]
On se place dans des conditions telles que :
\[
\sin(\theta) = \sin(i_0) - \frac{\lambda}{a}. \tag{9}
\]
**Q40.** Rappeler le sens physique de l'**équation (9)**.
Après le réseau se trouve une lentille convergente, de distance focale \(f' = 1\cdot 10^1~\mathrm{cm}\), placée parallèlement au réseau. Les rayons issus de la lentille sont collimatés vers une fente de sortie de largeur \(b = 0{,}1~\mathrm{mm}\) (**figure 10**).
**Figure 10 — Filtrage spectral à l'aide d'une fente**
Repères imprimés : réseau, lentille, fente de sortie, \(i_0\), \(\theta\), \(F'\), \(b\), \(f'\), axe \(x\).
| | |
| --- | --- |
| Précision | \(\pm 2~\mathrm{nm}\) |
| Reproductibilité | \(\pm 2~\mathrm{nm}\) |
| Largeur spectrale | \(3~\mathrm{nm}\) |
**Tableau 1 — Extrait de la notice du spectrophotomètre**
On souhaite déterminer la valeur de l'angle d'incidence \(i_0\) permettant de sélectionner en \(F'\) une onde d'intensité maximale pour la longueur d'onde \(\lambda_0\).
**Q41.** Préciser la valeur de l'angle \(\theta\) des ondes arrivant en \(F'\). En déduire, en fonction de \(\lambda_0\) et de \(a\), l'expression de l'angle d'incidence \(i_0\) permettant d'obtenir la radiation de longueur d'onde \(\lambda_0\) en \(F'\).
La source étant polychromatique, d'autres radiations émergent de la fente du monochromateur. On souhaite déterminer la *résolution spectrale* du spectroscope, c'est-à-dire l'intervalle \(\Delta\lambda\) des longueurs d'onde atteignant la fente de sortie. On suppose qu'aucune autre limitation que celle évoquée n'entre en jeu.
**Q42.** Déterminer, dans les conditions de Gauss, l'angle limite \(\theta_\varepsilon\) permettant d'atteindre le bord supérieur de la fente de sortie en fonction de \(b\) et de \(f'\).
**Q43.** En déduire que la longueur d'onde limite a pour expression : \(\lambda_\varepsilon = \lambda_0 - \dfrac{ab}{2f'}\). En déduire l'expression de la résolution spectrale \(\Delta\lambda\) du spectroscope en fonction de \(a\), \(b\) et de \(f'\). Calculer la valeur numérique de \(\Delta\lambda\) et la comparer aux données de la notice (**tableau 1**).
Le spectroscope permet de visualiser l'absorbance de la solution étudiée (**figure 11**) et d'exporter les données correspondantes sous forme d'un fichier de type csv (**tableau 2**).
**Figure 11 — Spectre d'absorption**
Axes imprimés : absorbance (%), graduations \(0\), \(20\), \(40\), \(60\), \(80\), \(100\) ; nombre d'onde (\(\mathrm{cm}^{-1}\)), graduations \(5000\), \(4500\), \(4000\), \(3500\), \(3000\), \(2500\), \(2000\), \(1500\). Mention imprimée : « pics repérés (absorption \(\geq 40~\%\)) ».
```text
# 1/CM, TRANSMITTANCE
1499.955,99.118
1512.008,99.2053
1524.0609,99.822
1536.1138,102.242
1548.1667,99.4634
1560.2197,100.958
1572.2726,100.227
1584.3255,98.5449
1596.3784,94.0
1608.4313,78.0484
1620.4843,94.7214
1632.5372,82.0674
...
```
**Tableau 2 — Extrait du fichier de données**
**Q44.** Comment expliquer les absorbances négatives (ou les transmittances supérieures à 100 %) au voisinage de \(1~500~\mathrm{cm}^{-1}\) et de \(3~000~\mathrm{cm}^{-1}\) ?
Afin de déterminer la composition de la solution, il faut identifier les nombres d'onde des pics principaux d'absorption. Pour cela, on traite le fichier de données à l'aide du **code Python 3**.
**Q45.** Expliquer la signification de la **ligne 5** et de la **ligne 6**.
Le spectromètre fournit la transmittance \(T\) de la solution (**tableau 2**) dont on souhaite étudier l'absorption. On note \(A = -\log(T)\) l'absorbance de la solution.
**Q46.** À l'aide de l'**Annexe**, compléter la **ligne 7** permettant de calculer l'absorbance à partir de la transmittance.
**Q47.** Compléter le code de la fonction `recherche_pics` (**lignes 13, 14 et 15**), de signature :
```text
recherche_pics(A: np.ndarray, p_abs: float) -> np.ndarray:
```
qui prend en paramètres le tableau des absorbances et le pourcentage d'absorption minimale recherché et renvoie le tableau des indices correspondants (voir **lignes 18 et 19**).
```python
1 import numpy as np
2
3 # Lecture des données
4 data = np.loadtxt("spectre.csv", comments="#")
5 s = data[:, 0] # Q45
6 T = data[:, 1] # Q45
7 A = ___ # Q46
8
9 # Recherche des indices des pics d'absorption
10 def recherche_pics(A, p_abs):
11 n = len(A)
12 pics = [] # liste des indices trouvés
13 for i in range(___): # Q47
14 if ___ and ___ and ___: # Q47
15 ___ # Q47
16 return np.array(pics)
17
18 indices_abs = recherche_pics(A, 40) # contient [45 61 103]
19 print(s[indices_abs]) # affiche [2042.3364 2235.1831 2741.4056]
```
**Code Python 3 — Recherche des indices des pics d'absorption**
## Annexe
### Formule utile
**Développement limité :** \(f(x) \approx f(a) + (x - a)f'(a) + \dfrac{1}{2}(x - a)^2 f''(a)\)
### Bibliothèque numpy de Python
Import de la bibliothèque **numpy** :
```text
>>> import numpy as np
```
Création d'un tableau unidimensionnel (ou vecteur) \(T\) rempli de zéros :
```text
>>> T = np.zeros(5) # génère un tableau de 0
>>> print(T)
[0. 0. 0. 0. 0.]
```
Modification de cellules du tableau \(T\) (les indices démarrent à 0) :
```text
>>> T[1] = 1
>>> T[3] = -3.14 / 2
>>> print(T)
[0. 1. 0. -1.57 0.]
```
Commande : `np.linspace`
```text
>>> T = np.linspace(3, 10, 5) # Tableau de 5 valeurs linéairement espacées entre 3 et 10 inclus
>>> print(T)
[ 3. 4.75 6.5 8.25 10. ]
```
Commande : `np.sum`
```text
>>> T = np.linspace(1, 7, 4)
>>> print(T)
[1. 3. 5. 7.]
>>> print(sum(T)) # additionne tous les éléments du tableau
16.0
```
Commande : `np.sqrt`
```text
>>> T = np.array([1, 9, 25])
>>> print(np.sqrt(T)) # fonction racine carrée
[1. 3. 5.]
```
Commande : `np.abs`
```text
>>> z = 1 + 3j # nombre complexe
>>> print(abs(z)) # module de z
3.1622776601683795
>>> Z = np.array([1 + 3j, -1]) # tableau de nombres complexes
>>> print(abs(Z)) # module de chaque complexe du tableau
[3.16227766 1. ]
```
Commandes : `np.log` et `np.log10`
```text
>>> T = np.array([10, 1])
>>> print(np.log(T)) # logarithme népérien
[2.30258509 0. ]
>>> print(np.log10(T)) # logarithme décimal
[1. 0.]
```
Commande : `np.loadtxt`
L'instruction `np.loadtxt("spectre.csv", comments="#")` lit le fichier `spectre.csv` et fabrique le tableau bidimensionnel `data[i, j]` de 2 colonnes et autant de lignes de données que le fichier en comporte. Les lignes commençant par `#` sont ignorées.
```text
>>> data = np.loadtxt("spectre.csv", comments="#")
>>> print(data[0, 0]) # ligne 0, colonne 0
1499.955
>>> print(data[0, 1]) # ligne 0, colonne 1
99.118
>>> print(data[0, :]) # toute la ligne 0
[1499.955 99.118]
>>> C1 = data[:, 1] # toute la colonne 1
```
**FIN**
Aide sur une question
Connectez-vous pour demander une explication.