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