Problema 1

> restart;

> second:=proc(a,b,c)
local x1,x2,ErrRelx1,ErrRelx2,x1Exacto,x2Exacto;
Digits:=4;
x1Exacto:=evalf((-b+sqrt(b^2-4*a*c))/(2*a));
x2Exacto:=evalf((-b-sqrt(b^2-4*a*c))/(2*a));
x1:=evalf((-b+sqrt(b^2-4*a*c))/(2*a));
x2:=evalf((-b-sqrt(b^2-4*a*c))/(2*a));
if b>0 then x1:=evalf((-2*c)/(b+sqrt(b^2-4*a*c))) fi;
if b<0 then x2:=evalf((-2*c)/(b-sqrt(b^2-4*a*c))) fi;
ErrRelx1:=evalf(abs(x1Exacto-x1)/abs(x1),10);
ErrRelx2:=evalf(abs(x2Exacto-x2)/abs(x2),10);
printf("x1 = %10.4e Erro relativo de x1 = %10.4e | x2 = %10.4e Erro relativo de x2 = %10.4e",x1,ErrRelx1,x2,ErrRelx2);
end:

> second(1,62.10,1);

x1 = -1.6100e-02  Erro relativo de x1 = 2.4224e-01  |  x2 = -6.2100e+01  Erro relativo de x2 = 0.0000e-01

> secondB:=proc(a,b,c)
local x1,x2,ErrRelx1,ErrRelx2,x1Exacto,x2Exacto;

x1Exacto:=evalf((-b+sqrt(b^2-4*a*c))/(2*a));
x2Exacto:=evalf((-b-sqrt(b^2-4*a*c))/(2*a));

Digits:=4;

if b>0 then
x1:=evalf((-2*c)/(b+sqrt(b^2-4*a*c)));
x2:=evalf((-b-sqrt(b^2-4*a*c))/(2*a));
else
x1:=evalf((-b+sqrt(b^2-4*a*c))/(2*a));
x2:=evalf((-2*c)/(b-sqrt(b^2-4*a*c)));
fi;

ErrRelx1:=evalf(abs(x1Exacto-x1)/abs(x1Exacto),10);
ErrRelx2:=evalf(abs(x2Exacto-x2)/abs(x2Exacto),10);

printf("x1 = %10.4e Erro relativo de x1 = %10.4e | x2 = %10.4e Erro relativo de x2 = %10.4e",x1,ErrRelx1,x2,ErrRelx2);
end:

> secondB(1,62.10,1);

x1 = -1.6100e-02  Erro relativo de x1 = 4.4918e-04  |  x2 = -6.2100e+01  Erro relativo de x2 = 2.5944e-04