Моя проблема в том, что мой алгоритм метода Мюллера в Matlab не находит сложные корни только реальными.Неважно, какую точку я выберу.Мой алгоритм только находит -1,9713 в диапазоне [-2, 0] и 1,4660 в диапазоне [1 2] после использования функции корней. Я знаю, что корни:
roots([2 0.5 -5 2 -3])
ans =
-1.9713
1.4660
0.1276 + 0.7090i
0.1276 - 0.7090i
Вот мой код:
function [sol,sol2,i] = Muller2()
min=-2;
max=0;
f=[2 0.5 -5 2 -3]
x=min
for i=1:Inf
%calculating coefficients of the quadratic equation
a=polyval(polyder(polyder(f)), x)/2;
b=polyval(polyder(f), x);
c=polyval(f, x);
%solving delta
d=b^2-4*a*c;
%calculating roots
z1=-2*c/(b+sqrt(d));
z2=-2*c/(b-sqrt(d));
%choosing the closer root
if(abs(polyval(f, z1))<=abs(polyval(f, z2)))
x=x+z1;
else
x=x+z2;
end
sol2(i)=x
if(abs(polyval(f,x))<=20*eps)
break;
end
end
sol=x