function TP2_sujet
format long
close all
% Il s'agit de calculer numeriquement l'integrale If de la fonction
%    f  x ------>  exp(2x) cos(x) 5/(exp(pi)-2)
% sur l'intervalle [0, pi/2], a l aide des methodes d integration numeriques vues en cours.
% Un calcul exact montre que If=1.
%---------------
% Question 1
%---------------
% Completez la fonction Ef, fonction matlab qui evalue f, en fin de fichier.
% Tester cette fonction en calculant Ef(x) avec x=[0;1;2]
% Vous devez trouver
%   0.236510699382070
%   0.944227352856702
%  -5.373723513294425
% Reponse



Pause('Question 1')
%----------------
% Question 2
%----------------
% Representez sur un meme graphique :
%   1-- en rouge la fonction f sur [0,pi/2]
%   2-- en noir, les rectangles de sommets
%       (x(k),0), (x(k+1),0) ,(x(k),f(m(k))), (x(k+1),f(m(k))
%       avec x=[0:N]'*(pi/2)/N  et m=(x(1:N)+x(2:N+1))/2 et N=10
% Reponse


Pause('Question 2')
%--------------
% Question 3
%-----------------
% Completez la fonction Rectangles en fin de fichier
% Comment la tester ?
% Reponse


Pause('Question 3')
%---------------------
% Question 4
%----------------------
% Soit Vrec le vecteur defini par Vrec(k) = Rectangles(0,pi/2,10^k,@Ef), avec k = 1,2,...,5
% Representez la courbe d'erreur en rouge, et en echelle semi-logarithmique
% c'est a dire la courbe k -> |Vrec(k) - 1| en echelle semi-logarithmique (voir semilogy dans l aide matlab)
% Sur la meme figure, tracez la courbe k -> 10^(-2*k) (en echelle logarithmique). Que remarquez-vous ?
% Reponse


Pause('Question 4')
%------------------
% Question 5
%-----------------
%  Representez sur un meme graphique :
%    1-- en rouge la fonction f sur [0,pi/2]
%    2-- en vert,les trapezes de sommets
%        (x(k),0), (x(k+1),0) ,(x(k),f(x(k))), (x(k+1),f(x(k+1))
%        avec x=[0:N]'*(pi/2)/N    et N=6
% Reponse


Pause('Question 5')
%----------------
% Question 6
%------------------
% Completez la fonction Trapezes en fin de fichier
% Comment la tester ?
% Reponse


Pause('Question 6');
%----------------------
% Question 7 
%----------------------
% Soit Vtrap le vecteur defini par Vtrap(k) = Trapezes(0,pi/2,10^k,@Ef), avec k = 1,2,...,5
% Representez la courbe d'erreur en rouge, et en echelle semi-logarithmique
% c'est a dire la courbe k -> |Vtrap(k) - 1| en echelle semi-logarithmique (voir semilogy dans l aide matlab)
% Sur la meme figure, tracez la courbe k -> 10^(-2*k) (en echelle logarithmique). Que remarquez-vous ?
% Reponse



Pause('Question 7')
%------------------
% Question 8
%-----------------
% Representer sur un meme graphique :
%   1-- en rouge la fonction f
%   2-- en noir, la portion de parabole passant par (x(k),f(x(k))), ( (x(k) + x(k+1))/2, f( (x(k) + x(kk+1))/2) ), (x(kk+1), f(x(kk+1))
%       avec x=[0:N]'*(pi/2)/N    et N=3
% Reponse



Pause('Question 8')
%----------------
% Question 9
%------------------
% Completez la fonction Simpson en fin de fichier.
% Comment la tester ?
% Reponse



Pause('Question 9')
%----------------------
% Question 10 
%----------------------
% Soit Vsim le vecteur defini par Vsim(k) = Simpson(0,pi/2,10^k,@Ef), avec k = 1,2,...,4
% Representez la courbe d'erreur en rouge, et en echelle semi-logarithmique
% c'est a dire la courbe k -> |Vsim(k) - 1| en echelle semi-logarithmique (voir semilogy dans l aide matlab)
% Sur la meme figure, tracez la courbe k -> 10^(-4*k) (en echelle logarithmique). Que remarquez-vous ?
% Reponse



Pause('Question 10');
%-------------
%Question 11
%--------------
% Representer les courbes d'erreur des trois methodes
% rectangles, trapezes et paraboles sur un meme graphique, en echelle semi-log.
% Reponse

Pause('Question 11')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% LA PARTIE FONCTIONS A COMPLETER COMMENCE ICI %%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y = Ef(x)
% Cette fonction prend comme argument le vecteur x, et renvoie
% le vecteur y dont les composantes verifient 
% y(k) = exp(2 x(k)) cos(x(k)) 5/(exp(pi)-2)



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function IntAppRec = Rectangles(a,b,N,nomFonc)
% Cette fonction prend comme argument deux reels a et b, et
% un entier N, et une chaine de caracteres nomFonc
% En sortie, elle renvoit IntAppRec, valeur approchee de l integrale
% de la fonction nomFonc sur [a,b], obtenue en divisant l intervalle [a,b] en N sous-intervalles
% de meme longueur, et en utilisant la methode des rectangles sur chacun des sous intervalles.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function IntAppTrap = Trapezes(a,b,N,nomFonc)
% Cette fonction prend comme argument deux reels a et b, et
% un entier N, et une chaine de caractères nomFonc
% En sortie, elle renvoit IntAppTrap, valeur approchee de l integrale
% de la fonction nomFonc sur [a,b], obtenue en divisant l intervalle [a,b] en N sous-intervalles
% de meme longueur, et en utilisant la methode des trapezes sur chacun des sous intervalles.



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function IntAppSim = Simpson(a,b,N,nomFonc)
% Cette fonction prend comme argument deux reels a et b, et
% un entier N, et une chaine de caracteres nomFonc
% En sortie, elle renvoit IntAppSim, valeur approchee de l integrale
% de la fonction nomFonc sur [a,b], obtenue en divisant l intervalle [a,b] en N sous-intervalles
% de meme longueur, et en utilisant la methode de Simpson sur chacun des sous intervalles.



%%%%%% /!\ NE RIEN MODIFIER A PARTIR D ICI /!\ %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Pause(c)
strcat(c,'. Appuyer sur une touche pour continuer')
pause
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
