Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

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

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

Требуется разработать мобильное приложение 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...

3 года назад
Able2Know
Антон 
39 летРоссия
16 лет в сервисе
Был
2 месяца назад