trapezna(f,a,b,n):=block([h,i],
    h:(b-a)/n,
    float(h*((ev(f,x=a)+ev(f,x=b))/2+sum(ev(f,x=a+i*h),i,1,n-1)))
)$
f:x³$
a:0$
b:2$
n1:5$
n2:10$
n3:50$
n4:100$
n5:1000$

fi:integrate(f,x,a,b);

f1:trapezna(f,a,b,n1)$
f2:trapezna(f,a,b,n2)$
f3:trapezna(f,a,b,n3)$
f4:trapezna(f,a,b,n4)$
f5:trapezna(f,a,b,n5)$
print("Integriramo funkciju f(x) = x³ na intervalu [0,2])")$
print("Rezultat trapezne formule za n=",n1," intervala: ", f1, "greška:", abs(f1-fi))$
print("Rezultat trapezne formule za n=",n2," intervala: ", f2, "greška:", abs(f2-fi))$
print("Rezultat trapezne formule za n=",n3," intervala: ", f3, "greška:", abs(f3-fi))$
print("Rezultat trapezne formule za n=",n4," intervala: ", f4, "greška:", abs(f4-fi))$
print("Rezultat trapezne formule za n=",n5," intervala: ", f5, "greška:", abs(f5-fi))$

g:exp(sin(x))$
c:0$
d:π$
m1:5$
m2:10$
m3:50$
m4:100$
m5:1000$

wxplot2d(diff(g,x,2),[x,c,d]);

maxerr(m):=float((d-a)³/(12*m²)*exp(1))$

integrate(g,x,c,d);

ai: quad_qag(g,x,c,d,1);
gi: ai[1];

f1:trapezna(g,c,d,n1)$
f2:trapezna(g,c,d,n2)$
f3:trapezna(g,c,d,n3)$
f4:trapezna(g,c,d,n4)$
f5:trapezna(g,c,d,n5)$
print("Integriramo funkciju g(x) = exp(sin(x)) na intervalu [0,π])")$
print("Rezultat trapezne formule za n=",m1," intervala: ", f1, "max greška:", maxerr(n1), "greška:",abs(f1-gi))$
print("Rezultat trapezne formule za n=",m2," intervala: ", f2, "max greška:", maxerr(n2), "greška:",abs(f2-gi))$
print("Rezultat trapezne formule za n=",m3," intervala: ", f3, "max greška:", maxerr(n3), "greška:",abs(f3-gi))$
print("Rezultat trapezne formule za n=",m4," intervala: ", f4, "max greška:", maxerr(n4), "greška:",abs(f4-gi))$
print("Rezultat trapezne formule za n=",m5," intervala: ", f5, "max greška:", maxerr(n5), "greška:",abs(f5-gi))$