Skip to content

Аппроксиматор, который аппроксимирует данные с помощью полинома

Danila-Code/cpp-approximator

Repository files navigation

Аппроксиматор

Описание

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

Технологии:

  • C++
  • STL
  • ООП
  • SVG
  • CMake

В Аппроксиматоре реализованы:

  • отдельный класс EquationSystem, который описывает систему уравнений в матричном виде
  • класс Approximator, который хранит входные данные и составляет систему уравнений для нахождения полинома
  • класс GraphRenderer для отрисовки графика полинома в формате SVG
  • класс ApproximatorManager, который управляет остальными классами

Будущие изменения:

  • графический интерфейс
  • возможность интерполировать данные
  • возможность генерировать код функций y(x) на разных языках программирования

Особенности Аппроксиматора:

  • программа разбита на отдельные классы-модули ограниченной функциональности
  • программа использует расширенную библиотеку SVG (svg.h, svg.cpp), разработанную для Транспортного справочника
  • для аппроксимация производится с помощью метода наименьших квадратов
  • для решения системы уравнений используется метод Гаусса
  • в результате работы программа выдаёт коэффициенты полинома и строку в формате SVG

Запуск проекта

  1. Скачайте файлы из текущего репозитория.
  2. Создайте в корневой папке проекта папку "build" для сборки проекта, перейдите в неё в командной строке и запустите cmake:
    cmake ../ -DCMAKE_BUILD_TYPE=Release
    *если работаете с MinGw, укажите дополнительный параметр -G "MinGW Makefiles".
  3. Запустите сборку проекта в командной строке:
    cmake --build .
    Проект собран.
  4. Чтобы работать с Аппроксиматором нужно в командной строке (находясь в папке "build" проекта) набрать:
    ./approximator.exe <"входной файл данных JSON" >"выходной файл ответов"

Системные требования

Компилятор С++, С++20, CMake 3.8


Формат входного файла

Входной файл имеет формата JSON со следующей структурой:

{
  "data": [
	[1, 3],
	[2, 5],
	[3, 12],
	...
  ],
  "degree": 3
}

где:
data - массив данных, который состоит из пар чисел [x, y] типа double;
degree - степень полинома, которым нужно аппроксимировать данные.


Формат выходного файла

Программа выдаёт ответы на запросы в виде JSON-файла со структурой:

{
  "graph": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n
	<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n
	<polyline points=\"196.131,14.5129 196.238,14.3544 196.346,14.198 ... </svg>",
  "polynomial": "y(x) = 5 - 5.2381x + 3.42857x^2 - 0.333333x^3"
} 

где:
graph - строка с изображением графика полинома в формате SVG;
polynomial - строка с полиномом заданной степени для аппроксимации входных данных.

About

Аппроксиматор, который аппроксимирует данные с помощью полинома

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published