//******************************************************************** //******************************************************************** // Programme de simulation de la diffraction // Dominique Lefebvre novembre 2010 // www.tangenteX.com //******************************************************************** //******************************************************************** clear; //******************************************************************** // Calcul de l'intensité lumineuse en fonction de la position // lx, ly : longueur et largeur de la fente //******************************************************************** function [I] = Intensite(x,y) I = (sinc((K*lx*x))^2)*(sinc((K*ly*y))^2); endfunction; //******************************************************************** // Corps du programme principal //******************************************************************** // Saisie des données de la simulation printf("Diffraction par une fente rectangulaire\n\n"); lx = input("largeur de la fente (en mm): "); ly = input("hauteur de la fente (en mm) : "); lambda = input("longueur d''onde (en nm) : "); D = input("distance de l''écran (en m) : "); K = %pi/(D*10^3*lambda*10^-6); // Paramètres de visualisation NN = 100; // nombre de niveaux XMIN = -10; XMAX = 10; YMIN = -10; YMAX = 10; PAS = (XMAX - XMIN)/100; // Définition des variables x = XMIN:PAS:XMAX; y = YMIN:PAS:YMAX; for i=1:length(x) for j=1:length(y) z(i,j) = Intensite(x(i),y(j)); end; end; // Tracé de la courbe de niveau; clf();f=gcf(); xset("fpf"," "); f.color_map = jetcolormap(NN); contour2d(x,y,z,0:1/NN:1,frameflag=3, rect=[XMIN YMIN XMAX YMAX]); //grayplot(x,y,z,rect=[XMIN YMIN XMAX YMAX]); xtitle("Figure de diffraction par une fente","mm","mm");