Вопрос математический. (За алгоритмы же тут можно потереть?)

Модератор: Модераторы разделов

Ответить
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Вопрос математический.

Сообщение dimbor »

Наладился ребенок писать практическую работу. Ткнулся, пришел с вопросом. Ответа я пока не изыскал, нужна помощь зала. Понятно, что уже есть стопитцот компонентов для решения задачи на разных ЯП. Но рация на танке задача - нарисовать самому. Упрощенный алгоритм с затыком излагаю ниже. Куцые собственные мысли тоже.

Строим график произвольной y=f(x). (Распарсили честно заимствованным компонентом.)
На входе границы диапазона double xmin, xmax. Берем размер диапазона dx=xmax-xmin, делим на размер экрана по X, получаем шаг x. Заполняем массив исходных x для каждой X экрана.
Заполняем массив значений функций y. Ищем минимум, максимум, размер диапазона.
Берем размер экрана по Y, делим, получаем коэффициент пересчета в экран для y.
Рисуем оси, рисуем график отрезками. Рисуется, бинго. Для непрерывной функции. Для функции типа 1/x получаем шляпу. На месте разрыва не разрыв. Причем предусмотрено, что если y улетает в NAN, отрезок не рисуется. Закавыка в том, что при таком способе расчета исходных x, double в 0 не попадет. Будет какая-то мелочь, NAN в y не будет. Будет очешуенное число, которое станет потом границей диапазона и испортит размер графика.

Резюмируя, на входе произвольная функция и произвольный шаг аргумента. На выходе - в особую точку можем попасть, а можем не попасть. Производные брать парсер функции, соответственно, не умеет (да и сам-то забыл как). Все что есть - массив значений функции.
Остается анализировать эту выборку игреков и обрезать экстремальные значения.
Вроде надо набрать массив модулей отклонений значений от соседних и забанить игреки с экстремально большими отклонениями. Вопрос, что считать большим отклонением для произвольной выборки. Гуглится какая-то заумь: скользящее среднее - оно для потока. А ну как мы 1/x начнем от 0 строить.
По идее, надо посчитать частотное распределение отклонений и обрезать минимумы. Но как переложить наивное понимание на терминологию матстата - хз. Пичаль.

Чуть-чуть вспомнил давнишний институтский курс, все эти медианы с модами. Если подсчитать, скажем, частоты округленных десятичных логарифмов значений функции и обрезать, для конкретной 1/x все получится. А вот для безобидной 10^x выйдет полная фигня.

Какой-то еще итерации не хватает мыслительной. Математики в треде есть? Ау!
Спасибо сказали:
Ответить