Simulation numérique en MATLAB Pr So Ousséni
107/09/09
INITIATION A LA SIMULATION NUMERIQUE EN MATLAB
DEA DE MATHEMATIQUES APPLIQUEES ET CALCUL SCIENTIFIQUE
Promo 2007-2008Ouagadougou 12/11/07
SO Ousséni,Docteur en Mathématiques Appliquées,Spécialiste en simulations numériques et biomathématique,Maître de Conférence à l’Université de Ouagadougou.
Simulation numérique en MATLAB Pr So Ousséni
207/09/09
PLAN DU COURS
Introduction1.Gestion des fichiers2.Gestion du workspace3.Vecteurs4.Matrices5.Programmer en MATLAB6.Le graphisme7.Simulation numérique: cas des EDO8.Simulation numérique: cas des EDP
Simulation numérique en MATLAB Pr So Ousséni
307/09/09
INTRODUCTION (1/5)
Type d’outil Language de programmation; Environnement de développement.
Société The MathWorks(société américaine)
Domaines: Calcul numérique Education, Recherche, Industrie, Développement de projets.
Simulation numérique en MATLAB Pr So Ousséni
407/09/09
Historique MATLAB=Matrix Laboratory;
Conçu par le mathématicien Cleve Moler (Univerisité du Nouveau Mexique) à la fin des années 70 à partir des bibliothèques Fortran, LINPACK et EISPACK;
Jack Little (ingénieur) comprend rapidement les capacités et entreprend avec Steve Bangert, de le recoder en C.
En 1984 Jack Little, Cleve Moller et Steve Bangert créèrent la société The MathWorks afin de commercialiser la version 1.0 de MATLAB .
INTRODUCTION (2/5)
Simulation numérique en MATLAB Pr So Ousséni
507/09/09
Capacités
Interactif;
Langage de haut niveau;
Exécution de tâches plus rapide que C, C++ et fortran.
INTRODUCTION (3/5)
Simulation numérique en MATLAB Pr So Ousséni
607/09/09
Outils et modules associés Communications Toolbox Control System Toolbox Excel Link MATLAB Compiler Neural Network Toolbox Optimization Toolbox Real-Time Workshop® Robust Control Toolbox SimMechanics Simulink Statistics Toolbox System Identification Toolbox Virtual Reality Toolbox
INTRODUCTION (4/5)
Simulation numérique en MATLAB Pr So Ousséni
707/09/09
Alternatives
Fermat; GNU Octave; IDL(langage); JMathLib; LMS Imagine.Lab AMESim; Scilab; Sysquake.
INTRODUCTION (5/5)
Simulation numérique en MATLAB Pr So Ousséni
807/09/09
1. GESTION DE FICHIERS
Créer un dossier sur le CDémarrer/poste de travail/C/Fichier/Nouveau/Dossier/ ‘donner un nom’
(votre nom par exemple)
Ou bien
Démarrer/poste de travail/C/Clic droit/Nouveau/Dossier/’donner un nom’
o Créer un sous dossier à l’intérieur du dossier créé
Simulation numérique en MATLAB Pr So Ousséni
907/09/09
2. GESTION DU WORKSPACE (1/8)
Démarrer MATLAB Double cliquer sur l’icone de démarrage
Raccourci vers matlab.lnk
Simulation numérique en MATLAB Pr So Ousséni
1007/09/09
Variables scalaires
>>a=2 (entrer)
Donne la valeur 2 à la variable a et affiche le résultat
a=2
2. GESTION DU WORKSPACE (2/8)
Simulation numérique en MATLAB Pr So Ousséni
1107/09/09
>>b=3; (entrer)Donne la valeur 3 à la variable b et garde le résultat en
mémoire
2. GESTION DU WORKSPACE (3/8)
Simulation numérique en MATLAB Pr So Ousséni
1207/09/09
2. GESTION DU WORKSPACE (4/8)
>>b (entrer)
Permet d’afficher la valeur de la variable b.
Simulation numérique en MATLAB Pr So Ousséni
1307/09/09
2. GESTION DU WORKSPACE (5/8)
>>b=a (entrer)
Change la valeur de la variable b en lui assignant la valeur de la variable a.
Simulation numérique en MATLAB Pr So Ousséni
1407/09/09
Opérations élémentaires>>1+9 (entrer)ans=10>>6/2 (entrer)ans=3>>2\6 (entrer)ans=3>>1/3ans=0.3333>>format long
ans= 0.33333333333333>>format short>>2^5ans=32
2. GESTION DU WORKSPACE (6/8)
Simulation numérique en MATLAB Pr So Ousséni
1507/09/09
Variables spéciales >>pi (enter)ans=3.1416
>> realminans = 2.2251e-308
>> realmaxans =1.7977e+308
>> epsans =2.2204e-016
2. GESTION DU WORKSPACE (7/8)
Simulation numérique en MATLAB Pr So Ousséni
1607/09/09
o Fonctions mathématiques>>sin(pi/2)ans=1
cos, tan, sinh, cosh, tanh, exp, log, sqrt, …
2. GESTION DU WORKSPACE (8/8)
Simulation numérique en MATLAB Pr So Ousséni
1707/09/09
3. LES VECTEURS (1/5)
Création d’un vecteur Par énumération>>v=[1 2 5 4]v = 1 2 5 4Ou bien>>v=[1,2,5,4]w=[1;2;5;4]w = 1 2 5 4Ou bien>>w=v’
Simulation numérique en MATLAB Pr So Ousséni
1807/09/09
Par description>>x=[0:pi/11:pi]X= Columns 1 through 7
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136
Columns 8 through 12
1.9992 2.2848 2.5704 2.8560 3.1416
>>y=linspace(0,pi,12)y = Columns 1 through 7 0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 Columns 8 through 12 1.9992 2.2848 2.5704 2.8560 3.1416
>>z=linspace(0,pi)Donne 100 éléments par défaut
3. LES VECTEURS (2/5)
Simulation numérique en MATLAB Pr So Ousséni
1907/09/09
o Indexage et adressage>>v(3)ans = 5>>v(2:1:4)ans=2 5 4Ou >>v(2:4)>>v([4 3 2 3])ans = 4 5 2 5>>v([2 3])=[0 10]v = 1 0 10 4
3. LES VECTEURS (3/5)
Simulation numérique en MATLAB Pr So Ousséni
2007/09/09
o Opérations scalaires>>a=2*va = 2 4 10 8>>b=a-5b =-3 -1 5 3>>c=a.^2c = 4 16 100 64>>d=a*a’d=184 Combinaison de vecteurs>>K=[a b]K =2 4 10 8 -3 -1 5 3>>L=[k([3 7 4]) k(5:-1:1)]L =10 5 8 -3 8 10 4 2
3. LES VECTEURS (4/5)
Simulation numérique en MATLAB Pr So Ousséni
2107/09/09
o Utilisation des symboles [ ] énumération d’éléments : description d’éléments ( ) ensemble d’arguments , séparateur d’arguments ; séparateur de lignes non affichage du résultat de l’exécution d’une
instruction . force l’opération à s’appliquer sur chaque éléments
3. LES VECTEURS (5/5)
Simulation numérique en MATLAB Pr So Ousséni
2207/09/09
4. LES MATRICES (1/8) CréationUne matrice est un ensemble de lignes comportant toutes le même
nombre de colonnes.Créer les matricesM1 = M2= 1 2 3 1 2 3 4 5 6 11 13 15 7 8 9
>>M1=[1 2 3;4 5 6;7 8 9] ou M1=[1:3;4:6;7:9]
>>M2=[1 2 3;11 13 15] ou M2=[1:1:3;11:2:15]
Simulation numérique en MATLAB Pr So Ousséni
2307/09/09
Opérations scalaires>>M3=10*M1M3 = 10 20 30 40 50 60 70 80 90>>M4=M1/2M4 = 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000
4. LES MATRICES (2/8)
Simulation numérique en MATLAB Pr So Ousséni
2407/09/09
>>M5=M1^2M5 = 30 36 42 66 81 96 102 126 150>>M6=M1.^2M6 = 1 4 9 16 25 36 49 64 81
4. LES MATRICES (3/8)
Simulation numérique en MATLAB Pr So Ousséni
2507/09/09
Opérations entre matrices>>N1=M2*M1N1 = 30 36 42 168 207 246
(2,3)(3,3)=(2,3)
N2=M1*M2(3,3)(2,3) impossible
4. LES MATRICES (4/8)
Simulation numérique en MATLAB Pr So Ousséni
2607/09/09
>>P=[4 8 6;7 9 4; 7 2 1]>>N3=M2/PN3 = 0.8525 -0.5902 0.2459 3.6967 -2.2131 1.6721>>N4=M2*inv(P)N4 = 0.8525 -0.5902 0.2459 3.6967 -2.2131 1.6721
4. LES MATRICES (5/8)
Simulation numérique en MATLAB Pr So Ousséni
2707/09/09
Matrices particulières Matrice identité>>eye(4)ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Matrice nulle>>zeros(2,3)ans = 0 0 0 0 0 0
4. LES MATRICES (6/8)
Simulation numérique en MATLAB Pr So Ousséni
2807/09/09
1 partout
>>ones(2,3)ans = 1 1 1 1 1 1 Matrice diagonale>>diag([4 5 3])ans = 4 0 0 0 5 0 0 0 3
4. LES MATRICES (7/8)
Simulation numérique en MATLAB Pr So Ousséni
2907/09/09
Indexage>>M1M1 = 1 2 3 4 5 6 7 8 9>>M1(3,2)ans =8>>M1(:,2)ans = 2 5 8>>M1(1,:)ans = 1 2 3
4. LES MATRICES (8/8)
Simulation numérique en MATLAB Pr So Ousséni
3007/09/09
EXERCICE D’APPLICATION 1
On considère la matrice M1 précédente Renommer cette matrice A. Mettre à 0 l’élément de la 2e ligne 3e colonne. Mettre à 4 tous les éléments de la 1e ligne. Mettre à 5 tous les éléments de la 2e colonne. Appeler cette matrice B. Créer la matrice C en accolant à droite de A la matrice B. Créer la matrice D en extrayant les 2 premières lignes et
les 2 dernières colonnes de A. Créer la matrice diagonale E dont la diagonale principale
est égale à la diagonale principale de A.NB: Faire toutes ces opérations sans boucle.
Simulation numérique en MATLAB Pr So Ousséni
3107/09/09
CORRECTION
>>A=M1;
>>B=A, B(2,3)=0, B(1,:)=4, B(:,2)=5
>>C=[A B]
>>D=[A(1:2,:) A(:,2:3)’]
>>E=diag(diag(A))
Simulation numérique en MATLAB Pr So Ousséni
3207/09/09
5. PROGRAMMER EN MATLAB
Opérations logiques >, < , >= , <= , == , ~= , & o Contrôle d’exécution for expression end>>for n=1:5 for m=1:5 A(n,m)=n^2+m^2; end end
Simulation numérique en MATLAB Pr So Ousséni
3307/09/09
>>A =
2 5 10 17 26
5 8 13 20 29
10 13 18 25 34
17 20 25 32 41
26 29 34 41 50
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3407/09/09
while expression commande end if expression commande 1 (si expression vrai) else commande 2 (si expression n’est pas vrai) end
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3507/09/09
M-files ou scripts Définition:
Un script (ou M-file) est un fichier extension .m contenant des instructions MATLAB
Créer un M-file>>edit ou Barre d’outils /New M-file
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3607/09/09
% message.m affiche un message
beau_temps=1;
if beau_temps ~= 0
disp ('Hello, il fait beau')
end
Pour enrégistrer
save/ (chemin d’accès) nom: message
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3707/09/09
Exécuter un M-file>>cd C:/ nom dossier/ nom sous dossier
>>message
Hello, il faut beau
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3807/09/09
Fonctionsfunction y=temps(x)
% temps affiche un message suivant le temps qu’il fait
% et retourne l’opposé de la valeur de x
if length(x)>1 error (‘x doit être scalaire’); end
if x~=0
disp (‘espérons que demain sera meilleur!’)
end
y=-x;
5. PROGRAMMER EN MATLAB
Simulation numérique en MATLAB Pr So Ousséni
3907/09/09
EXERCICE D’APPLICATION 2
Écrire une fonction qui retourne l’indexe du plus grand élément d’un vecteur A donné comme argument d’entrée.
Simulation numérique en MATLAB Pr So Ousséni
4007/09/09
CORRECTION
function imax=indexmax(A)%donne l’index du max de AMax=A(1); imax=1;for i=1:length(A) if A(i)>Max Max=A(i); imax=i; endend
Simulation numérique en MATLAB Pr So Ousséni
4107/09/09
6. LE GRAPHISME
En 2D: plot
>>x=linspace(0,2*pi,30); y=sin(x);
>>plot(x,y)
>>plot(x,cos(x))
>>hold on
>>plot(x,sin(x))
>>hold off
>>clf
>>plot(x,sin(x),x,cos(x))
>>legend(‘courbe de sinus’,’courbe de cosinus’)
>>title(‘Courbes de fonctions circulaires’)
>>xlabel('abscisse'), ylabel('ordonnée')
>>plot(x,sin(x),'r+',x,cos(x),'b<:')
>>help plot
Simulation numérique en MATLAB Pr So Ousséni
4207/09/09
En 3D Plot3 (courbes paramétrés)
>>t=linspace(0,10*pi); plot3(sin(t),cos(t),t) Mesh (Courbe de fonctions de 2 variables)
>>x=0:.1:10; y=-10:.1:10; [X,Y]=meshgrid(x,y); Z=cos(X+Y);…
Mesh(X,Y,Z)
6. LE GRAPHISME
Simulation numérique en MATLAB Pr So Ousséni
4307/09/09
>>x=[1 2 3], y=[4 5 6], [X,Y]=meshgrid(x,y)
X =
1 2 3
1 2 3
1 2 3
Y =
4 4 4
5 5 5
6 6 6
(X,Y)={(1,4),(2,4),(3,4),(1,5),…,(3,6)}
6. LE GRAPHISME
Simulation numérique en MATLAB Pr So Ousséni
4407/09/09
EXERCICE D’APPLICATION 3Des mesures expérimentales ont donné les résultats suivants:
Le but de cet exercice est d’interpoler ces points c’est à dire tracer une courbe qui passe le plus près possible de l’ensemble des points d’abscisse le temps et d’ordonnée la mesure correspondante. Utiliser d’abord les fonctions polyfit et polyval (voir help polyfit,help polyval) et ensuite la fonction spline (voir help
spline).
0,511,5321,921,210,50mesures
10,90,80,70,60,50,40,30,20,10Temps
Simulation numérique en MATLAB Pr So Ousséni
4507/09/09
CORRECTION
function interpolation(d)%interpole les données avec un polynome de degré dt=0:.1:1; tt=0:.05:1;m=[0 .5 1 1.2 2 1.9 2 3 1.5 1 .5];c=polyfit(t,m,d);y=polyval(c,tt);z=spline(t,m,tt);plot(t,m,’o’,tt,y,tt,z)legend('Points à interpoler','Courbe avec polyfit', 'Courbe
avec spline')
Simulation numérique en MATLAB Pr So Ousséni
4607/09/09
7. RESOLUTION DES EDO
EDO du 1er ordrey’(t)=f(y,t) y(0)=y0 Exemple: RésoudreMV’=-cV*V+Mg V(0)=0Avec M=70 kg, g=9,81 N/kg, c=0,27kg/m Écriture standard V’=f(V,t) V(0)=0f(V,t)=-c/M*V*V+g
Simulation numérique en MATLAB Pr So Ousséni
4707/09/09
Méthode de Euler itérative
V0=0; Vn+1=Vn+hf(Vn,tn) , n=1,…,N
Programme
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
4807/09/09
function euler(T)c=0.27; M=70; g=9.81; t=0; n=0; V=0; h=.1;while t<T n=n+1; V=V+h*(-c/M*V^2+g); t=t+h; tt(n+1)=t;
VV(n+1)=V;endplot(tt,VV)xlabel('temps')ylabel('vitesse')title('Simulation de la chute d''un corps dans le vide')
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
4907/09/09
Méthode de Runge Kutta (ODE 45)
Pardef
global M g c T y0
c=0.27; M=70; g=9.81; y0=0;T=1;
F
function y=F(t,y)
global M g c T y0
y=-c/M*y.^2+g;
Solution
function [t,y]=solution(T1)
% solution d'une EDO du 1er degré
global M g c T y0
T=T1;
[t,y]=ode45('F',[0 T],y0);
Plot(t,y)
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
5007/09/09
Refroidissement d’une plaque métallique épaisse par convection naturelle et par transfert radiatif de chaleur
dT/dt=A/(ro*C*V)*[eps*sig*(297^4-T^4)+hro*(297-T)], 0<t<180[, T(0)=473
ro=300 kg/m3 V=0,001 m3A=.25 m2C=900 J/(kg°K)hro=30 J/(m2°K)eps=0.8;sig=5.67*1e-8 W/(m2°K4)
EXERCICE D’APPLICATION 5
Simulation numérique en MATLAB Pr So Ousséni
5107/09/09
CORRECTIONpardefglobal A ro V C eps sig hro TSPAN Y0 h
%paramètres du problème de refroidissement de la plaque métalique% dT/dt=A/(ro*C*V)*[eps*sig*(297^4-T^4)+hro*(297-T) 0<t<180[,
T(0)=473
ro=300; %kg/m3 V=.001; %m3A=.25; %m2C=900; %J/(kg°K)hro=30; %J/(m2°K)eps=.8;sig=5.67*1e-8; %W/(m2°K4)TSPAN=[0 180]; Y0=473;
Simulation numérique en MATLAB Pr So Ousséni
5207/09/09
F
function Y=F(t,T)
%second membre de l'ODE problème de refroidissement de la plaque métalique
% dT/dt=A/(ro*C*V)*[eps*sig*(297^4-T^4)+hro*(297-T)], 0<t<180, T(0)=473
global A ro V C eps sig hro TSPAN Y0 h
Y=A/(ro*C*V)*(eps*sig*(297^4-T^4)+hro*(297-T));
CORRECTION
Simulation numérique en MATLAB Pr So Ousséni
5307/09/09
Solvefunction [tt,TT]=solveglobal A ro V C eps sig hro TSPAN Y0 h
%résolution du problème de refroidissement de la plaque métalique% dT/dt=A/(ro*C*V)*[eps*sig*(297^4-T^4)+hro*(297-T) 0<t<180[,
T(0)=473
t=0 ;n=0 ;T=473 ; tt(1)=t ;TT(1)=T ;while t<180n=n+1 ; T=T+h*F(t,T); t=t+h; tt(n+1)=t; TT(n+1)=T;end
CORRECTION
Simulation numérique en MATLAB Pr So Ousséni
5407/09/09
Courbefunction courbe(hh)global A ro V C eps sig hro TSPAN Y0 h%courbes des solution du problème de refroidissement de la plaque
métalique% dT/dt=A/(ro*C*V)*[eps*sig*(297^4-T^4)+hro*(297-T) %0<t<180,
T(0)=473% par ODE45 et Euler itératifpardefh=hh;[t,Y] = ODE45('F',TSPAN,Y0);[tt,T]=solve;plot(t,Y,tt,T)legend('solution par ODE45','solution par Euler itératif')
CORRECTION
Simulation numérique en MATLAB Pr So Ousséni
5507/09/09
7. RESOLUTION DES EDO
Résolution matricielle
Discrétisation
Ecriture Matricielle
AU=F
NixffxuuihxN
hh fuu iiiiiiii ,....,0);() ;(;;2
;1
1)(;) ;ex p (s inco s)(' uxxxxu
Simulation numérique en MATLAB Pr So Ousséni
5607/09/09
o Matrice
function A=matrice(N)
% calcule la matrice du système pour une EDO d'ordre 1 en utilisant un
% schéma décentré amont
A=toeplitz([1 -1 zeros(1,N-2)],[1 zeros(1,N-1)]);
Résolution
function [U,x]=resolution(N)
% résoud une EDO d'ordre 1 en utilisant un schéma centré amont
h=2*pi/N; x=-pi+(0:N)*h; % discrétisation
F=h*cos(x).*exp(sin(x)); F=F(2:N+1); F(1)=F(1)+1;
U=matrice(N)\F'; U=[1;U];
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
5707/09/09
o Courbe
function courbe(N)
% trace les courbes
[U,x]=resolution(N);
t=-pi:.1:pi;
plot(x,U,t,exp(sin(t)));
legend('solution numérique','solution exacte')
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
5807/09/09
7. RESOLUTION DES EDO
o EDO du second ordre
On pose
Donc
0'0
'''' )0(;)0();()()()()()( uuuutStutbtutatu
)()( ' tutv
0'0
' )0(;)0();()()()()()( uuuvtStutbtvtatv
Simulation numérique en MATLAB Pr So Ousséni
5907/09/09
7. RESOLUTION DES EDO
On pose
On a
v
uy
),(' ytfsb ua v
vy
Simulation numérique en MATLAB Pr So Ousséni
6007/09/09
7. RESOLUTION DES EDO
• Exemple
M=10; B=50; k=200
50;0)0(;1)0(;0 ''''' tuukuuB uuM
Simulation numérique en MATLAB Pr So Ousséni
6107/09/09
ProgrammePardefglobal M B k a c TSPAN Y0 h%paramètres du problème % M*u''+B*u'*|u'|+k*u=0M=10; B=50; k=200; a=B/M; c=k/M; TSPAN=[0 5]; Y0=[0;1];
F
function Y=F(t,y)%second membre de l'ODE M*u''+B*u'*|u'|+k*u=0global M B k a c TSPAN Y0 hY=[y(2);-a*abs(y(2))*y(2)-c*y(1)];
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
6207/09/09
Solvefunction [tt,YY]=solveglobal M B k a c TSPAN Y0 h%résolution du problème M*u''+B*u'*|u'|+k*u=0t=0 ;n=0 ;Y=Y0 ; tt(1)=t ;YY(:,1)=Y ; while t<5n=n+1 ; Y=Y+h*F(t,Y); t=t+h; tt(n+1)=t; YY(:,n+1)=Y;endCourbefunction courbe(hh)global M B k a c TSPAN Y0 h%courbes du problème M*u''+B*u'*|u'|+k*u=0 % par Euler itératif et ODE45pardefh=hh; [t,Y] = ODE45('F',TSPAN,Y0); [tt,YY]=solve; plot(t,Y(:,1),tt,YY(1,:))legend('Solution par ODE45','Solution par Euler itératif')title('Solutions du problème Mu''+Bu''|u''|''+ku=0')
7. RESOLUTION DES EDO
Simulation numérique en MATLAB Pr So Ousséni
6307/09/09
8. RESOLUTION DES EDP
Équation parabolique
0 t;0),(),0(
],0[ ;s in0,;0 ;0 ; t),(),(
tutu
xxxutxxutxu xxt
Simulation numérique en MATLAB Pr So Ousséni
6407/09/09
8. RESOLUTION DES EDP
Solution exacte
Solution numérique sur [0,T]
• Discrétisation partielle en espace
(1 ) )ex p ()s in (),( txtxu
T ][0 , t,....,0
) ,,( U, , i
N Xi
txuid xxN X
d x ii
Simulation numérique en MATLAB Pr So Ousséni
6507/09/09
) 's in...s in (s in0
21
1
1
121
12
) U... U(U U)(
1
d t
d U
1,...,1 )(
2
d t
d U(1 )
121
'1-N X212
211i
N X
iii
xxx)U (A
A Ud x
N Xid x
UUU
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
6607/09/09
8. RESOLUTION DES EDP
Ce problème est résolu par ODE45 ou par discrétisation
• Discrétisation en temps
1,....,0
)0( U,)(
UU
)0( U,)(
1U-U
T ][0 , t,....,0
) ,( U, ,
02
1
02
1
n
N Tn
UA Ud x
d t
UA Ud xd t
N Tn
tUn d ttN T
Td t
nnn
nnn
nn
Simulation numérique en MATLAB Pr So Ousséni
6707/09/09
8. RESOLUTION DES EDP
Ce schéma converge ssi
2
2
)( 22
2
N TT
N Xd x
d t
Simulation numérique en MATLAB Pr So Ousséni
6807/09/09
Programmes pardef% Paramètres par défaut de l'EDO d'ordre 2 u_t=u_xx
global T NT NX dt dx
T=1; NX=10; NT=20; dt=T/NT; dx=pi/NX;
matricefunction M=matrice
%matrice de l'EDO d'ordre 2 u_t=u_xx en utilisant un schéma centré en espace
global T NT NX dt dx
V=[-2 1 zeros(1,NX-3)];
M=toeplitz(V);
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
6907/09/09
solutionfunction [U,t,x]=solution
% résoud l'EDO d'ordre 2 u_t=u_xx en utilisant un schéma
%centré en espace
global T NT NX dt dx
t=0:dt:T; x=0:dx:pi;
U0=sin(x'); U0=U0(2:end-1); U=U0; %condition initiale
M=matrice;
for i=1:NT
U0=U0+dt/(dx)^2*M*U0; U=[U U0]; %stockage de la solution
end
U=[zeros(1,NT+1);U;zeros(1,NT+1)]; % ajout des conditions aux limites
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
7007/09/09
courbe% trace les courbes l'EDO d'ordre 2 u_t=u_xx
%en utilisant une discrétisation totales
global T NT NX dt dx
[U,t,x]=solution;
[tt,xx]=meshgrid(t,x);
subplot(2,1,1), mesh(tt,xx,U), xlabel temps, ylabel espace, zlabel quantite
te=0:.1:T; xe=0:.1:pi; [tte,xxe]=meshgrid(te,xe);
subplot(2,1,2), mesh(tte,xxe,sin(xxe).*exp(-tte)), xlabel temps, ylabel espace, zlabel quantite
legend(['En haut, solution numérique pour T=',num2str(T),'NT=',num2str(NT),'et NX=',num2str(NX),...
'. En bas,solution exacte.'])
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
7107/09/09
Simulationfunction simulation(T0,NX0,NT0)
global T NT NX dt dx
pardef
T=T0; NX=NX0;NT=NT0; dt=T/NT; dx=pi/NX;
courbe
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
7207/09/09
8. RESOLUTION DES EDP
Équation elliptique et hyperbolique
'121
2
2
2
2
),...,,(
,...,0, ) ,,( ) ,,(
,1y ,1 ,2
,2
)1( b o rd sau x 0
1,1- ;18s in1 0
jNjjj
jiijjiij
ji
uuuu
Njiyxffyxuu
id y-id x-xN
d yN
d x
u
yx)) x (y -((x ,y )uy
(x ,y )ux
Simulation numérique en MATLAB Pr So Ousséni
7307/09/09
8. RESOLUTION DES EDP
1,...,1,
)2()(
1),()1( 1122
2
Nji
uuudx
yxux jiijjiji
21
1
1
121
12
)(
1
1
2
1
2
1
2
1
2
2
jN
j
j
jN
j
j
u
u
u
d x
u
u
u
x
Simulation numérique en MATLAB Pr So Ousséni
7407/09/09
8. RESOLUTION DES EDP
1,...,1 ,)(
122
2
NjD ud x
ux
jj
1
2
1
2
1
2
1
2
2
)(
1
NN u
u
u
D
D
D
d x
u
u
u
x
Simulation numérique en MATLAB Pr So Ousséni
7507/09/09
function M=matrice(N) %matrice du problème hyperbolique
uxx+uyy=10sin(8x(y-1)) D=toeplitz([-2 1 zeros(1,N-3)]); I=eye(N-1); M=kron(I,D)+kron(D,I);
function z=F(x,y) %fonction second membre du problème hyperbolique
uxx+uyy=10sin(8x(y-1)) z=10*sin(8*x.*(y-1));
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
7607/09/09
function [UU,xx,yy]=solution(N) %fonction second membre du problème hyperbolique
uxx+uyy=10sin(8x(y-1)) x=-1+(0:N)*2/N; y=x;
[xx,yy]=meshgrid(x(2:N),y(2:N)); %discrétisation f=F(xx,yy); f=f(:); [xx,yy]=meshgrid(x,y); U=matrice(N)\f; U=reshape(U,N-1,N-1); %transforme
en matrice UU=zeros(N+1,N+1); UU(2:N,2:N)=U; %condition aux
bords
8. RESOLUTION DES EDP
Simulation numérique en MATLAB Pr So Ousséni
7707/09/09
function courbe(N) % trace les courbes du problème hyperbolique
uxx+uyy=10sin(8x(y-1)) global T NT NX dt dx [U,x,y]=solution(N); mesh(x,y,U), xlabel x, ylabel y, zlabel z title('Solution du problème hyperbolique
uxx+uyy=10sin(8x(y-1))')
8. RESOLUTION DES EDP