Как вычислить интеграл на javascript?

550
05 апреля 2017, 15:47

Необходимо вычислить выражение :

N[Integrate[PDF[BetaDistribution[alpha1, beta1], x]
CDF[BetaDistribution[alpha2, beta2], x], {x, 0, 1}]]

Выражение решает задачу сравнения двух рекламных объявлений со стороны Байесовской статистики и вероятностного вывода. Это формула записана в терминах Mathematica.
N[expr] — численно вычислить выражение expr.
Integrate[f, {x, xmin, xmax}] — интеграл функции f по х в интервале от xmin до xmax.
PDF[dist, x] — функция плотности вероятности для распределения dist в точке x.
CDF[dist,x] — функция распределения случайной величины для распределения dist в точке x.
BetaDistribution[alpha, beta] — непрерывное бета-распределение с параметрами alpha, beta.

В обычном виде это выглядит так:

Нашла библиотеку, которая вычисляет PDF и CDF :https://github.com/jstat/jstat. А вот с интегралом проблема.

Answer 1

Здесь Вы можете найти библиотеку численных методов: http://www.numericjs.com/. Аналогичных библиотек довольно много по запросу Численные методы JavaScript.

Если она чем-то не нравится, то вполне можно ограничиться вычислением данного интеграла методом Эйлера: https://ru.wikipedia.org/wiki/Метод_Эйлера. Этот алгоритм предельно прост. Вам необходимо задаться промежутком [a, b] = [0, 1], выбрать шаг интегрирования h = 0.01, повторить в цикле формулу:

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

Таким образом, перебираете в цикле все значения из отрезка [0; 1] и получаете результат интегрирования в y_n.

READ ALSO
Удаление класса внутри родителя

Удаление класса внутри родителя

Использую простенький скрипт для переключения активных элементовНо, столкнулся с проблемой

232
if else jQuery не работает

if else jQuery не работает

Добрый день, не пойму почему не срабатывает скриптПомогите пожалуйста

305
Файл-менеджер elFinder выдает ошибку

Файл-менеджер elFinder выдает ошибку

Собственно сама ошибка:

327