define main() { local a=-5,b=5, p=5, delta=0.005; local deltaf1=f(a+delta)-f(a), deltaf2=f(a+2*delta)-f(a+delta); while (a < b) { while ( deltaf1*deltaf2 > 0 ) { a = a + delta; deltaf1=f(a+delta)-f(a); deltaf2=f(a+2*delta)-f(a+delta); } if ( abs(f(a)) < delta*delta) { printf ("-------> %f \n",raiz_binaria_tangente(a,a+delta, p)); a = a + 3*delta; } a = a + delta } } define raiz_binaria_tangente(a, b, p) { local delta = (b-a)/4, deltaf1=f(a+delta)-f(a),deltaf2=f(a+2*delta)-f(a+delta); if (p) { if ( (f(a)*f(a+delta)*deltaf1*deltaf2 <= 0) && ( p>0) ) raiz_binaria_tangente(a,a+delta , p-1); else raiz_binaria_tangente((a+b)/2,b , p-1); } return a; } define f(x) { return (x-1)*(x+2)*(x+2)*(x-2)*(x-2)*(x*x*x*x*x + x*x*x*x + x*x*x + x*x + x + 1); } ## raiz_binaria_tangente(1.999,2.01,3) main(); quit; /* Comentários: A numeração dos comentários não é continuada, pode dar saltos...para facilitar a reutilização de programas. juros, progressao geometrica */