Аппроксиматор позволяет описать (аппроксимировать) входные данные с помощью полинома заданной степени. Входные данные это массив пар x и y, причём предполагается, что y зависит от x. С помощью аппроксиматора можно выразить зависимости различных физических величин от температуры (например, зависимоть кинематической вязкости, плотности, теплопроводности вещества), чтобы в дальнейшем использовать их в качестве функций в программах для тепловых расчётов.
- C++
- STL
- ООП
- SVG
- CMake
- отдельный класс EquationSystem, который описывает систему уравнений в матричном виде
- класс Approximator, который хранит входные данные и составляет систему уравнений для нахождения полинома
- класс GraphRenderer для отрисовки графика полинома в формате SVG
- класс ApproximatorManager, который управляет остальными классами
- графический интерфейс
- возможность интерполировать данные
- возможность генерировать код функций y(x) на разных языках программирования
- программа разбита на отдельные классы-модули ограниченной функциональности
- программа использует расширенную библиотеку SVG (svg.h, svg.cpp), разработанную для Транспортного справочника
- для аппроксимация производится с помощью метода наименьших квадратов
- для решения системы уравнений используется метод Гаусса
- в результате работы программа выдаёт коэффициенты полинома и строку в формате SVG
- Скачайте файлы из текущего репозитория.
- Создайте в корневой папке проекта папку "build" для сборки проекта, перейдите в неё в командной строке и запустите cmake:
cmake ../ -DCMAKE_BUILD_TYPE=Release
*если работаете с MinGw, укажите дополнительный параметр -G "MinGW Makefiles". - Запустите сборку проекта в командной строке:
cmake --build .
Проект собран. - Чтобы работать с Аппроксиматором нужно в командной строке (находясь в папке "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 - строка с полиномом заданной степени для аппроксимации входных данных.