function
[x,a,b,k,resultado]=bisseccao(a,b,eps,del,kmax)
// [x,a,b,k,resultado]=bisseccao(a,b,eps,del,kmax)
f_a = f(a); f_b = f(b);
for k=1:kmax
x = (a+b)/2.0;
f_x = f(x);
printf('k=%g a=%g b=%g x=(a+b)/2=%g f(x)=%g\n',k,a,b,x,f_x);
if (abs(f_x)<eps)
// valor avaliado de f(x) é
pequeno, aceita x como raiz
resultado = 0;
break
end
if (abs(a-b)<=del)
resultado = 1;
break
end
if (sign(f_x)~=sign(f_a))
// raiz entre a e x
b = x;
f_b = f_x;
elseif (sign(f_x)~=sign(f_b))
// raiz entre x e b
a = x;
f_a = f_x;
else
resultado = -1;
break
end
end
if (k>=kmax)
resultado = -3
end
endfunction
Nenhum comentário:
Postar um comentário