Скачиваний:
1
Добавлен:
28.05.2022
Размер:
2.42 Кб
Скачать
program lab3; {Программа вычисляет корни многочлена третьей степени x^3-2*x-5=0 на интервале [1,3]. Один действительнй корень - методом Ньютона. Оставшиеся комплексные - схемой Горнера}

var
root: array [1..3] of real; //Массив со значениями корней многочлена (только их вещественные части)
gorner: array[1..3] of real; //Массив со значениями коэфицентов многочлена для схемы Горнера
D: real; //D-Дискриминант для поиска двух оставшихся корней

function NewTon(x0:real):real;
var fx,fxder:real; //fx-значение функции в точке, fxder - значение функции у первой производной в точке
const eps=MINreal; //Епсилон окрестность нуля справа, выбранная в качестве точности для метода Ньютона
begin
fx:=((x0*x0*x0)-(2*x0)-5);
fxder:=((3*x0*x0)-2);
if ((fx/fxder)<eps) then NewTon:=x0 else NewTon:=NewTon(x0-(fx/fxder)); //Если условие метода Ньютона выполняется, то возвращается нужное значение.
//Если нет - то происходит рекурентный вызов функции вплоть до получения требуемой точности
end;

begin
root[1]:=NewTon(3); //Вычисление первого корня

//Вычисление коэфицентов по схеме Горнера
gorner[1]:=1;
gorner[2]:=gorner[1]*root[1];
gorner[3]:=gorner[2]*root[1]-2;

//Вычисление оставшихся комплексных корней
D:=(gorner[2]*gorner[2])-4*gorner[1]*gorner[3];
root[2]:=gorner[2]/2; root[3]:=gorner[2]/2;

//Вывод результатов вычислений
write('Вещественный корень уравнения x^3-2*x-5=0 -> '); writeln (root[1]);
write('Комплексные корени уравнения ->');
write (root[2]); write ('+'); write(sqrt(-D)/2); write('i ');
write (root[3]); write ('-'); write(sqrt(-D)/2); writeln('i');
end.
Соседние файлы в папке Лабалаторная работа №3