%diary roots_demo.diary
clc

disp('Polinomok gyökeinek közelítõ kiszámítása, a roots függvény');

disp('Véletlen egész gyököket generálunk');
gyokok_pontos = sort( randi([-10 10],1,5))'

p = poly(gyokok_pontos)   % fölíratjuk a megfelelõ polinomot

gyokok_koz = roots(p);
gyokok_koz = sort(gyokok_koz )

hiba = gyokok_pontos - gyokok_koz
hibanorm = norm(hiba,inf)

input('Folytatás ENTER-rel');
disp('A MATLAB függvénye ezeket a gyökökekt adja:');
gyokok_matlab = mroots(p);
gyokok_matlab = sort(gyokok_matlab)

disp('Mit mutat az eltérés?');
elteres = gyokok_koz - gyokok_matlab

input('Folytatás ENTER-rel');
disp('Néha a roots elég pontatlan, itt végig 1-ek a pontos gyökök:');
for n = 2:5
  n
  display(' A gyökök:');
  p = poly(eye (n))
  roots(p)
endfor

input('Folytatás ENTER-rel');
disp('Néha a polinom kicsi változtatása is "elrontja" a gyököket:');
for k = 1:6
  k
  p = poly(1:k)
  gyokok = roots(p)
  p_h = p - 10^(-6)*eye(1,k+1)
  gyokok_h = roots(p_h)
endfor;

diary off