- •Федеральное государственное бюджетное образовательное учреждение высшего образования "Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М.А. Бонч-Бруевича"
- •По лабораторной работе №2
- •Постановка задачи
- •Определённый тип уравнения
- •1. Задание структуры данных и предикатов
- •2. Загрузка входных данных
- •3. Определение типа уравнения и ветвление логики
- •4. Вычисление корней уравнения
- •5. Получение результатов
- •Перечень предикатов (функций)
- •1. Предикаты ввода-вывода и управления
- •2. Предикаты определения типа уравнения и выбора метода
- •Блок-схемы
- •Проверка функционала программы
- •Код программы
1. Задание структуры данных и предикатов
Программа начинается с определения доменов и предикатов, необходимых для работы с многочленами:
Домены:
realnum -вещественные числа (коэффициенты и корни);
file_pointer -указатель на файл;
int -целые числа для итераций и служебных параметров;
real_list -список вещественных чисел (например, для хранения корней).
Предикаты разделены на функциональные группы:
чтение коэффициентов из файла;
определение типа уравнения;
вычисление значения многочлена;
метод хорд для поиска корня;
схема Горнера для понижения степени;
схема Кардано для кубического уравнения;
расчёт квадратных и линейных формул;
вывод решений.
2. Загрузка входных данных
Программа считывает коэффициенты из файла coeffs.txt по следующему алгоритму:
проверяется существование файла;
файл открывается для чтения;
последовательно считываются пять строк -коэффициенты ;
значения сохраняются в соответствующие переменные для дальнейшей обработки.
3. Определение типа уравнения и ветвление логики
После чтения коэффициентов программа анализирует их значения:
Если - уравнение 4-й степени: запускается метод хорд и схема Горнера.
Если - кубическое уравнение: используется схема Кардано.
Если - квадратное уравнение: применяется классическая формула для квадратного корня.
Если - линейное уравнение: корень вычисляется по формуле
.Если - выводится «Решений нет».
Если - выводится «Любое число».
4. Вычисление корней уравнения
Для уравнения 4-й степени ( ):
а) Метод хорд (поиск одного корня):
выбираются два начальных приближения;
выполняются итерации, пока не достигнута точность;
найденный корень используется далее.
б) Понижение степени по схеме Горнера:
исходный многочлен делится на
;получается кубическое уравнение, решаемое стандартными методами;
вычисляются оставшиеся три корня.
Для кубического уравнения ( ):
Используется схема Кардано:
приводится к каноническому виду;
вычисляются параметры
,
,
дискриминант;в зависимости от знака дискриминанта находятся три или один корень.
Для
квадратного уравнения (
):
Корни вычисляются по формуле:
Для
линейного уравнения (
):
Для вырожденных случаев:
корректные сообщения: «Решений нет», «Любое число».
5. Получение результатов
На экран выводятся:
считанные коэффициенты из файла;
определённый тип уравнения;
используемый метод решения;
найденные корни (1, 2, 3 или 4);
либо текстовые сообщения при вырожденных случаях
Перечень предикатов (функций)
Для реализации программы решения уравнения четвёртой степени были определены следующие предикаты, сгруппированные по функциональным блокам.
1. Предикаты ввода-вывода и управления
• go - основной запуск программы • process_file - обработка файла с коэффициентами • read_coefficients(A, B, C, D, K) - чтение коэффициентов из файла • read_number(Number) - считывание одного вещественного числа • print_equation(A,B,C,D,K) - вывод уравнения в стандартном виде • print_root(Label, Value) - вывод найденного корня • print_message(Text) - вывод служебного сообщения • wait_for_enter - ожидание нажатия клавиши перед выходом
