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

Алгоритм Гаусса

Метод состоит из двух основных этапов: прямого хода и обратного хода. Прямой ход преобразует матрицу системы к верхнетреугольному виду путём последовательного исключения переменных.

  1. На каждом шаге выбирается ведущий элемент — максимальный по модулю элемент в текущем столбце. Выбор максимального элемента повышает устойчивость алгоритма и уменьшает погрешность вычислений.

  2. Если ведущий элемент оказывается слишком мал (менее 10⁻¹²), программа сообщает о вырожденности матрицы.

  3. После приведения матрицы к треугольному виду выполняется обратный ход — последовательное вычисление значений неизвестных, начиная с последнего уравнения.

  4. Каждое найденное значение подставляется в предыдущие уравнения, что позволяет определить все коэффициенты полинома.

Алгоритм сортировки слиянием

Метод состоит из двух основных этапов: разделения и слияния.

  1. На этапе разделения исходный массив рекурсивно делится на две примерно равные части до тех пор, пока не будут получены подмассивы длиной 0 или 1 элемент, которые считаются отсортированными по определению.

  2. После достижения минимальных фрагментов начинается этап слияния — отсортированные подмассивы объединяются в один упорядоченный массив с сохранением порядка элементов.

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

  4. Этот процесс повторяется до полного исчерпания обоих массивов.

  5. Если один из массивов заканчивается раньше, оставшиеся элементы второго массива копируются в результат без дополнительных сравнений.

Перечень функций

Ввод/вывод данных:

  1. requestFilePath — запрос пути к файлу с проверкой существования

  2. readPoints — чтение точек (x y) из файла с удалением дубликатов

  3. writeResultsToFile — сохранение результатов в файл с коэффициентами

  4. printResultsTable — табличный вывод исходных и аппроксимированных значений

Обработка дубликатов:

  1. handleDuplicateXs — интерактивная обработка точек с одинаковыми X (усреднение/мин/макс)

  2. mergeSort — стабильная сортировка слиянием для группировки дубликатов

  3. nubBy — удаление полных дубликатов (x,y с точностью 1e-9)

Математика полиномов Эрмита:

  1. hermite — рекуррентное вычисление полинома Эрмита степени n

  2. hermiteVector — вектор базисных полиномов [H0(x), H1(x), ..., Hm(x)]

  3. evalHermitePoly — вычисление значения полинома по коэффициентам

Метод наименьших квадратов:

  1. buildSystem — построение матрицы Грама и правой части с весами

  2. gaussElimination — метод Гаусса с выбором главного элемента

  3. solveLeastSquares — полное решение задачи МНК в базисе Эрмита

Визуализация:

  1. linspace — равномерная сетка точек для графика

  2. asciiPlot — ASCII-график (70x20) с осями и легендой (* точки, + кривая)

  3. calculateRMSE — среднеквадратичная ошибка аппроксимации

Схема

Рисунок 1. Общая схема работы программы

Рисунок 2. Метод Гаусса

Рисунок 3. Удаление дубликатов

Рисунок 4. Считывание точек из файла

Рисунок 5. Поиск дубликатов