Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Первый семестр / Лабалаторная работа №3 / Лаболаторная работа №3

.odt
Скачиваний:
1
Добавлен:
28.05.2022
Размер:
135.66 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра математического обеспечения и применения ЭВМ

отчет

по лабораторной работе №3

по дисциплине «Информационные модели и системы»

Тема: «Вычисление корней многочлена третьей »

Студент гр. 8802

Попов А.П.

Преподаватель

Сидоров Ю.Н.

Санкт-Петербург

2018

СОДЕРЖАНИЕ

Содержательная постановка задачи...........................................................................3

Формальная постановка задачи..................................................................................4

Алгоритмизация...........................................................................................................5

Типы структур данных................................................................................................6

Текст программы.........................................................................................................6

Пример исполнения программы................................................................................7

Содержательная постановка задачи

Требуется написать программу, вычисляющую корни кубического многочлена x³+0*x²-2*x-5 на интервале [1,3]. Корни многочлена — один действительный, равный x₁ ≈ 2,095, должен быть вычислен методом Ньютона. И два комплексно сопряженных x₂¸₃ ≈ -1,047±i*1,136

Формальная постановка задачи.

Дано: f(x)=x³+0*x²-2*x-5 – функция многочлена третьей степени, где x∈ [1,3].

Найти: корни многочлена x₁,x₂,x₃.

Алгоритмизация

Сообщения, выводимые на экран, сокращены.

Типы и структуры данных

NewTon – рекурсивная функция. Принимает на вход текущее значение приближения первого корня, возвращает новое значение приближения. Выход из рекурсивных вызовов происходит при выполнении условия в методе Ньютона «fx/fxder < eps».

Типы данных функции NewTon:

1. fx — переменная вещественного типа. Значение функции в точке

2. fxder — переменная вещественного типа. Значение первой производной функции в точке

3. eps — вещественная константа. Число эпсилон, равное минимально возможному положительному значению вещественного числа в Паскале

root – вещественный массив из трех элементов. Заполняется вещественными частями значений корня многочлена f(x)=x³+0*x²-2*x-5.

gorner – вещественный массив из трех элементов. Заполняется значениями коэффициентов многочлена, который вычисляется по схеме Горнера.

D — вещественная переменная. Содержит значение дискриминанта от многочлена, полученного схемой Горнера.

Текст программы.

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 - Дискриминант для поиска двух оставшихся корней

*Продолжение на странице 7

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.

Пример выполнения программы

Вещественный корень уравнения x^3-2*x-5=0 -> 2.09455148154233

Комплексные корни уравнения ->1.04727574077116+1.13593988908893i 1.04727574077116-1.13593988908893i

Соседние файлы в папке Лабалаторная работа №3