Telechargé par cn.polonimary

Python pour l'optique première spécialité

publicité
PHYSIQUE_Ondes et Signaux_Chap 2 et 3
TP5
Python au service de nos chapitres d’optique…
I.
Traitement d’image
 Ouvrir l’image : vache.jpg et l’enregistrer dans un dossier à votre nom.
1. Rappeler quelles sont les trois couleurs primaires qui sont utilisées dans
le modèle trichromique et quel type de synthèse (additive ou
soustractive) est utilisée pour le rendu des couleurs dans les écrans LCD.
2. A chaque pixel est associé un code (n, m, l) avec n, m et l des entiers
naturels compris entre 0 et 255.
Le code (0, 0, 255) correspond au bleu.
Le code (120, 0, 120) correspond au magenta.
En déduire à quelle couleur chaque entier, n, m, l fait référence.
3. L’image peut être considérée comme une grille de x pixels sur y pixels
Rechercher, parmi les propriétés de l’image, quelles sont ses dimensions
(x, y).
 Ouvrir le fichier : image.py et l’enregistrer-sous : votreprenom_image.py (dans le même dossier que
celui dans lequel vous avez enregistré votre image).
4. Exécuter le programme (en cliquant sur l’icône flèche verte). Fermer la première image qui s’affiche,
puis observer la seconde image.
5. Quel est la finalité de ce programme ?
6. Noter sur votre feuille les modifications à apporter au programme pour :
a) qu’il corresponde à un filtre bleu.
b) qu’il corresponde à un filtre jaune.
c) qu’il corresponde un filtre cyan sur la moitié supérieure de l’image uniquement. (on pourra
utiliser, à bon escient, la valeur photo.shape[0]//2pour définir la moitié de la hauteur de l’image
et photo.shape[1]//2 pour définir la moitié de la largeur de l’image).
d) qu’il corresponde à un filtre magenta sur le quart inférieur de l’image uniquement.
7. Appeler le professeur pour validation.
8. Tester vos modifications et admirez vos créations picturales !!
photo = np.copy(photovache)
# on définit « photo », la copie de la
photo originale appelée quant à elle
« photovache »
for i in range(0,photo.shape[0]):
for j in range(0,photo.shape[1]):
r, v, b = photo[i, j]
photo[i, j] = (r,0,0)
# Pour un ensemble de pixels que l’on
définit,
on réalise un filtrage en jouant sur les
valeurs des couleurs appelées r, v, b
plt.figure('montbéliarde rouge')
plt.imshow(photo)
plt.show()
# Affichage du texte « montbéliarde
rouge » et de l'image filtrée
II.
Diagramme de niveaux d’énergie de l’atome d’hydrogène
 Ouvrir le programme : atome hydrogene.py et l’enregistrer-sous : votreprenom_atome hydrogene.py.
1. Compléter le programme en entrant à l’endroit prévu à cet effet la formule permettant de calculer les
valeurs des niveaux d’énergie de l’atome d’hydrogène : niveau[n-1] = -13.6/n**2
2. Insérer à la ligne suivante une commande permettant l’affichage du texte « Niveaux dénergie En en
électrons-volts ».
3. Vérifier le fonctionnement de cette partie du programme en cliquant sur l’icône « flèche verte ».
4. Lire attentivement les lignes de commande de l’étape # calcul des différences deux à deux des
niveaux d’énergie et expliquer sur votre feuille à quoi correspondra la valeur inscrite dans la nème
ligne de la pème colonne du tableau affiché.
5. Dans quelle ligne ou dans quelle colonne seront rangées les valeurs des ΔE correspondant aux cinq
raies visibles du spectre de raies d’émission de l’hydrogène déjà étudiées en classe ? Le vérifier.
6. Proposer à l’écrit les lignes de codes qui seraient nécessaires pour programmer l’affichage d’un
tableau de valeurs faisant apparaître les longueurs d’ondes des photons émis ou absorbés lors des
différentes transitions possibles.
On pourra s’appuyer sur la formule (10**2)*3*(6.63)/((niveau[n]-niveau[p])*1.6), le facteur
10**2 étant adapté à un affichage en nm sans avoir besoin de l’intervention des puissances de 10 des
autres termes de la formule. Python ne pourrait pas travailler avec des 10*(-34)…
7. Appeler le professeur pour vérification.
8. Tester votre programme.
niveau=[0,0,0,0,0,0,0]
for n in range(1,8):
niveau[n-1]=-13.6/n**2
#Calcul des niveaux d'énergie en électronvolts
print('Niveaux d énergie En en électron-volt')
print(niveau)
print(np.round(niveau,2))
#Affichage du texte « Niveaux d’énergie en
électron-volt » puis de la liste de valeurs des
niveaux d’énergie puis de la même liste
arrondie à 2 chiffres après la virgule.
tableaudeltaE=np.zeros((7,7))
#Définition d’un tableau appelé
« tableaudeltaE », de 7 lignes et 7 colonnes,
for n in range(0,7):
for p in range(0,7):
if not n==p :
tableaudeltaE[n][p]=niveau[n]-niveau[p]
print("tableau des écarts Delta E = En - Ep en électron-volts")
print(np.round(tableaudeltaE,2))
puis attribution à chacune des cases de ce
tableau de la valeur du ΔE qui lui correspond
#Affichage du texte « tableau des Delta E en
électron-volts » puis affichage du tableau
avec les valeurs arrondies à 2 chiffres après
la virgule.
photo.shape : apporte une difficulté supplémentaire un peu inutile. Mieux vaut peut-être faire
remplacer ce code par les dimensions trouvées par les élèves pour l’image étudiée…
for i in range(photo.shape[0]//2,photo.shape[0]):
for j in range(photo.shape[1]//2,photo.shape[1]):
r, v, b = photo[i, j]
photo[i, j] = (r,0,b)
ctrl+z pour revenir en arrière
ctrl+s, ctrl+a, ctrl+c fonctionnent !!
#Calcul des longueurs d’ondes
tableaulongueurdondes=np.zeros((7,7))
for n in range(0,7):
for p in range(0,7):
if not n==p :
tableaulongueursdondes[n][p]=(3*10**2)*(6.63)/((niveau[n]-niveau[p])*1.6)
#Affichage du tableau des longueurs d’ondes en nanomètres
print("tableau des longueurs d ondes des photons émis ou absorbés en nm")
print(np.round(tableaudlongueursdondes,2))
print('Niveaux d énergie En en électron-volt')
print(niveau)
print(np.round(niveau,2))
tableaudeltaE=np.zeros((7,7))
#Affichage du tableau des Delta E en milliélectron-volts
print("tableau des écarts Delta E = En - Ep en milliélectron-volts")
print(np.round(tableaudeltaE,2))
Téléchargement