function
[x,k,resultado]=secante(x0,x1,eps,del,kmax)
// [x,k,resultado]=secante(x0,x1,eps,del,kmax)
eps_m = number_properties('eps')
f_x0 = f(x0) ; f_x1 = f(x1)
for k=1:kmax
delta_f = f_x1-f_x0
if abs(delta_f)<sqrt(eps_m) then
resultado = -1
break
end
x = x1-f_x1*(x1-x0)/delta_f
f_x = f(x)
printf('k=%g x0=%g f(x0)=%g x1=%g f(x1)=%g x=%g
f(x)=%g\n',k,x0,f_x0,x1,f_x1,x,f_x);
if abs(f_x)<eps then
resultado = 0
break
end
if abs(x-x1)<del then
resultado = -2
break
end
x0 = x1 ; f_x0 = f_x1
x1 = x ; f_x1 = f_x
end
if k>kmax then
resultado = -3
end
endfunction
Nenhum comentário:
Postar um comentário