Universit´e de Strasbourg
TP SCILAB
Agr´egation Externe de Math´ematiques Ann´ee 2012-2013
TP2: Int´egration num´erique
L’objectif de ce TP est de programmer et de comparer diff´erentes m´ethodes d’int´egration num´erique.
On se donne une fonction f d´efinie par une formule, qui sera impl´ement´ee sous la forme function y=fval(x)...endfunction
On prendra en fonction d’un param`etre fix´e numvariant de 1 `a 6, fval correspondant `a f1(x) =xd, f2(x) = exp(x), f3(x) = 1/(1 + 16x2),
f4(x) = exp(−x2), f5(x) = exp(sin 2πx), f6(x) =xd(1−x)d cosx.
On veut tester pour un intervalle I = [xmin, xmax] diff´erentes formules d’approximation de Z xmax
xmin
f(x)dx.
1. Tester la fonction scilabintg sur les diff´erentes fonctions. On utilisera la valeur donn´ee par cette fonction comme solution de r´ef´erence pour comparer les autres. On utiliseraxmin =−1 etxmax = 1.
2. Cr´eer une fonction intg2(xmin,xmax,fval,N,j) qui calcule l’int´egrale de fval avec une formule compos´ee sur un maillage de N points, avec une m´ethode j. Impl´ementer les m´ethodes 1,2,3 et 4 qui sont respectivement la m´ethode compos´ee des rectangles `a gauche, du point milieu, des trap`ezes et de Simpson. Calculer l’ordre et donner une repr´esentation graphique, en faisant varier N dans un ensemble de valeurs convenables.
3. Impl´ementer la m´ethode 5 de Gauss. On pourra utiliser le code suivant pour calculer les points et les poids de Gauss sur l’intervalle [−1,1].
xx=.5./sqrt(1-(2*(1:N)).^(-2));T = diag(xx,1) + diag(xx,-1);
[V,D]=spec(T);x=diag(D);[x,i]=sort(x);w=2*V(1,:).^2;w=w(i);
4. Impl´ementer la m´ethode 6 de Clenshaw Curtis qui utilise les pointsxi= cos(i/N), i= 0, ...N..
La m´ethode de Clenshaw Curtis peut ˆetre implant´ee de mani`ere efficace en utilisant la FFT.
On pourra utiliser le code suivant :
x=linspace(0,1,N+1);x=cos(%pi*x);fx=fval(x)/(2*N);
g=real(fft(fx([1:N+1 N:-1:2])));
a=[g(1),g(2:N)+g(2*N:-1:N+2),g(N+1)];
w=0*a;w(1:2:N+1)=2../(1-(0:2:N).^2);I=sum(w.*a);