Как выяснить, откуда (x) интеграл функции (от этой точки до бесконечности) начинает меньше, чем некоторые eps? - PullRequest
2 голосов
/ 06 декабря 2010

Итак, у нас есть некоторая функция, такая как (pow(e,(-a*x)))/(sqrt(x)), где a, e являются константными числами. у нас есть некоторое число с плавающей точкой eps = pow (10, (- 4)). Нам нужно выяснить, начиная с которого x интеграл этой функции от этого x до бесконечности меньше, чем eps? Мы не можем использовать функции для специальной функции интеграции по умолчанию, просто стандартные математические операторы. смысл в достижении максимальной скорости оценки.

Ответы [ 3 ]

6 голосов
/ 06 декабря 2010

Если вы выполните подстановку u = sqrt (x), ваш интеграл станет 2 * интеграл e ^ (- au ^ 2) du.С помощью еще одной замены вы можете уменьшить ее до стандартной нормы.Как только вы получите его в стандартной нормальной форме, это сводится к вычислению erf (x).Замены могут быть сделаны абстрактно для любого a, а результаты жестко закодированы для простоты и скорости.

1 голос
/ 06 декабря 2010

Для вычисления этого интеграла необходимо вычислить Функция ошибки .Если вы используете gcc, вы можете найти функцию erf(...) в math.h, но она не требует параметров для получения точной точности.Но вы сами можете оценить значение функции Error, просто используя ряды Тейлора.С данным eps можно рассчитать точное количество членов ряда.

0 голосов
/ 06 декабря 2010

Хм, похоже, никто не понял вопроса. Вопрос в том, что для некоторой функции f найти наименьший x такой, что Integral _ x ^ + inf f (x)

Например, с учетом кривой колокольчика для IQ программистов на SO, при каком IQ кумулятивный интеллект программистов с более высоким IQ исчезающе мал? Если мы выберем x = 100, мы знаем, что по крайней мере половина программистов будет иметь более высокий IQ, чем 100, если мы выберем 120, сколько осталось? Как насчет 200? Если у нас здесь 10 000 программистов и eps = 1/10000, мы в основном спрашиваем, какой IQ у лучших 0,01% участников SO.

Вопрос в том, как наиболее эффективно найти это число, учитывая, что о f ничего не известно, кроме того, что оно уменьшается достаточно быстро, так что его интеграл от x до бесконечности приближается к нулю, когда x приближается к бесконечности?

Общий ответ: вы должны начать с какого-то предположения. Если результат слишком велик, удвойте свое предположение и продолжайте, пока не выполните требование. Затем вернитесь к последнему значению, которое у вас было (которого не было), и выполните двоичную отбивную, чтобы найти наименьший x, удовлетворяющий требованию.

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

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