2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: плотность вероятности
Сообщение05.09.2013, 19:30 
Заслуженный участник


06/02/11
356
блин, ну какая там реализация!

$$
f(u) = \frac{d}{du}\int_{\{x: \, H(x) < u\}}\frac{1}{L}\,dx = \frac{d}{du}\int_0^L \theta(u-H(x))\frac{dx}{L} = \int_0^L \delta(u-H(x)) \frac{dx}{L} = \frac{1}{L}\sum_{x: H(x)=u} \frac{1}{H'(x)}
$$

Здесь $\theta$ -- функция Хевисайда, которая равна 1 при положительном аргументе и 0 при отрицательном; мы воспользовались тем, что ее производная есть дельта-функция. Затем мы воспользовались тем, что $\int \delta(f(x))dx = \sum_{x: f(x)=0} \frac{1}{f'(x)}$, что очевидно из разложения $f$ в окрестности точек, где $f=0$.


Последнюю формулу в цепочке вы уже вывели из определения плотности вероятности. Только там надо было не забыть поделить на $\Delta h$, в соответствии с определением плотности вероятности.

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение06.09.2013, 08:29 


27/10/09
600
Решение, конечно, компактное и понятное, но, к сожалению, это интеграл не берется аналитически. Численное его взятие оказывается не сильно устойчивым - почему-то функция распределения получается разрывной, хотя она точно непрерывная (если непрерывна $H(x)$). Решение с суммой (с разбиением на области монотонности) дает, хоть и громоздкое, но аналитическое решение, и функция распределения полностью аналогична моделированию Монте-Карлой.

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение06.09.2013, 21:08 
Заслуженный участник


06/02/11
356
(поправка: везде вместо $1/H'(x)$ должно быть $1/|H'(x)|$).

так плотность вероятности и есть разрывная. У нее особенности как минимум $~1/\sqrt{|h-h_0|}$ там, где $h_0$ совпадает с локальным экстремумом

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение07.09.2013, 14:53 


27/10/09
600
В том то и дело, что не плотность, а функция распределения
$$ F(u) = \int_0^L \theta(u-H(x))\frac{dx}{L}$$
получается разрывной, что мне не совсем понятно. Скорее, это связано с вычислительными проблемами - я считал в лоб на Математике.
Код:
fu = Sin[x] + 1;
L = 10 Pi;
Plot[fu, {x, 0, L}]
{minh, maxh} = {MinValue[{fu, 0 <= x <= L}, x], MaxValue[{fu, 0 <= x <= L}, x]}

Код:
F[u_] := NIntegrate[HeavisideTheta[u - fu]/L, {x, 0, L}];
myTable = If[$KernelCount > 0, ParallelTable, Table];
dat = myTable[{u, F[u]}, {u, minh, maxh, L/10000}];
ListPlot[dat]

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение07.09.2013, 19:49 
Заслуженный участник


06/02/11
356
ага, это баг интегрирования. Видимо, из-за того, что $\theta$ почти везде постоянна, и стандартный алгоритм математики не может правильно разделить интервал интегрирования. Если вот так:
Код:
F[u_] := NIntegrate[HeavisideTheta[u - fu]/L, {x, 0, L},
   Method -> {"RiemannRule", "Type" -> "Left", "Points" -> 1000},
   MaxRecursion -> 0];

то выглядит получше.

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение08.09.2013, 11:58 


27/10/09
600
Да, Вы правы
Код:
F[u_] := NIntegrate[HeavisideTheta[u - fu]/L, {x, 0, L},
   Method -> {"RiemannRule", "Type" -> "Left", "Points" -> 1000}, MaxRecursion -> 0];
Off[NIntegrate::ncvb]
gr1 = Plot[F[u], {u, minh, maxh}, PlotPoints -> 100, PlotStyle -> Red];
On[NIntegrate::ncvb]

myTable = If[$KernelCount > 0, ParallelTable, Table];
h = Sort[myTable[fu // N, {x, 0, L, L/10000}]];
n = Length[h]
Y = Table[i/n - 1/(2 n), {i, n}];
gr2 = ListPlot[Transpose[{h, Y}]];
Show[gr2, gr1]
Правда считает не быстро, но если это конечная задача (если не придется считать такие интегралы в цикле), то приемлемо. Спасибо!

 Профиль  
                  
 
 Re: плотность вероятности
Сообщение08.09.2013, 13:08 


27/10/09
600
Из спортивного интереса написал интегратор
Код:
MyInregral[func_, limits_] :=
Block[{bonds =Sort[Union[Join[{limits[[2]], limits[[3]]},
       limits[[1]] /. Solve[{func == 0, limits[[2]] <= limits[[1]] <= limits[[3]]},
         limits[[1]]]]]], co}, co = Length[bonds];
  Total[Table[(bonds[[i + 1]] - bonds[[i]]) HeavisideTheta[ func /. {limits[[1]] -> (bonds[[i]] + bonds[[i + 1]])/2}], {i, co - 1}]]]
gr3 = Plot[MyInregral[u - fu, {x, 0, L}]/L, {u, minh, maxh}, PlotStyle -> Green];

Show[gr2, gr3]

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group