Telechargé par Samuel Bazié

projet

publicité
UNIVERSITE AUBE NOUVELLE
INSTITUT SUPERIEUR D’INFORMATIQUE ET DE GESTION
DEPARTEMENT : HIGH-TECH
FILIERE : IT3
RAPPORT DU PROJET D’ANALYSE NUMERIQUE
Membres du Groupe :
Professeur :
Dr METCHEBON Aimé
OUEDRAOGO YOHANN
ZOURE Omar Binkabo
KABORE Hamidou
BAZIE Samuel
BEBANE Yaya
Groupe 6
SOMMAIRE
INTRODUCTION
I.
Sous-programme function implémentant la méthode d'Euler
II.
Sous-programme function RK3 implémentant la méthode RungeKutta
III.
Programme principale implémentant les tâches suivantes :
- demander à l'utilisateur d'entrer au clavier le nombre d'équations à résoudre,
le vecteur des conditions initiales, les bornes tmin et tmax de l'intervalle sur
lequel on souhaite résoudre le système, le pas d'intégration choisi h, le second
membre de l’équation.
- créer à partir de tmin, tmax et h, un vecteur time contenant tous les instants
en lesquels la solution sera calculée.
- demander à l'utilisateur d'entrer au clavier son choix de méthode de
résolution : Euler ou RK3.
- selon la réponse, appeler Euler ou RK3 pour calculer la solution y
- visualiser à l'écran les solutions obtenues.
IV.
Résolution du problème suivant : la hauteur différentielle H d’un
manomètre à mercure.
V.
Exemple personnel
CONCLUSION
INTRODUCTION
Le présent projet nous a été soumis dans le cadre de l’application pratique des
méthodes théoriques vues au cours d’Analyse Numérique. Notre travail consiste
essentiellement à réaliser des programmes sur des fonctions à exécuter sur le logiciel
MATLAB. Ces fonctions seront exécutées suivant les méthodes d’EULER ou RUNGE
KUTTA.
Tout au long du travail nous implémenterons les programmes qui permettront
d’aboutir aux résolutions des systèmes qui nous ont été soumis.
Le bon fonctionnement des programmes sera évalué en résolvant le problème
suivant.
En remplaçant λ1 et λ2 par leur valeur respective -1 et -5 dans les deux équations,
on obtient
La fonction évaluant le vecteur à utiliser avec la méthode d’Euler ou RungeKutta 3
est la suivante :
function[f]=fct (t,y)
%
%
%
%
%
t=le scalaire
y=le vecteur
f=vecteur de sortie
y(1,1)=y1
y(2,1)=y2
f(1,1)=-3*y(1,1)+2*y(2,1);
f(2,1)=2*y(1,1)-3*y(2,1);
I.
Sous-programme function implémentant la méthode d'Euler
Pour commencer déterminons yanal1 et yanal2 en remplaçant λ1 et λ2 par leur valeur.
On obtient :
On a Y’=AY dont la solution est de la forme Y(t) = k. eA*t avec k un vecteur de deux
réels.
Vu que A n’est pas diagonale, nous allons la diagonaliser afin de déterminer son
exponentiel :
Résolvons l’équation det (A – λ*I2) = 0
Ce qui nous donne le polynôme caractéristique suivant :
det (A – λ*I2) = (−3 − �)² − 4
Donc det (A – λ*I2) = 0 implique que : (−3 − �) ² − 4 = 0 <=> (−3 − �) ² = 4
<=> −3 − � = 2 ou −3 − � = −2.
Ce qui nous donne les racines λ1 = -1 et λ2 = -5. Nous remarquons qu’il s’agit des
valeurs qui nous ont été données dans l’énoncé du projet.
Les vecteurs propres associee aux valeurs propres :
Pour Eλ1 :
On obtient alors le système suivant :
Soit e1 un vecteur directeur de Eλ1, on peut écrire que e1 =
Pour Eλ2 :
On obtient alors le système suivant :
car en effet 1 – 1 = 0.
Soit e2 un vecteur directeur de Eλ2, on peut écrire que e2 =
car en effet 1 + (-1) =
0. La matrice de passage de la base canonique (i, j) à la base (e1, e2) est donc
D’où
B-
De tout cela, il vient alors que :
eA*t
eA*t
La solution analytique est de la forme :
et exp
Y(t) = k*eA*t
avec k un
vecteur
Or, nous savons que y(0) =
, selon les conditions initiales données dans l’énoncé, à
savoir y1(0) = 2 et y2(0) = 1. Ce qui nous donne, pour t=0,
En posant k =
, on obtient :
d’où a =2 et b = 1 et donc k =
La solution analytique de l’équation devient :
Implémentation de la fonction Euler explicite sur mathlab
function [y1]=eulerexplicite(tmin,tmax,y0,h)
%
faut qu'il afficher le temps a la sorti(t yee)
y0=condition initiale, b=pas, a=intervalle de temps
%
tmin est la borne inferieur d'intégration de l'équation
différentielle
%
tmax est la borne supérieur d'intégration de l'équation
différentielle
%
y0 est la condition initiale
%
h est le pas d'intégration numérique
%
y contiendra la solution numérique
%
t0 contiendra le pas de temps correspondant
y=y0;
t=tmin;
for t0=tmin:h:tmax
y1=y0+h*fct(t0,y0);
y=[y y1];
t=[t t0+h];
y0=y1;
end
yanal(1,:)=3/2*exp(-t)+1/2*exp(-5*t);
yanal(2,:)=3/2*exp(-t)-1/2*exp(-5*t);
subplot(2,1,1)
plot(t,y(1,:),'-b',t,yanal(1,:),'-g')
subplot(2,1,2)
plot(t,y(2,:),'b',t,yanal(2,:),'-y')
Résultat de l’exécution du programme Euler explicite
>> eulerexplicite(0,4,[2;1],0.1)
II.
Sous-programme function RK3 implémentant la méthode
RungeKutta
Implémentation de la Méthode de RungeKutta sur mathlab
function [y,t]= rungekutta(a,b,y0,h)
% a est la borne inférieur d'intégration de l'équation
différentielle
% b est la borne supérieur d'intégration de l'équation
différentielle
% y0 est la condition initiale
% h est le pas d'intégration numérique
% y contiendra la solution numérique
% t contiendra le pas de temps correspondant
y=y0;
t=a;
for t0=a:h:b
k1=fct(t0,y0);
k2=fct(t0+h/2,y0+h*(k1/2));
k3=fct(t0+h,y0-h*k1+2*h*k2);
y1=y0+h/6*(k1+4*k2+k3);
y=[y y1];
t=[t t0+h];
y0=y1;
end
yanal(1,:)=3/2*exp(-t)+1/2*exp(-5*t);
yanal(2,:)=3/2*exp(-t)-1/2*exp(-5*t);
subplot(2,1,1)
plot(t,y(1,:),'-r',t,yanal(1,:),'-g')
subplot(2,1,2)
plot(t,y(2,:),'-r',t,yanal(2,:),'-b')
Résultat de l’exécution du programme RungeKutta
>> rungekutta (0,4,[2;1],0.1)
III.
Programme principale
Implémentation du programme principal
function [] = principal()
%
%
%
%
%
n=nombre d'équation à résoudre
y0=condition initiale de l'équation
tmin=borne inférieure de l'intervalle de la solution
tmax=borne supérieure de l'intervalle de la solution
h est le pas d'intégration
if nargin~=5
n=input ('entrer le nombre d''équation a résoudre: \n ');
y0=input ('entrer la condition initiale [a;b]: \n')
tmin=input('entrer la borne inférieure tmin: \n')
tmax=input('entrer la borne supérieure tmax: \n')
h=input('entrer le pas de temps: \n')
end
time=tmin
for t0=tmin:h:tmax
time=[time t0+h]
end
[time]
choix=menu ('choisir une méthode de
resolution','Euler','Runge Kutta 3')
if(choix==1)
eulerexplicite(tmin,tmax,y0,h)
else
rungekutta(tmin,tmax,y0,h)
end
IV.
Résolution du problème suivant : la hauteur différentielle H
d’un manomètre à mercure.
L = longueur de liquide dans le manomètre : 0.9915
g = accélération de la pesanteur : 9.8
v = viscosité du mercure : 0.0025
ρ = masse volumique du mercure : 13600
D = diamètre du tube : 2 valeurs seront utilisées : 4.5e-4, 1.8e-3
f(t) = pression mesurée par le manomètre : 0.15
La simulation couvrira l’intervalle 0 ≤ t ≤ 10.
On établira d’abord l’expression de la solution analytique en laissant z et τ sous la
forme de paramètres et on donnera la solution obtenue dans les 3 cas suivants :
z˂1, z=1, z˃1
Réécrivons l’équation différentielle :
Résolvons
Pour Δ<0, on a z˂1 donc 0˂z˂1
√1-z2
H(t)= [0,15���
z
� - 0,15 √1-z 2
Τ
���
√1-z2
τ
-zt
�] � τ + 0,15
Pour Δ=0, on a z=1
-t
-0,15t
, �(�) = [ τ
- 0,15] � τ +0,15
Pour Δ>0, on a z˃1
�(�) =
0,075
V.
z-√z2-1
j�2 -1
�
z+jz2 -1
τ
2
-z+jz2 -1
t+0,15
t +0,075z+0,225√z -1 �
τ
√z2-1
Exemple personnel
4 1 + y2
)'l
----,
I
_.
= - 8 1 - 5
- 2(0) - 0
yl 0) -
1)
4
(-8 - -
A=
4-À.
1
d ---t ( A - À/2) =
-
-8
= - _0 -
'À
= A 2 + .À il =
_
Àz
-
a
(- 1 )
+7
6
= - =
=
=-
1
8
d t(_ - À/ 2)
Ài
= +4
1- 7
- 1
A 2· 8
À ,
et
=
À
+ _
z-
3
-
(À - )
= 72
4 -A)(-
- À
+8
'
+
= 4
I
- -
1-
0) =
(
-À
1
-À) -
-- - À
=-
À
0
= 1-
-
1- 7
l
d
À
À
-À
8
0
-
1
.c
-
CONCLUSION
Répartition des différentes taches
I.
Sous‐programme function implémentant la méthode d'Euler :
Ouedraogo yohann et Kabore Hamidou
II.
Sous‐programme function RK3 implémentant la méthode RungeKutta :
Bazie Samuel et Zoure Omar
III.
Programme principale : Bebane Yaya
IV.
Hauteur différentielle H d’un manomètre à mercure : Bebane Yaya
V.
Exemple personnel: Zoure Omar et Kabore Hamidou
REDACTION DU RAPPORT : Bazie Samuel et Ouedraogo yohann
Téléchargement