Задача
Уравнение ax4
+ bx2 + c = 0 задано своими
коэффициентами. Найти действительные корни
этого уравнения. ( Коэффициент а отличен от нуля ).
Метод решения
задачи:
Обозначим у = х2
и решим квадратное уравнение вида ау2 + ву + с = 0. Если квадратное
уравнение действительных корней не имеет, то биквадратное
уравнение также не имеет
действительных корней. Если квадратное уравнение имеет
действительные корни, то
биквадратное уравнение может иметь 2 или 4 действительных
корня.
Описание алгоритма
решения задачи:
-
описываем переменные;
-
описываем подпрограмму исследования и нахождения
действительных корней квадратного уравнения в виде процедуры KVUR;
-
задаём коэффициенты биквадратного уравнения и параметр eps, определяющий минимальное
значение дискриминанта;
-
вызываем процедуру KVUR для вычисления значений у1 и у2;
-
вычисляем и печатаем значения действительных корней
уравнения х1, х2, х3, х4.
Переменные в процедуре:
а, в, с – коэффициенты квадратного уравнения;
у1, у2 – действительные корни квадратного уравнения;
d –
дискриминант;
eps
– минимальное значение дискриминанта.
Переменные в
программе:
у1, у2 – результаты работы процедуры KVUR;
x1, x2, x3, x4 – корни биквадратного уравнения.
Программа решения
задачи;
Program bi;
Const eps
= 1e-4; { задаём минимальное значение корня
уравнения }
Var a,b,c,y1,eps,x1,x2,x3,x4,k: real;
{ описываем глобальные переменные }
Procedure KVUR
(a,b,c:real; var y1,y2,k:real);
{ аргументы и результаты процедуры KVUR }
Var d:real;
Begin
D:= b*b-4*a*c;
{ дискриминант квадратного уравнения }
If d>0 then { если дискриминант больше нуля то
}
Begin
Y1:=(-b+sqrt(d))/(2*a);
{ вычисляем значение двух корней уравнения }
Y2:=(-b-sqrt(d))/(2*a);
End;
If (abs(d)<eps) and (d>0) then { если дискриминант больше нуля и меньше eps}
Begin
Y1:=-b/(2*a); y2:=y1;
{ вычисляем значение одного корня уравнения }
End;
If d<0
then { если d<0 то }
Begin
Writeln(‘ корни мнимые’);
K:=1;
End; { завершаем работу процедуры }
Begin { начало исполняемой части программы }
Writeln(‘a,b,c,eps=?’);
Readln(a,b,c,eps); { задаём коэффициенты уравнения }
KVUR(a,b,c,y1,y2,k);
{ вызываем
процедуру KVUR с
аргументами a,b,c. Результаты – у1,у2 }
If (y1<0) and (y2<0) then { если у1<0 и у2<0 тогда }
Writeln (‘действительных корней нет
‘) { печатаем: «действительных корней
нет» }
Else if
(y1>=0) and (k=0) then { если у1>0 тогда
}
Begin
X1:=sqrt(y1);
writeln (‘x1=’, x1:7:5);
{ вычисляем и печатаем значения х1 и х2 }
X2:=-X1; writeln(‘x2=’,x2:7:5);
End;
Else if
(y2>=0) and (k=0) then { если у2>0 тогда }
Begin
X3:=sqrt(y2);
writeln(‘x3=’, x3:7:5);
{ вычисляем и печатаем значения х3 и х4 }
X4:=-x3; writeln(‘x4=’,x4:7:5);
End;
End. { завершение работы программы }
Результаты
тестирования программы:
a
b c x1 x2 x3
x4
2
-3 7 - - - -
1
5 6 - - - -
-1
-2 24 2
-2 - -
1
-2 1 1
-1 1 1
Комментариев нет:
Отправить комментарий