Техническое задание на реализацию математических функций

Антон17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
15.11.2020

Техническое задание на реализацию математических функций

Техническое задание на реализацию математических функций

Требуется разработать мобильное приложение Android, демонстрирующее применение математических функций к выводимым графикам во всём или в выбранном диапазоне с помощью инструмента «Выбор диапазона».

Диаграмма заполняется графиками четырёх функций: y=sin(x), y=2*cos(2.5*x), y=sqrt(x)/2, y=3*rand(), где rand() возвращает псевдослучайное вещественное значение от 0 до 1. Графики строятся по набору точек x от 0 до 50 с шагом 0.1. На диаграмме для всех графиков значения x меняются от 0 до 50, значения y – от -5 до +5.

В интерфейс главного окна добавляется кнопка иконка «Функции». По нажатию этой кнопки появляется диалоговое окно «Применить функцию».

Диалоговое окно содержит элементы, идущие сверху вниз:

• Поле ввода пользовательского названия графика, название может быть, к примеру, «график 1»

• Выпадающий список с математическими функциями (перечислены ниже)

• Скрытое поле ввода с подсказкой (hint) «Степень» или «Количество точек» (появляется, если выбрать пункт «Аппроксимация полиномиальной функцией» или «Скользящее среднее» и скрывается, если выбрать другие пункты)

• Текстовая метка с формулой преобразования (формулы приведены в списке функций после названий)

• Выпадающий список со всеми графиками «f(x)»

• Выпадающий список со всеми графиками «g(x)»

• Поле ввода числового коэффициента A

• Поле ввода числового коэффициента B

Список математических операций:

• Сложение h(x)=A*f(x)+B*g(x)

• Вычитание h(x)=A*f(x)-B*g(x)

• Умножение h(x)=(A*f(x))*(B*g(x))

• Деление h(x)=(A*f(x))/(B*g(x))

• Линейное преобразование h(x)=A*f(x)+B

• Линейная аппроксимация y=A*x+B

• Аппроксимация показательной функцией y=A*exp(B*x)

• Аппроксимация степенной функцией y=A*x^B

• Аппроксимация полиномиальной функцией степени n от 1 до 6 y=A(n)

x^(n)

+ A(n-1) x^(n-1) + A(1) * x + A(0), где A(n)

, A(n-1), ..., A(1), A(0) искомые коэффициенты

• Преобразование Фурье

• Преобразование скользящим средним (количество точек для усреднения меняется от 1 до 20 со значением по умолчанию 5)

• Построение графика первообразной функции (от курсора)

• Построение графика производной функции

• Построение графика второй производной функции

• Построение касательной к графику функции (в точке пересечения графика и курсора)

• Построение статистического распределения

По нажатию на пункт диалога «Построить» диалоговое окно исчезает, вычисляется нужный график. Затем построенный график добавляется к списку графиков и выводится на диаграмме.

При вычислениях, где требуется равномерный шаг по аргументу, например при операциях с двумя функциями или в преобразовании Фурье, выполняется линейная интерполяция значений графиков по аргументам, идущим с одинаковым шагом по времени, задаваемым наибольшей частотой сбора данных. Частота сбора данных для определения шага аргумента берётся из списка каналов.

Ресурсы для выполнения задания

Все ресурсы находятся в папке «Материалы для выполнения заданий», доступной по ссылке yadi.sk/d/F7EUx6_RRQWHiQ .

Для реализации математических функций можно использовать библиотеку Commons Math, расположенную в архиве commons math3-3.6.1-bin.zip.

Ссылка на библиотеку Commons Math:

commons.apache.org/proper...

Заявки фрилансеров