Скачиваний:
0
Добавлен:
12.01.2026
Размер:
1.13 Mб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)

Факультет Информационных технологий и программной инженерии

Кафедра Программной инженерии

Лабораторная работа 6

По дисциплине: Разработка приложений искусственного интеллекта в киберфизических системах

Выполнил студент: Яковлев М. А. ИКПИ-32

Принял работу: Ерофеев С. А.

Дата выполнения:

«21» декабря 2025 г.

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

2025 г.

Постановка задачи

Разработать программу аппроксимации методом наименьших квадратов на базе полиномов Эрмита. Многочлен строится как сумма a0H0(x)+a1H1(x) ... amHm(x), где H1(x) ... Hm(x) — полином Эрмита.

Значение m вводит пользователь. В качестве исходных данных считываются пары координат x1y1 ... xnyn в файле. Исключаются дубликаты, контролируется неоднозначность.

Пары сортируются по возрастанию Х методом нисходящего слияния. Программа вычисляет коэффициенты а0, а1...am. Пользователь вводит количество точек n для построения графика.

Для достижения поставленной цели необходимо выполнить следующие задачи:

  • реализовать считывание пар координат (xi, yi) из входного файла;

  • исключить дубликаты данных и проконтролировать неоднозначность значений;

  • выполнить сортировку точек по возрастанию аргумента методом сортировки нисходящего слияния;

  • обеспечить ввод пользователем степени аппроксимирующего полинома;

  • реализовать вычисление коэффициентов полинома методом наименьших квадратов;

  • выполнить оценку качества аппроксимации;

  • сгенерировать точки для построения графика аппроксимирующей функции;

Входные данные:

Входные данные задаются во внешнем текстовом файле и представляют собой набор пар координат следующего вида:

x1 y1

x2 y2

...

xn yn

Каждая строка содержит два вещественных числа — значение аргумента и соответствующее значение функции.

Выходные данные:

Программа формирует следующие результаты:

  • список отсортированных исходных точек;

  • коэффициенты аппроксимирующего полинома;

  • значения аппроксимирующей функции в исходных точках;

  • набор вычисленных точек для последующего построения графика.

Алгоритм программы

Суть алгоритма заключается в следующем: разработанная программа реализует процедуру аппроксимации экспериментальных данных полиномиальной функцией методом наименьших квадратов. Логика работы программы состоит из последовательных этапов.

1. Структура данных и функциональные компоненты

В программе используются следующие основные типы данных:

  • Point — пара вещественных чисел (Double, Double), представляющая точку ;

  • векторы и матрицы: Vector и Matrix.

Функциональные компоненты программы включают:

  • ввод и предварительную обработку данных;

  • сортировку точек;

  • построение матрицы;

  • вычисление коэффициентов полинома методом наименьших квадратов;

  • оценку погрешности аппроксимации;

  • генерацию точек для визуализации.

2. Загрузка и предварительная обработка данных

Программа считывает данные из файла, имя которого вводится пользователем. Алгоритм обработки входного файла включает:

  • построчное чтение данных;

  • преобразование строк в пары чисел;

  • игнорирование некорректных строк.

Далее выполняется удаление дубликатов:

  • если точки имеют одинаковое значение и одинаковое , они считаются полными дубликатами и игнорируются;

  • если значения совпадают, но различаются — фиксируется неоднозначность.

3. Сортировка данных

После удаления дубликатов точки сортируются по возрастанию координаты . Для сортировки используется метод сортировки нисходящим слиянием. На этапе разделения массив точек виртуально делится на две примерно равные половины, и процесс рекурсивно применяется к каждой из них. Это продолжается до тех пор, пока не будут получены минимальные части, состоящие из одного элемента.

На этапе слияния происходит объединение двух уже отсортированных подмассивов в один упорядоченный массив. Процедура слияния сравнивает первые элементы обоих массивов, выбирает меньший по значению x и помещает его в результирующий массив, затем перемещает указатель в массиве, из которого был взят элемент. Этот процесс повторяется до полного исчерпания обоих массивов. Если один из массивов заканчивается раньше, оставшиеся элементы второго массива просто копируются в результат без дополнительных сравнений.

4. Выбор степени аппроксимирующего полинома

Пользователь вводит степень полинома . Программа выполняет проверку корректности ввода:

  • степень должна быть неотрицательной;

  • при слишком высокой степени выводится предупреждение о возможной некорректной аппроксимации.

Максимально допустимая степень полинома определяется как десять.

5. Аппроксимация методом наименьших квадратов

Для вычисления коэффициентов аппроксимирующего полинома используется метод наименьших квадратов. Формируется матрица А, где каждый элемент определяется как Hj(xi). Вектор правых частей содержит значения .

Система уравнений решается с использованием метода Гаусса. Результатом является вектор коэффициентов полинома:

6. Генерация точек для построения графика

Пользователь задаёт количество точек, которые необходимо вычислить на интервале от минимального до максимального значения .

Для равномерно распределённых значений аргумента вычисляются соответствующие значения аппроксимирующего полинома.