====== Rotateur biatomique ====== //Cf.// [[teaching:exos:rotation_molecules_biatomiques|cette page]]. Code source, en Python 3 : #!/usr/bin/env python # -*- coding: utf-8 -*- """ Somme d'état (ensemble canonique) de rotation (rotateur biatomique) Les impressions sont à récrire avec l'instruction format() de python 3 """ from math import exp # on a juste besoin de l'exponentielle import matplotlib.pyplot as plt # directive d'importation standard de Matplotlib T = 100. # (température réduite = T / Theta) Zrot = 0. # somme d'état Jmax = 30 # valeur maximale de J print('---------------------------------------------------') print('| J | dégénerescence | J*(J+1) | terme de Z |') print('---------------------------------------------------') Js=[] terms=[] for J in range(Jmax+1): g = 2*J+1 # dégénerescence term= (2*J+1)*exp(-J*(J+1)/T) print('| %3d | %4d | %4d | %.8e |' % (J, g, J*(J+1), term)) Zrot += term Js.append(J) terms.append(term) print('---------------------------------------------------') print( "Somme d'état à T=%3d jusqu'au niveau %2d : %.8e " % (T,Jmax,Zrot)) fig = plt.figure() plt.title(u"Rotateur biatomique et somme d'état à T = "+str(T)) plt.plot(Js, terms, 'bo', label=r'$(2J+1)\exp{(-J(J+1)\theta_{rot}/T)}$') plt.legend(loc='upper right') plt.vlines(Js, [0], terms) plt.xlabel(u"Niveaux J") plt.ylabel(u"Termes de la somme d'état") eq = r'$Z_I^{Rot} = \sum_{J} (2J+1) \exp{(-J(J+1)\theta_{rot}/T)} = '+str(round(Zrot,3))+"$" size = 14 x,y = 12,7 plt.text(x, y, eq, fontsize=size, clip_on=True) plt.show() # vue interactive de la figure Figure : {{:teaching:progappchim:rotateur_biatomique-01.png}} Sortie des valeurs : --------------------------------------------------- | J | dégénerescence | J*(J+1) | terme de Z | --------------------------------------------------- | 0 | 1 | 0 | 1.00000000e+00 | | 1 | 3 | 2 | 2.94059602e+00 | | 2 | 5 | 6 | 4.70882267e+00 | | 3 | 7 | 12 | 6.20844306e+00 | | 4 | 9 | 20 | 7.36857678e+00 | | 5 | 11 | 30 | 8.14900043e+00 | | 6 | 13 | 42 | 8.54160866e+00 | | 7 | 15 | 56 | 8.56813596e+00 | | 8 | 17 | 72 | 8.27478835e+00 | | 9 | 19 | 90 | 7.72482354e+00 | | 10 | 21 | 110 | 6.99029276e+00 | | 11 | 23 | 132 | 6.14411195e+00 | | 12 | 25 | 156 | 5.25340178e+00 | | 13 | 27 | 182 | 4.37469528e+00 | | 14 | 29 | 210 | 3.55123642e+00 | | 15 | 31 | 240 | 2.81225655e+00 | | 16 | 33 | 272 | 2.17386690e+00 | | 17 | 35 | 306 | 1.64106933e+00 | | 18 | 37 | 342 | 1.21036009e+00 | | 19 | 39 | 380 | 8.72460102e-01 | | 20 | 41 | 420 | 6.14818650e-01 | | 21 | 43 | 462 | 4.23670231e-01 | | 22 | 45 | 506 | 2.85550178e-01 | | 23 | 47 | 552 | 1.88274853e-01 | | 24 | 49 | 600 | 1.21458857e-01 | | 25 | 51 | 650 | 7.66753988e-02 | | 26 | 53 | 702 | 4.73727511e-02 | | 27 | 55 | 756 | 2.86481384e-02 | | 28 | 57 | 812 | 1.69591336e-02 | | 29 | 59 | 870 | 9.82856285e-03 | | 30 | 61 | 930 | 5.57687812e-03 | --------------------------------------------------- Somme d'état à T=100 jusqu'au niveau 30 : 1.00327380e+02