- •Федеральное государственное бюджетное образовательное учреждение высшего образования "Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М.А. Бонч-Бруевича"
- •По лабораторной работе №7
- •Постановка задачи
- •1. Структура данных и функциональные компоненты
- •2. Загрузка и предварительная обработка данных
- •3. Сортировка данных
- •4. Выбор степени аппроксимирующего полинома
- •5. Аппроксимация методом наименьших квадратов
- •6. Оценка качества аппроксимации
- •7. Генерация точек для построения графика
- •Перечень функций
- •1. Функции чтения и разбора входных данных
- •Блок-схемы
- •Проверка функционала программы
- •Код программы
Федеральное государственное бюджетное образовательное учреждение высшего образования "Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М.А. Бонч-Бруевича"
Отчёт
По лабораторной работе №7
“Аппроксимация методом наименьших квадратов с использованием сингулярного разложения”
Дисциплина: «Разработка приложений искусственного интеллекта в киберфизических системах»
Выполнил:
Студент 3 курса группы ИКПИ – 32
Иванов Олег Владимирович
___________________
(подпись)
Проверил:
Ерофеев С.А.
___________________
(подпись)
г. Санкт-Петербург, 2025 г.
Постановка задачи
Целью данной лабораторной работы является разработка программы на языке Haskell для аппроксимации экспериментальных данных методом наименьших квадратов с использованием сингулярного разложения (SVD).
Для достижения поставленной цели необходимо выполнить следующие задачи:
реализовать считывание пар координат (xi,yi) из входного файла;
исключить дубликаты данных и проконтролировать неоднозначность значений;
выполнить сортировку точек по возрастанию аргумента
методом
сортировки перемешиванием;обеспечить ввод пользователем степени аппроксимирующего полинома;
реализовать вычисление коэффициентов полинома методом наименьших квадратов с использованием SVD;
выполнить оценку качества аппроксимации;
сгенерировать точки для построения графика аппроксимирующей функции;
сохранить результаты вычислений в выходные файлы.
Входные данные:
Входные данные задаются во внешнем текстовом файле и представляют собой набор пар координат следующего вида:
x1 y1
x2 y2
...
xn yn
Каждая строка содержит два вещественных числа — значение аргумента и соответствующее значение функции.
Выходные данные:
Программа формирует следующие результаты:
список отсортированных исходных точек;
коэффициенты аппроксимирующего полинома вида
значения аппроксимирующей функции в исходных точках;
численные характеристики точности аппроксимации (SSE, MSE, RMSE);
набор вычисленных точек
для
последующего построения графика.
Результаты сохраняются в текстовые файлы:
coefficients.txt — коэффициенты полинома и ошибки аппроксимации;
graph_points.txt — точки для построения графика;
approximation.txt — исходные точки, коэффициенты и аппроксимация.
Суть алгоритма заключается в следующем:
Разработанная программа реализует процедуру аппроксимации экспериментальных данных полиномиальной функцией методом наименьших квадратов с применением сингулярного разложения. Логика работы программы состоит из последовательных этапов.
1. Структура данных и функциональные компоненты
В программе используются следующие основные типы данных:
Point — пара вещественных чисел (Double, Double), представляющая точку
;векторы и матрицы из библиотеки Numeric.LinearAlgebra для выполнения вычислений SVD.
Функциональные компоненты программы включают:
ввод и предварительную обработку данных;
сортировку точек;
построение матрицы Вандермонда;
вычисление коэффициентов полинома методом наименьших квадратов;
оценку погрешности аппроксимации;
генерацию точек для визуализации.
