Utilisation de Matlab Pour La Resolution DE Problemes Physiques
Utilisation de Matlab Pour La Resolution DE Problemes Physiques
Utilisation de Matlab Pour La Resolution DE Problemes Physiques
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 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 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.
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...).
% 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,:));
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.
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:
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
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;
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
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:
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.
function derX=ecolder2(t,X);
% fonction de deriration pour l'exemple 3
derX(l)=X(Z);
derX(2)=2.O+lambdaO*(l.O-X(l).~2/x0~2)*X(2) - omegaO*2 l X(l);
trace=o.o;
XO=[3.0 0.01;
CtZ.X21 = ode45(‘ecolder2’, ti, tf, X0, 1.08-5. trace);
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);
f~surJa=o.o; g=9.81;
global f-sur-m g;
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;
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);
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.
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..
transversales.
-3 I 4 -1 I 2 13
A