next up previous contents index
suivant: La méthode du point monter: La méthode des trapèzes précédent: La méthode des trapèzes   Table des matières   Index


La méthode des trapèzes

On partage [a ; b] en n parties égales et trapeze renvoie la somme des aires des n trapèzes déterminés par la courbe représentative de f et la subdivision de [a ; b].
trapeze(f,a,b,n):={
local s,k;
s:=evalf((f(a)+f(b))/2);
for (k:=1;k<n;k++) {
s:=s+f(a+k*(b-a)/n);
}
return s/n*(b-a);
}
On partage [a ; b] en 2p parties égales et trapezel renvoie la liste de la somme des aires des n = 2k trapèzes déterminés par la courbe représentative de f et la subdivision de [a ; b], liste de longueur p + 1, obtenue en faisant varier k de 0 à p.
On pourra ensuite, appliquer à cette liste une accélération de convergence.
On remarquera qu'à chaque étape, on ajoute des "nouveaux" points à la subdivision, et que le calcul utilise la somme s précédente en lui ajoutant la contribution s1 des "nouveaux" points de la subdivision.
trapezel(f,a,b,p):={
local s,n,k,lt,s1,j;
s:=evalf((f(a)+f(b))/2);
n:=1;
lt:=[s*(b-a)];
for (k:=1;k<=p;k++) {
s1:=0;
for (j:=0;j<n;j++) {
s1:=s1+f(a+(2*j+1)*(b-a)/(2*n));
}
s:=s+s1;
n:=2*n;
lt:=concat(lt,s/n*(b-a));
}
return lt;
}
On met ce programme dans un niveau éditeur de programmes (que l'on ouvre avec Alt+p), puis on le teste et on le valide avec OK.
On tape (on partage [0;1] en 26=64 parties égales) :
trapezel(x->x^2+1,0,1,6)
On obtient :
[1.5,1.375,1.34375,1.3359375,1.333984375,1.33349609375,1.33337402344]
On sait que int(x^2+1,x,0,1)= $ {\frac{{4}}{{3}}}$=1.3333333333
On tape (on partage [0;1] en 26=64 parties égales) :
trapezel(exp,0,1,6)
On obtient :
[1.85914091423,1.75393109246,1.72722190456,1.72051859216,
1.71884112858,1.71842166032,1.71831678685]

On sait que int(exp(x),x,0,1)=e-1=1.71828182846
next up previous contents index
suivant: La méthode du point monter: La méthode des trapèzes précédent: La méthode des trapèzes   Table des matières   Index
Documentation de giac écrite par Renée De Graeve