% verschiedene M"oglichkeiten der L"osung einer quadratischen
% Gleichung mit den Nullstellen
% x_1 = 1
% x_2 = 1e-16 bzw  x_2 = 1e-17

clear

x(1) = 1;
x(2) = 1e-16;
x(2) = 1e-17;

% schlecht konditionierter Algorithmus
p = -(x(1)+x(2))
q = x(1)*x(2)
a = -p/2.0;
d = sqrt(a^2-q)
y(1) = a+d;
y(2) = a-d;
s = sprintf('schlecht konditionierter Algorithmus: %g, %g',...
               y(1),y(2));
disp(s);

% gut konditionierter Algorithmus
y(2) = q/y(1);
s = sprintf('gut konditionierter Algorithmus: %g, %g',...
               y(1),y(2));
disp(s);

% matlab
z=roots([1,p,q]);
s = sprintf('Matlab routine: %g, %g',z(1),z(2));
disp(s);

