Mónica
prueba lo siguiente:
x0=4.333
a=x0
b=x0
k=1
f=@(x) sin(x)
k3=1
while ~(floor(x0-2^(-k3-1))==floor(x0))
k3=k3+1
end
k4=1
while ~(floor(x0-2^-k4)==floor(x0))
k4=k4+1
end
k=max(k3,k4)
d=2^-k
while (sign(f(a))==sign(f(b)))
a=a-d
b=b+d
d=2*d
end
da
a = 2.583333000000000
b = 6.083333000000000
me parece que el enunciado que has adjuntado, implementado tal y como se lee, se cuelga para ciertos valores de x0, por ejemplo, tanto
k2=1
while ~(floor(x0-2^(-k2-1))==x0 && floor(x0-2^-k2)<x0)
k2=k2+1
end
como
k2=1
while ~(floor(x0-2^(-k2-1))==floor(x0) && floor(x0-2^-k2)<floor(x0))
k2=k2+1
end
se cuelgan para x0=4.9
por lo que quizás sea posible modificar el enunciado así:
Si esta respuesta te resulta de utilidad para solucionar tu pregunta, te agradeceria me votes haciendo click en el link que tiene el pulgar arriba al lado de esta respuesta.
Atentamente
John
Best Answer