define riemann(inicio, fim, n){ local soma = 0, k = 0, deltax = (fim - inicio)/n; while (k < n-1){ soma = soma + f(inicio + k*deltax); k = k + 1; } soma = soma*deltax; return(soma); } define riemann_retangulos(inicio, fim, deltax){ local data = fopen("dados","w"); local transfere = fopen("transfere","w"); local soma = 0, a = inicio,x,y; while (a < fim){ soma = soma + f(a); y = f(a); x = a; fprintf(data, "%f %f \n", x, y); fprintf(data, "%f %f \n\n\n", x+deltax, y); while(x < a + deltax){ fprintf(transfere,"set arrow from %f,%f to %f,%f nohead \n", x,0, x,y); x = x + deltax/10; } ##print a, "valor da integral até aqui", soma*deltax; a = a + deltax; } fclose(transfere); fclose(data); soma = soma*deltax; transfere = fopen("transfere","a"); fprintf(transfere, "plot \"dados\" with lines \n"); fprintf(transfere, "pause -2 \n"); fclose(transfere); return(soma); } define f(x){ return (x*x); } ##print riemann(0,1,10000); deltax = 0.1 inicio = -3 fim = 5 print "o valor aproximado da integral com delta = ", deltax, print "no intervalo [",inicio,",",fim,"] é ", print riemann_retangulos(inicio, fim, deltax); system("gnuplot transfere");