Меня зовут Копанов Антон(Б05-206), и это мой проект по python, в котором я решил написать модуль, позволяющий удобно рисовать графики для лабораторных работ по физике.
- Создать инструмент для работы, который взял бы на себя большую часть работы по построению графиков, моделей для аппроксимации
- Сделать проект универсальным, то есть покрыть как можно больше функций, которые могут пригодиться в работах, и сделать модуль легко изменяемым.
- Сделать свой код разнообразным и попробовать много инструментов, которые предоставляет python.
- Установить python версии не ниже 3.10.
- Установить пакеты из requirements.txt.
- Использовать проект, пример показан в main.py
При запуске по умолчанию используется ввод с (аппроксимации описаны ниже в части про analyzer.py). В main.py есть пример, как делать запуск с помощью программы.
В проекте используется паттерн Visitor, поэтому все операции реализуются через посещение объектов объектом класса Visitor. Это позволяет сделать операции унифицированными.
В файле реализованы классы Visitor и Worker. Visitor содержит поля с данными, которые нужны в работе и метод visit для посещения объектов класса Worker. Класс Worker - это абстрактный класс, от которого наследуются все остальные объекты, посещаемые Visitor. Этот класс имеет метод accept, который должны переопределять наследники.
Класс InputManger используется для ввода данных от пользователя. Поскольку цель проекта сделать возможности, как можно больше. Реализованы три способа ввести данные: через консоль, через файл .txt, и через передачу данных, как аргументов функции. Рекомендуется использовать последний, как наиболее удобный. Класс заполняет поля visitor при посещении.
Класс Analyzer используется для построения аппроксимаций к данным. На данный момент доступны три вида аппроксимаций: linear, polynomial, any.
- linear: Аппроксимация прямой
- polynomial: Аппроксимация полиномом(есть параметр degree, которым можно указать степень полинома)
- any: Аппроксимация сплайном Акимы(значения x должны быть различны).
Класс Plotter рисует полученные данные. Кроме обычных точек, он также умеет рисовать кресты ошибок.