Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите с функцией Лапласа!!!


Автор: Kamdi 12.12.2004, 15:11
Уважаемые друзья! Помогите мне с поиском библиотеки в С++, которая позволяет вычислить значение функции Лапласа для нормального распределения. Как она называется?! smile
Обращаю внимание на то, что необходима именно функция, а не уравнение Лапласа...
С уважением, Kamdi.

Автор: _hunter 14.12.2004, 00:28
вряд ли такая есть...
IMHO проще самому посчитать ( как -- в алгоритмах должны помочь )

Автор: Hroft 15.12.2004, 10:50
Так функция Лапласа - эт же Ф(x) = integr(0,x,"exp(-t*t/2)"), или нет? Если так, то ее любым методом вычисления интеграла надо считать...
PS: какая связь у функции Лапласа с уравнением Лапласа?

Автор: Hroft 17.12.2004, 10:11
Код
#include <cmath>
#include <iostream>

const double eps = 0.1e-5;

double func(double x)
{
return std::exp(-x*x/2);
}

double simpsonIntegr(double a,double b)
{
return ((b-a) / 6) * (func(a) + 4*func((a+b)/2) + func(b));
}

double LaplasFunction(double x,double eps = ::eps)
{
double a = 0.0;
double b = x;
double tst, tst1, incr;
unsigned int c = 2;
tst1 = simpsonIntegr(a,b);
do {
 tst = tst1;
 tst1 = 0;
 incr = (b - a) / c;
 for (unsigned int i=0;i<c;++i) {
  tst1 = tst1 + simpsonIntegr(a + incr * i, a + incr * (i + 1));
 }
 c += 1;
} while (fabs(tst - tst1) >= eps);
return tst1;
}

int main()
{
for (double x=-4;x<4;x+=0.5) {
 std::cout<<"Fi("<<x<<") == "<<LaplasFunction(x)<<std::endl;
}
return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)