Заданы коэффициенты а,б и ц биквадратного уравнения ax4+bx2+c=0.Найти все его действительные корни.
Программа вроде работает,но всегда в ответе выводит 2 корня один из которых (х2) всегда равен 0 :/ Чую что-то не то с кодом...
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,D,x1,x2,x3,x4,y1,y2:real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat(Edit3.Text);
D:=sqr(b)-4*a*c;
if D<0 then
Label5.Caption:='v uravnenii' +chr(13)+'net dejstvitelnix kornej'
else
begin
y1:=(-b+sqrt(D))/(2*a);
y2:=(-b-sqrt(D))/(2*a);
if (y1<0) and (y2<0) then
Label5.Caption:='V uravnenii' +chr(13)+'net dejstvitelnix kornej'
else
if (y1>=0) and (y2>=0) then
begin
x1:=sqrt(y1);
x2:=(-x1);
x3:=sqrt(y2);
x4:=(-x3);
Label5.Caption:='X1 ='+FloatToStr(x1)+chr(13)+'X2 ='+FloatToStr(x2)+chr(13)+'X3 ='+FloatToStr(x3)+chr(13)+'X4 ='+FloatToStr(x4);
end
else if (y1>=0) then
begin
x1:=sqrt(y1);
x2:=(-x1);
Label5.Caption:='X1 ='+FloatToStr(x1)+chr(13)+'X2 ='+FloatToStr(x2);
end
else if (y2>=0) then
begin
x1:=sqrt(y2);
x2:=(-x1);
Label5.Caption:='X1 ='+FloatToStr(x1)+chr(13)+'x2 ='+FloatToStr(x2);
end;
end;
end;
end.
Добавлено сообщение
--------------------------------------------------------------------------------
С 0 разобрался,а вот почему не выводит 4 корня?