Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аппроксимация методом наименьших квадратов с использованием сингулярного разложения на Haskell.docx
Скачиваний:
0
Добавлен:
02.01.2026
Размер:
1.01 Mб
Скачать

Федеральное государственное бюджетное образовательное учреждение высшего образования "Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М.А. Бонч-Бруевича"

Отчёт

По лабораторной работе №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.

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

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

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

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

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

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

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