Utilisation de Matlab Pour La Resolution DE Problemes Physiques

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 9

BULLETIN DE L’UNION DES PHYSICIENS 207

UTILISATION DE MATLAB POUR LA RESOLUTION DE


PROBLEMES PHYSIQUES

François AUGER, Bruno VELAY


IUT, 58, rue Michel Ange, B.P. 420
44606 Saint Nazaire Cedex
E-mail : [email protected].

1 Introduction
L’utilisation de l’outil informatique dans l’enseignement des sciences physiques se justifie également
par l’emploi de logiciels interactifs de calcul scientifique, qui permettent la résolution numérique ou
analytique de problèmes physiques concrets, la visualisation des résultats sous une forme efficace et
pédagogique, et cela avec une durée d’éxécution suffisamment rapide pour pouvoir ensuite étudier la
variation de la solution en fonction de ses paramètres.
Outre les logiciels Maple et Mathemstica présentés dans un numéro récent du “Bulletin de l’Union
des Physiciens”, Matlab répond également à ce besoin. Développé initialement par des universitaires
américains pour faciliter l’enseignement de l’analyse numérique, ce logiciel est en train de devenir
une sorte d’esperanto moderne des scientifiques et des ingénieurs désireux de partager des modèles
physiques et des méthodes de résolution. Ses quelques 600.000 utilisateurs de part le monde sont en
effet séduits par

l sa simplicité d’utilisation: il suffit de faire help fft pour faire afficher à l’écran la syntaxe
d’appel de la fonction fft et la description de son action.

l ses nombreuses bibliothèques de fonctions préexistantes, simplifiant la résolution des problèmes.


Ce n’est donc plus nécessaire de programmer les techniques classiques de régression,
d’interpolation, d’intégration, de calcul matriciel, polynômial, ._.

l son langage de développement simple et performant. Assez proche du pascal, Matlab permet
l’utilisation des structures conditionnelles et répétitives classiques (if then else, for, while, . ..).
et facilite la mise au point des programmes par un ‘débogueur” efficace.

l ses fonctions graphiques puissantes et simples d’utilisation permettent différents modes de vi-
sualisation des courbes et surfaces.

l la disponibilité de Matlab à un prix raisonnable sur de nombreux environnements (PC, Mac,


stations Unix, machines DEC, IBM, . ..) et la portabilité totale des programmes Matlab: un
programme écrit avec Matlab sur PC peut être éxécuté sur un mac, une station Unix, etc
. ..). Précisons également que la plupart des exemples présentés aux paragraphes suivants ont
été réalisés avec la version étudiante de Matlab [7], vendue approximativement 320 francs en
librairie (des versions PC et macintosh existent).

l ses capacités à la fois numériques et formelles.


‘Une version préliminaire de ce document o été préparée à l’occasion de l’université d’été sur “les outils informatiques
de l’investigation scientifique en sciences physiques”, organisée par I’INRP et I’UDP à Nantes du 28 août au 1”
septembre 1995.

Vol 90 - Juin 1996 Matlab pour la résolution de problèmes


208 BULLETIN DE L’UNION DES PHYSICIENS

l son groupe de news très actif sur internet (comp.soft-sys.matlab). Chaque jour, plusieurs
dizaines d’utilisateurs débutants ou confirmés partagent leurs difficultés et leurs connaissances
sur ce forum électronique libre. De plus, des programmes matlab du domaine public peuvent
également être récupérés (et déposés!) sur le serveur f tp .mathworks com

L’objet de ce texte est de présenter quelques exemples d’utilisation de Matlab pour des problèmes
présentés dans [5, 61. Disposant ainsi d’un panorama plus complet des logiciels existants, le lecteur
sera alors plus à même de juger, et de ce faire une opinion sur le logiciel le plus approprié pour ses
besoins, ou le plus conforme à son mode de raisonnement.

2 Quelques exemples
L’objectif des exemples d’utilisation présentés ci-dessous n’est pas de permettre un apprentis-
sage exhaustif des possibilités de Matlab. En effet, les différents problèmes physiques ci-dessous
n’illustrent que certains des aspects de ce logiciel, en particulier ses capacités de résolution de systèmes
différentiels et ses fonctions graphiques. Pour une présentation plus complète, on pourra se référer à
différents ouvrages [l, 3, 41, ou au “tutoriel” fourni avec le logiciel. Par contre, la mise en parallèle
des solutions proposées ci-dessous avec celles présentées dans [5,6] offre des éléments de comparaison
entre les différents environnements de calcul scientifique existants.

2.1 Potentiel Electrostatique de deux charges ponctuelles


L’objectif de cet exercice est de tracer la valeur du potentiel statique crée par deux charges +Q et -4
dans un plan passant par ces deux charges. En prenant comme centre du repère le point milieu des
deux charges, et comme axe z la droite reliant les deux charges, l’expression de ce potentiel s’écrit:

Le programme ci-dessous trace des coupes du potentiel parallèles à l’axe z, puis la surface U(z, y) et
ses courbes de niveaux. Les résultats sont présentés aux figures 1, 2, et 3. Rappelons qu’une aide sur
les différentes fonctions utilisées dans ce programme peut être obtenue en tapant son nom précédé
de help dans la fenêtre de commande (par exmple help plot, help contour, etc...).

1! exemple 1: potentiel alectrostatique

% genere Nr valeurs entre xmin et max


% Ny valeurs entre ymin et ymax
Nx=lOO; x=linspace(-lO.lO,Nx);
Ny= 32; y=linspace(-5.5.Ny);

% calcul du potentiel U
[xZ,yZ~=msshdom(x,y):
u=i.o ./ sqrt((x2-1).-2+y2.-2) - 1.0 ./ sqrt((x2+1).-2+y2.-2);

% trace
hold off; clt;
plot~r.u~l3,:~,x,u~l5.:~.x.U~16,:));

F. AUGER, B. VELAY BUP no785 - cahier enseignement supérieur


BULLETIN DE L’UNION DES PHYSICIENS 209

axis(C-10 10 -5 61); grid;


xlabel(*axes paralleles a x’); ylabel(‘potentie1 electrostatique’);
title(‘coupes transversales du potentiel electrostatique’);

pallae; cli;
contour(x.y,U,C-8 -4 -2 -0.5 -0.2 -0.1 0.0 0.1 0.2 0.5 2 4 81);
grid; xlabel(‘are x’); ylabel(‘axe y’);
title(‘courbes de niveau du potentiel electrostatique’); pause;

mesh(x.y,U);
xlabel(‘axe x’); ylabelc’axe y’); zlabel(‘potentie1 electrostatique’);

Le point de vue sous lequel la surface est examinée peut être modifié avec la fonction view. De plus,
ce point de vue peut également être modifié avec une très grande souplesse grâce à la ‘boite à outils”
matdraw disponible par internet sous ftp://ftp.mathworks.com/pub/contnb/graphi~/matdraw.zip.

2.2 oscillateur amorti


L’objectif de ce second exercice est d’étudier le régime libre d’une équation différentielle linéaire du
second ordre, notée
g(t) + 2x0 g(t) t cd; z(t) = 0

avec comme conditions initiales z(O) = 1 et 1(O) = 1. P our permettre la résolution numérique de ce
problème, il faut tout d’abord transformer cette équation différentielle du second ordre en un système
différentiel de deux équations du premier ordre:

21(t)= z(t) il(t) = ii(t)= q(t)


soit i*(t) = i(t) = -2x0 h(t) - wo’z(t)
{ x2(t) = i(t) = 2(t)
1 = -2x0 q(t) - w; q(t)

Cette transformation permet ensuite d’utiliser une des fonctions qui réalisent l’intégration numérique
des équations du type X = f(X). 0 n a arbitrairement choisi la fonction ode45, qui intègre (par
une méthode de Runge-Kutta à pas variable d’ordre 4 et 5) une fonction dont le nom est, précisé
en paramètre. Pour l’utiliser, il suffit donc de définir à l’aide de la comande nev du menu file
une fonction qui calcule les dérivées de ai et z*(t), et de la sauvegarder ensuite dans un fichier
ecolderl .m:
iunction derX=ecolderl(t.X);
% fonction de derivation pour l’exemple 2

global lambda0 omega0;

derX(l)=X(2);
dsrX(2)=-2.0*lambdaO*X(Z) - orne@-2 I x(i);

Ce fichier peut ensuite être appelé par le programme ci-dessous, qui réalise la résolution numérique
de l’équation différentielle avec ses conditions initiales, et le tracé de la trajectoire dans le plan de
phase (ou espace des états) (zl, zz). Les résultats sont présentés aux figures 4 et 5.
% exemple 2: oscillateur amorti

omega0=2*pi*l.O; lambdaO=l.O;
global lambda0 omega0;

Vol 90 - Juin 1996 Matlab pour la résolution de problèmes


210 BULLETIN DE L’UNION DES PHYSICIENS

ti-0.0; tf= 8.0; X0=11.0 1.01;


[t.Xl = ode45('ecolderi'. ti, tt, X0);

x trace
plot(t.X(:,l)); grid;
xlabal('temps (s)'); ylabel('x'); pause;

plot(X(:.l).X(:,2)); grid;
xlabel('position'); ylabel('ritesse');

Il faut noter que la “boite à outils” de calcul formel, dont il existe une version simplifiée dans la
version étudiante de matlab, permet de résoudre analytiquement cette équation, grâce à la fonction
dsolve. En executant par exemple les instructions

x = simplify(dsolve(‘D2x + 2 * Dx + (2 * pi)* *x = O’:x(O) = l’;Dx(O) = l’));pretty(x)

l’expression analytique de la solution apparait alors à l’écran:

2 1/2 2 1/2 2 1/2


(COS((- 1 + 4 pi ) t) (- 1 + 4 pi ) + 2 sin((- 1 + 4 pi 1 t)) exp(- t)
____________________-----------------------------------------------------------
2 1/2
(- 1 + 4 pi )

La commande latex(x) permet également de traduire cette expression dans le langage de descrip-
tion d’expressions mathématiques de J4QX, avec lequel ce document a été réalisé. Elle permet donc
d’écrire directement la solution sous la forme:

2.3 Oscillateur de Van der Pol


Le problème précédent aurait pu être résolu formellement. Ceci n’est généralement plus possible
lorsque l’équation à résoudre est non-linéaire, ce qui est le cas par exemple pour une équation de Van
der Pol:
g(t) - 2X0 (1 - y) s(t) + l‘J; Z(t) = 0

Pour obtenir une solution numérique de cette équation, quelques modifications de la fonction de
calcul des dérivées et du programme précédent suffisent. Les résultats obtenus (voir figure 6) incitent
à conclure que cette équation possède une solution périodique.

Programme de calcul des dérivées (ecolder2.m):

function derX=ecolder2(t,X);
% fonction de deriration pour l'exemple 3

global lambda0 omega0 x0;

derX(l)=X(Z);
derX(2)=2.O+lambdaO*(l.O-X(l).~2/x0~2)*X(2) - omegaO*2 l X(l);

Résolution numérique de l’équation différentielle:

F. AUGER, B. VELAY BUP no785 - cahier enseignement supérieur


BULLETIN DE L’UNION DES PHYSICIENS 211

% exemple 3: oscillateur da Van der Pol

omega0=2*pitl.O; lambdaO=l.O; x0=1.0;


global lambda0 omega0 x0;

trace=o.o;

ti=O.O; tf= 6.0; XO=Cl.S 0.01;


Ctl,Xll = ode45(‘ecolder2’. fi, tf, X0. l.Oe-5. trace);

plot(tl,Xl(:.l)); grid; pause;


plot(Xl(:,l),X1(:,2)); grid; pause;

XO=[3.0 0.01;
CtZ.X21 = ode45(‘ecolder2’, ti, tf, X0, 1.08-5. trace);

plot(t2.X2(:.1)); grid; pause;


axis(C-3 3.6 -16 151);
pl~t(Xi(:,i).Xl(:.2).X2(:.l).X2(:,2)); grid;
rlabel(*position’); ylabel(‘vitesse’);title(‘plan de phase’);

2.4 Trajectoire d’un projectile


Les mêmes principes peuvent être utilisés pour résoudre un problème classique de balistique 121. On
considère donc une masse ponctuelle de masse m lancée dans le champ de pesanteur terrestre avec
une vitesse initiale Vo qui fait un angle a avec le plan horizontal. Si on tient compte d’un frottement
fluide proportionnel à la vitesse du projectile, les équations du mouvement de cet projectile s’écrivent:

m:(t) = -fi(t) soit


z(t) = -AZ(t)
{ m?(t) = -mg-fi(t) 1 i(t) = -g - &i(t)
En l’absence de frottement, la portée du projectile avec zrg = 810 m s-l et a = 45’ serait de plus de
60 kilomètres. Quelques essais répétés ont permis de montrer que pour obtenir en simulation une
portée de 23.2 km identique à celle obtenue dans un essai réel, il faut prendre un rapport f/m égal
à 0.02092 s-‘. Les trajectoires obtenues avec vo = 810 ms-’ et Q = 45 sont présentés figure 7.

Programme de calcul des dérivées (ecolder3. III):

function darX=acolder3(t,X);
% fonction de derivation pour l’exemple 4

global f-sur-m g;

derX(l)=X(?);
derX(2)=-f-sur-m l X(2);
darX(S)=X(I);
derX(rl)=-g-t-sur-m 1 X(4);

Résolution numérique des équations différentielles:

Y. exemple 4: trajectoire d’un obus de 155.

f~surJa=o.o; g=9.81;
global f-sur-m g;

Vol 90 - Juin 1996 Matlab pour la résolution de problèmes


212 BULLETIN DE L’UNION DES PHYSICIENS

rO=input('ritesse initiale (U/S): '1;


alpha=input('angle de tir (degres): '1; alpha=alpha*pi/i80.0;
ti=O.O; tf= 130.0;
XO=CO.O rO*cos(alpha) 0.0 vO*sin(alpha)l;
Ct.Xl = ode45('ecolder3', ti, tf, X0, le-E);

Ct2.X2] = ode45('ecolder3', ti, tf, X0. 18-E);

x=linspace(0.7e4.200);
plot(x/lOOO, polyval(polyfit~X~:,l~,X~:.3~,3~,x)/lOOO,...
X2(:,1)/1000.X2(:,3)/1000....
CO 2Ol.CO 2O*tan(alpha)l,'--');
axis([O 70 0 201); grid;
title('trajectoire d"un obus de 155');
xlabel('x (km)'); ylabelc'z (km)'); grid;

2.5 Illustration de principes d’optique physique


L’objectif de cet exercice est d’utiliser les fonctions graphiques de matlab pour faire apparaitre les
figures de diffraction obtenues d’abord par deux fentes d’koung, puis par une fente rectangulaire, de
cotés a et b. Celles-ci sont données par des fonctions d’intensité égales à [5]

Les figures 8 et 9 correspondent aux résultats obtenus avec le programme ci-dessous. Son utilisation
avec la version étudiante de matlab est possible en réduisant la valeur des variables Nx et Ny à 256
et 32, mais fournit alors des images dont la résolution est plus faible.
% exemple 5 : exemples en optique physique

k=6;
Nx=400; x=linspace(-20,20,Nx);

% Une fente d'Young


Il=sinc(x/k).-2;
cif; plct(x.11); grid; pause;

% Deux fentes d'Young


12=Il.+cos(pi*x).-2;
subplot(211); titlac'intensite dans le plan focal');
plot(x,I2,x,Il,'.'); axis(C-20 20 0 11); grid;
Ny=5; y=linspaca(-l,l.Ny);
Cx2,y21=meshdom(x.y);
IZ=sinc(xZ/k).-2 .* cos(pi*x2).-2;
aubplot(212);
colormap(gray(l0));
pcolor(x,y,I2.~(0.5)); shading interp; pause;

% Diffraction par une fente rectangulaire

F. AUGER,B.VELAY BUP no785 - cahier enseignement supérieur


BULLETIN DE L’UNION DES PHYSICIENS 213

subplot(ll1);
Nr=400; x=linspace(-2.5.2.5,Nx);
Ny=200; y=linspace(-2.5.2.5,Ny);
Cx2.y2l=meshdom(x,y);
I=sinc(x2).*2 .* ainc(y2).-2 ;
contour(x,y.I,C0.01 0.05 0.2 0.8 0.91); grid; pause;
colormap(gray(l0)); axis(‘square’);
pcolor(x,y.I.~(0.5)); shading interp; pause;

I=sinc(x2).-2 .* sinc(2.0*y2).-2 ;
contour(I.CO.Ol 0.05 0.2 0.8 0.Ql.x.y); grid; pause;

I=sinc(x2).-2 .* sinc(S.O*yî).-2 ;
contour(r,y,I,CO.Ol 0.05 0.2 0.8 0.91); grid; pause;

On pourra remarquer que comme dans tous les exemples précédents, aucune structure de répétition
n’a été utilisée, bien que les fonctions d’intensité aient été calculées sur plusieurs centaines de points.
Ceci est dû aux capacités de sectorisation de Matlab, qui permettent d’appliquer une fonction à tous
les éléments d’une matrice.

3 conclusion
Bien qu’ils aient été utilisés auparavant pour illustrer les possibilités de deux environnements de
calcul formel, les problèmes évoqués ici sont essentiellement numériques. Il ne faudrait cependant
pas en déduire I’inexistance de problèmes de calcul formel en sciences physiques. Mais il parait
cependant raisonnable de penser que les problèmes numériques prédominent.
Enfin, ces différents exemples montrent qu’il est relativement aisé avec ce type de logiciel d’illustrer
des principes physiques par des expérimentations numériques et des représentations graphiques. Il
semble raisonnable cependant de considérer que celles-ci peuvent utilement complémenter, mais pas
se substituer à d’autres formes pédagogiques qui développent les capacités d’abstraction essentielles
des étudiants.

Vol 90 - Juin 1996 Matlab pour la résolution de problèmes


214 BULLETIN DE L’UNION DES PHYSICIENS

Bibliographie
PI A. Biran, M. Breiner, “Matlab for engi-
neers”, Addison-Wesley, 1995.
PI P. Brammand, P. Faye, G. Thomassier,
“Physique, terminales C et E”, Hachette,
ISBN 2-01-009055-1, 1983.
[31 D.M. Etter, “Engineering problem solving
with Matlab”, Prentice Hall, 1993.
[41 G. Lindfield, J. Penny, “Numerical meth-
ods using Matlab”, Ellis Horwood, 1995.
[51 B. Lepretre, R. Adad, “Étude de quelques
thémes d’optique physique”, Bulletin de
l’Union des Physiciens, Vol 89, pp 25-44, Juin Figure 2: potentiel électrostatique dans un plan
1995. comprenant deux charges opposées: courbes de
[61A. Leroux, “Les logiciels de calcul formel et niveaux.
leur usage en sciences physiques”, Bulletin de
l’Union des Physiciens, Vol 89, pp 5-24, Juin
1995.
[71 The Math Works inc, “The Student edition
of Matlob”, Prentice Hall, ISBN O-13-184979-
4, 1995.

.*, -‘”
Y..

Figure 3: potentiel électrostatique dans un plan


comprenant deux charges opposées: perspective
en 3 dimensions.
30 4 4 4 -2 . I 1 10
“A.#...:

Figure 1: potentiel électrostatique dans un plan


comprenant deux charges opposées: coupes 32

transversales.

Figure 4: oscillateur amorti: représentation de


la solution en fonction du temps.

F. AUGER, B. VELAY BUP 11~785 - cahier enseignement supérieur


BULLETIN DE L’UNION DES PHYSICIENS 215

Figure 5: oscillateur amorti: représentation de


la solution dans l’espace des phases.

Figure 8: figure de diffraction obtenue avec


deux fentes d’Young.

-3 I 4 -1 I 2 13
A

Figure 6: oscillateur de Van der Pol:


représentation de deux solutions dans l’espace
des phases.

Figure 9: figure de diffraction obtenue avec une


fente rectangulaire.

Figure 7: trajectoire d’un projectile dans le


champ de pesanteur avec ou sans frottement
fluide.

Vol 90 - Juin 1996 Matlab pour la résolution de problèmes

Vous aimerez peut-être aussi