Vous êtes sur la page 1sur 16

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Université des Sciences Technologiques Houari Boumediene

RAPPORT DU PROJET FINAL DU TP

Module : Analyse Numérique.

Section : A Groupe : 2

L’objectif du TP :

Le but de ces TP est de les implanter dans MATLAB, afin de les comparer et
mieux les appréhender.
Réalisé par : Lyna Karoun

Encadré par : Dr. Y.Chaiblaine

Année universitaire
2022/2023
Le premier TP

L’analyse
L'examen du chapitre "interpolation polynôme" du module d'analyse numérique
révèle deux méthodes importantes, mais ces dernières sont assez longues . Pour
résoudre ce problème et gagner du temps, nous les utilisons dans le programme
MATLAB.

La réalisation

%====Interpolation polynomaile=====
clear ; close all ; clc
disp ( '===== Interpolation polynomaile =====' )
disp ( '* 1. La Methode de Lagrange * ')
disp ( '* 2. La Methode de NEWTON * ')
disp ( '* 3. Pour quitter * ')
disp ( '* Tapez votre commande C entre <1-3> * ')
C= input ('C =') ;
%interval [a,b]=[3.5,3.7]
a=3.50;
b=3.70;
%la fonction f
f = @(x)exp(x);
exacte=f(3.62);%la valeur approchee de f(3.62)
switch C
case 1
disp('-------------------------------------------------------------------
')
disp( ' La Methode de Lagrange ')
disp('-------------------------------------------------------------------
')
disp('Ecrire le degree de polynome 4 ou 10 ')
n=input('le degre de poynome n='); %pour n=4 ou n=10
disp('1/ **Calculer h et xi **')
h=(b-a)/n; %on calcule le h
xi = [a:h:b]; %tout les xi
x=[xi] ;%tout les f(xi) :
k= n+1;
for i = 1:k
yi(i)= [f(x(i))];
end
y=[yi] ;
disp('2/***Remplissage de tableau***')
[x;y] %affichage de tableau
%les formules de l’interpolation de lagrange d’une fonction
%Li(x)=?(x-xj)./(xi-xj) , i&j=1:n i~=j') %les polynomes elementaires
du lagrange
disp('4/***Polynôme d’interpolation de Lagrange et la valeur
approchee***')
interv=1000;
dx=(x(k)-x(1))/interv ;%pour diviser l'axe de x d'une facon
eqivalente
xvar=x(1):dx:x(k);
pol=0;%calcule de Li
for i=1:k
lagr=1;
for j=1:k
if (i~=j)
lagr=(xvar-x(j))./(x(i)-x(j)).*lagr;
end
end
pol=pol+lagr.*y(i);
end
p=n;
coeff=polyfit(xvar,pol,p)
p=[coeff];%on met les coeff du polynome dans un vecteur
%la valeur approche de f(3.62)=p(3.62)
v=polyval(p,3.62);
disp(['la valeur approche de f(3.62) est =',num2str(v)])
%les graphes de la fonction f et de son polynome d interpolation de
lagrange
xp=polyval(p,x);
plot(x,f(x),'r',x,xp,'g')
title('courbe de f(x)=exp(x) et de son polynome de lagrange')
xlabel=('axe des x');
ylabel('axe des y');
legend('la fonction f(x)','le polynome P');
grid on
disp('***la valeur exacte et l''erreur commise***')%calcule de la
valeur exacte de f(3.62)
disp(['la valeur exacte de f(3.62) est =',num2str(exacte)])%l''erreur
commise
erl=exacte-v;
disp(['la valeur de l''erreur commise er(3.62) est =',num2str(erl)])

case 2

disp('************************************************************************')
disp( ' La Methode de NEWTON
')

disp('************************************************************************')%
la formule d''interpolation de newton pour Xi points d''interpolation ;i=0:n')
% p=?ni=1 ?i(?i-1j=1(x-xj))
disp('**Ecrire le degree de polynome 4 ou 10 **')
n=input('le degre de poynome n='); %pour n=4 ou n=10
h=(b-a)/n; %on calcle le h
x= [a:h:b]; %tout les xi
y=[];
d=zeros(n,n);
disp('***2/la table des differences divisees***')
for i=1: length(x)
y(i)=f(x(i));
d(i,1)=f(x(i));
end
for i=2:length(x)
for j=i:length(x)
d(j,i)= (d(j,i-1)-d(j-1,i-1))/(x(j)-x(j-i+1));
end
end
d
disp('4/***la methode de lagrange et l''approximation de f(3.62)***')
interv=1000;
Q=d(n,n);
for k=n-1:-1:1
Q=conv(Q,poly(x(k)));
m=length(Q);
Q(m)=Q(m)+d(k,k);
end
Z=polyval(Q,3.62);
fprintf('l''approximation de f(3.62) est= %f \n',Z)
v=linspace(3.50,3.70);
vQ=polyval(Q,v);

%4/***les graphes de la fonction f et de son polynome d interpolation de


lagrange
plot(v,vQ)
hold on
plot(x,y,'g')
hold on
grid on
title('courbe de f(x)=exp(x) et de son polynome de newton');
xlabel('axe des x');
ylabel('axe des y');
legend('f(x)','Q(x)');
hold off

otherwise
disp('erreur')
end

Test
Le deuxième TP

L’analyse
Par l'étude du chapitre Intégration numérique du module d'analyse numérique,
nous découvrons deux méthodes importantes pour les calculs.
Mais il faut beaucoup de temps pour les faire. Afin de remédier à ce problème
et de gagner du temps, ces calculs doivent être appliqués dans le programme
MATLAB.

La réalisation
%========================Integration numerique========================
clear ; close all ; clc
disp ( '========================Integration numerique========================' )
% i interval [a,b]=[0,1]
a=0;
b=1;
% declaration de la fonction f
f=inline('sin(x)*exp(x)');
disp ('***a/la valeur exacte de I***')
% declaration de l'integrale de f dans [a,b]
g=inline('(1/2)*exp(x)*(sin(x)-cos(x))') ;
I=g(b)-g(a) ;
fprintf('la valeur exacte de I dans [a,b] est %f\n\n\n ', I)

disp('*********i/la methode du trapeze*********')


%la methode de trapeze a 2 points
n=1;
%on calcul la varaible h
h=(b-a)/n;
It=(h/2)*(f(a)+f(b));
fprintf('It" integrale de f par la methode du trapeze dans [a,b] est %f\n ', It)
disp('*********ii/la methode du trapez generalisee*********')
%la methode du trapeze generalisee a 11 ou 101 points n=10 ou n=100
disp('SVP tapez 10 ou 100 ')
n=input(' n='); %pour n=10 ou n=100
if (n==10||n==100)
% on calcul la varaible h et les sommes S
h=(b-a)/n; %h: les points d'interpolations
%somme des valeur de 1:n-1
S=0;
for i=1:n-1
x(i)=a+i*h;
S=S+f(x(i));
end
Itg=(h/2)*(f(a)+f(b)+2*S);
fprintf('Itg" integrale de f par la methode du trapeze generalisee dans [a,b] est
%f\n\n\n' ,Itg)
else
disp('ERREUR" SVP tapez n=10 ou n=100')
end
disp('*********i/la methode du simpson*********')
%la methode du simpson a 3 points
n=2;
%on calcul la varaible h
h=(b-a)/n;
x1=a+1*h;
Is=(h/3)*(f(a)+f(b)+4*f(x1));
fprintf('Is" integrale de f par la methode du simpson dans [a,b] est %f\n ' ,Is)
disp('*** ii/la methode du simpson generalise***')
disp('SVP tapez 10 ou 100 ')
n=input(' n='); %pour n=10 ou n=100
if (n==10||n==100)
% on calcul la varaible h et les sommes S1 et S2
h=(b-a)/n;
S1=0;
%somme des valeur impair
for i=1:2:n-1
x(i)=a+i*h;
S1=S1+f(x(i));
end
S2=0;
% somme des valeurs pair
for i=2:2:n-2
X(i)=a+i*h;
S2=S2+f(X(i));
end
Isg=(h/3)*(f(a)+f(b)+4*S1+2*S2);
fprintf('Isg" integrale de f par la methode du simpson generalisee dans [a,b] est
%f\n\n\n ', Isg )
else
disp('erreur" SVP tapez n=10 ou n=100')
end
disp('*********d/comparaison des resultats obtenus*********')
I=0.909330673631479;
%l'erreur comise par la methode du trapeze ERt
ERt=abs(I-It);
fprintf('ERt" l''erreur comise par la methode du trapez est %f\n', ERt)
%l''erreur comise par la methode du trapeze generalisee ERtg
ERtg=abs(I-Itg);
fprintf('ERtg" l''erreur comise par la methode du trapez generalisee est %f\n',
ERtg)
ERs=abs(I-Is);
%l'erreur comise par la methode du simpson ERs
fprintf('ERs" l''erreur comise par la methode du simpson est %f\n', ERs)
ERsg=abs(I-Isg);
%l'erreur comise par la methode du simpson generalisee ERsg
fprintf('ERt" l''erreur comise par la methode du simpson generalisee est %f\n ',
ERsg)
%Comparaison les résultats obtenus
disp('ERsg<ERs<ERtg<ERt')
%Remarque
disp('>>> On remarque que la methode de simpson generalisee donne une meilleur
approximation de I')
Test
Le troisieme TP
Analyse

En étudiant le chapitre consacré à la résolution des équations non linéaires du


module d'analyse numérique, nous découvrons trois méthodes de calcul
importantes . Et comme elles demandent beaucoup de temps , on doit les
appliquer dans le programme MATLAB .

La réalisation
%====================== TP3======================
clear ;clear all; clc
%a) Tracer le graphe 𝑦=f(x) sur un intervalle tel qu)il vous permet de localiser
la
%solution de l'équation.

x= linspace(0.65,0.75);
f= inline ('x+2*log(x)');
plot(x,f(x));
title('representation de f(x)');
xlabel('x');
ylabel('y(x)');
legend('f(x)=x+2*ln(x)');
grid on

%b) Localiser la solution dans le plus petit intervalle [a,b] possible.


%1. Ecrire un script, que vous appellerez ≪ dichotomie.m ≫ qui implémente la
méthode de
%dichotomie suivant les étapes

clear all;
clc;
disp('****** La metohde de dechotomie******')
a=0.65;
b=0.75;
fa=a+2.*log(a);
fb=b+2.*log(b);
k=0;
eps=0.00001;
if fa*fb<0
while (b-a)>eps
k=k+1;
c=(a+b)/2;%
fc=c+2.*log(c);
if fa*fc<0
b=c;
else a=c;
end
fprintf ('%i | %f | %f \n\n' ,k,c,fc)
end
end
fprintf ('>> >la solution de l''equation f(x)=0 est %f \n' , c)
fprintf('le nombre d''iteration est = %i \n' ,k);

%2. Ecrire un autre script, que vous appellerez ≪ pointfixe.m ≫ qui implémente la
méthode du point fixe

clear ; clear all ;clc


disp('*****La methode du point fixe*****');
f= inline ('x+2*log(x)');%la fonction f(x)
Q=inline ('exp(-x/2)');%x=Q(x)
x0=0.65;
x1=Q(x0);
eps=0.00001;
k=0;
disp('Affichage methode du point fixe');
while (abs (x0-x1)>eps)
x1=Q(x0);
x0=x1;
k=k+1;
end
fprintf ('la solution de l''equation f(x)=0 est : %f \n' , x0)
fprintf('le nombre d''iteration est : %i \n',k);

%3. Ecrire un autre script, que vous appellerez ≪ Newton.m ≫ qui implémente la
méthode
%de Newton.

clear ;clear all ; clc


disp('*****La Methode de Newton*****')
f=inline('x+2*log(x)');%la fonction f(x)
df=inline('1 + 2/x');%la derive de f(x)
%l'intervale [a,b]=[0.65,0.75]
disp('Affichage La Methode de Newton')
a=0.65;
b=0.75;
x0=0.65;
eps=10^-5;
k=0;
err=1;
while ( err >eps )
k =k+1;
x1=x0-(f(x0)/df(x0));
err=abs(x1-x0);
x0=x1;
fprintf('%i | %10.5f | %10.5f \n',k,x0,f(x0));
end
fprintf('le nombre d''iteration = %i \n',k);
fprintf('la solution est %i avec f(%i)=%i \n',x0,x0,f(x0));

1. Ecrire un script, que vous appellerez ≪ dichotomie.m ≫ qui implémente la


méthode de dichotomie suivant les étapes

%1. Ecrire un script, que vous appellerez ≪ dichotomie.m ≫ qui implémente la


méthode de
%dichotomie suivant les étapes

clear all;
clc;
disp('****** La metohde de dechotomie******')
a=0.65;
b=0.75;
fa=a+2.*log(a);
fb=b+2.*log(b);
k=0;
eps=0.00001;
if fa*fb<0
while (b-a)>eps
k=k+1;
c=(a+b)/2;%
fc=c+2.*log(c);
if fa*fc<0
b=c;
else a=c;
end
fprintf ('%i | %f | %f \n\n' ,k,c,fc)
end
end
fprintf ('>> >la solution de l''equation f(x)=0 est %f \n' , c)
fprintf('le nombre d''iteration est = %i \n' ,k);

2. Ecrire un autre script, que vous appellerez ≪ pointfixe.m ≫ qui implémente


la méthode du point fixe. Pour cela, on doit réécrire l’équation sous la forme
𝑥 = 𝜑(𝑥) , en assurant la convergence de l’algorithme. Il faut faire attention
ici au critère d’arrêt. En effet, la précision ici est la différence entre deux
valeurs consécutives de la solution, c'est-à-dire |𝑥 − 𝑥 | < 𝜀.
%2. Ecrire un autre script, que vous appellerez ≪ pointfixe.m ≫ qui implémente la
méthode du point fixe
clear ; clear all ;clc
disp('*****La methode du point fixe*****');
f= inline ('x+2*log(x)');%la fonction f(x)
Q=inline ('exp(-x/2)');%x=Q(x)
x0=0.65;
x1=Q(x0);
eps=0.00001;
k=0;
disp('Affichage methode du point fixe');
while (abs (x0-x1)>eps)
x1=Q(x0);
x0=x1;
k=k+1;
end
fprintf ('la solution de l''equation f(x)=0 est : %f \n' , x0)
fprintf('le nombre d''iteration est : %i \n',k);

3. Ecrire un autre script, que vous appellerez ≪ Newton.m ≫ qui implémente la


méthode de Newton. L’arrêt des itérations se fera de la même manière que
dans la manipulation (2).
%3. Ecrire un autre script, que vous appellerez ≪ Newton.m ≫ qui implémente la
méthode
%de Newton.

clear ;clear all ; clc


disp('*****La Methode de Newton*****')
f=inline('x+2*log(x)');%la fonction f(x)
df=inline('1 + 2/x');%la derive de f(x)
%l'intervale [a,b]=[0.65,0.75]
disp('Affichage La Methode de Newton')
a=0.65;
b=0.75;
x0=0.65;
eps=10^-5;
k=0;
err=1;
while ( err >eps )
k =k+1;
x1=x0-(f(x0)/df(x0));
err=abs(x1-x0);
x0=x1;
fprintf('%i | %10.5f | %10.5f \n',k,x0,f(x0));
end
fprintf('le nombre d''iteration = %i \n',k);
fprintf('la solution est %i avec f(%i)=%i \n',x0,x0,f(x0));

Test
Nom Karoun
Prénom Lyna
Matricule 202033018264
Adresse e-mail karounlyna0064@gmail.com

Vous aimerez peut-être aussi