trapezel(f,a,b,n):={ local s,puiss2,k,lt,s1,j; s:=evalf((f(a)+f(b))/2); puiss2:=1; lt:=[s*(b-a)]; for (k:=1;k<=n;k++) { s1:=0; for (j:=0;j<puiss2;j++) { s1:=s1+f(a+(2*j+1)*(b-a)/(2*puiss2)); } s:=s+s1; puiss2:=2*puiss2; lt:=concat(lt,s*(b-a)/puiss2); } return lt; }On va travailler tout d'abord avec deux listes : l0 et l1 au début l0 = [T0, 0] et l1 = [T1, 0], on calcule T1, 1 et l1 = [T1, 0, T1, 1], puis on n'a plus besoin de l0 donc on met l1 dans l0 et on recommence avec l1 = [T2, 0], on calcule T2, 1 et T2, 2, et l1 = [T2, 0, T2, 1, T2, 2] puis on met l1 dans l0 et on recommence avec.....pour enfin avoir Tn, 0, Tn, 1,... Tn, n dans l1.