Кумулятивная функция нормального распределения в задаче C - PullRequest
4 голосов
/ 07 мая 2010

Кто-нибудь знает о хорошей реализации этого, чья лицензия совместима с несвободными приложениями iPhone?

Как указано в этом вопросе, Boost выглядит просто замечательно. Но, насколько я могу судить, он доступен только в C ++.

Кумулятивная функция нормального распределения в C / C ++

Ответы [ 2 ]

12 голосов
/ 07 мая 2010

Не нужно ничего особенного.Любая платформа с хорошей математической библиотекой C99 (например, iphone) уже имеет все, что вам нужно - в частности, функцию erfc, что является небольшим вариантом:

#import <math.h>

double cumulativeNormal(double x) {
    return 0.5 * erfc(-x * M_SQRT1_2);
}

Обратите внимание, что это для стандартного нормального распределения(т. е. среднее = 0, дисперсия = 1), вам нужно использовать соответствующее масштабирование - поэтому для некоторого среднего и дисперсии это будет:

return 0.5 * erfc(((mean - x)/sqrt(variance)) * M_SQRT1_2);

Если вам не нужна двойная точностьизмените значение типа double на число с плавающей запятой, используйте функцию erfcf и измените литералы на литералы одинарной точности.

Помните, Objective-C является чрезвычайно легким расширением для C. Каждая функция C является Objective-Функция С, без упаковки или других махинаций.

2 голосов
/ 07 мая 2010

То есть вы конкретно хотите решение объективной задачи, верно? Потому что на тот случай, если вы еще этого не знали, вы можете использовать библиотеки C ++ в своем проекте .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...