Tengo una función $f(x) = x^2-8x-10\cos(2x)+15$ y se supone que a través de Matlab debo encontrar todas las raíces de esta función. Puedo ver gráficamente que tiene $4$ raíces y he escrito una función de matlab para encontrar una raíz. Cuando la diferencia absoluta entre $x_n$ y $x_{n+1}$ es menor que $10^{-10}$ la función devuelve $x_{n+1}$ como la raíz.
Ya que tiene $4$ raíces llamo a la función $4$ veces, con diferentes valores de partida cada vez, siendo todos ellos cercanos a alguna raíz.
El problema es el siguiente: se encuentran la 1ª y la 3ª raíz. Y las raíces 2ª y 4ª no. Al tratar de encontrar la 2ª raíz me devuelve el valor de la 1ª raíz, y al tratar de encontrar la 4ª raíz sólo hace un bucle que me dice $x_n$ es NaN
.
Incluso cuando el valor de inicio cuando trato de encontrar la 2ª raíz es la raíz, sigue devolviendo la 1ª raíz.
Esto es para un laboratorio de la escuela y tiene que ser encontrado con un método de punto fijo que me han dado:
x_n = (1/15)x^2+(7/15)x-(2/3)cos2x+1
Mi función para encontrar las raíces tiene el siguiente aspecto
function root = fixpoint(x, T)
while true
x_n = 1/15*(x^2)+7/15*x-2/3*cos(2*x)+1;
error = abs(x_n-x);
disp(['Error: ', num2str(error),' X_n: ', num2str(x_n)])
if error < T
break
end
x = x_n;
end
root = x_n;
end
Y lo llamo 4 veces con:
errorMargin = 10^-10;
p1 = fixpoint(2, errorMargin);
p2 = fixpoint(3.977, errorMargin);
p3 = fixpoint(5, errorMargin);
p4 = fixpoint(7, errorMargin);
Y lo consigo: p1= 2.429
(correcto), p2= 2.429
(el real es 3,977), p3= 5.571
(correcto), p4
bucles 'NaN'
¿Qué tengo que hacer para encontrar todos los $4$ ¿Raíces?