2017-02-09 12 views
0

Я хочу реализовать плотности вероятностных мер в Matlab. Для этого я определить density как функцию ручки таким образом, что интеграл от некоторой функции F (заданной в качестве функции ручки) на отрезке [а, Ь] может быть вычислена с помощьюВероятностная мера Дирака в Matlab

syms x 
int(f(x)*density(x),x,a,b) 

Когда речь идет о мере Дирака проблема заключается в том, что

int(dirac(x),x,0,b) 

поставляет значение 1/2 вместо 1 для всех b> 0. Однако, если я типа

int(dirac(x),x,a,b) 

<, где 0 и б> 0 возвращаемое значение равно 1, как это должно быть. По этой причине умножение на 2 не будет достаточным, так как я хочу, чтобы моя плотность была действительной для всех интервалов [a, b]. Я также не хочу рассматривать отдельные случаи, прежде чем интегрировать их, чтобы код оставался верным для большого класса плотностей.

Кто-нибудь знает, как я могу реализовать вероятностную меру Дирака (как определено here) в Matlab?

+0

Распределение Дирака имеет весь свой вес, сосредоточенный на '0'.Поэтому я не уверен, как определить интеграл, когда нижний предел интеграции точно равен «0». Вы не можете использовать, например, '-inf' в качестве более низкого предела интеграции? Или, может быть, использовать предел: 'limit (int (dirac (x), x, a, b), a, 0, 'left')' does give '1' –

+0

@Luis Mendo В моем вопросе я указал интервал интеграции быть закрытым. Следовательно, Интеграл дирака будет определяться (он считается только если 0 содержится в интервалах). Предельное решение хорошо, но поскольку я хочу вычислить интегралы для разных плотностей, я не хочу всегда вычислять предел (я, вероятно, все-таки принимаю это решение, если никто не придумает лучшего). –

+1

Позвольте мне немного отступить и принять другой подход. Нет единственного принятого определения для int (delta, 0, b). Проблема здесь заключается не в том, что вы получаете «неправильный» ответ, как тот, который вы хотите каким-либо образом навязать другому соглашению, чем функция дельта, чем то, что было предоставлено Matlab. (Их выбор оправдан, но не уникален.) Если вы оцениваете это в Wolfram Alpha, например, он даст вам theta (0) - который не определен как что-либо в частности. Здесь тета - функция Хевисайда. Если вы хотите навязать свое собственное соглашение здесь, выполните свою собственную функцию дельта. – Brick

ответ

1

Нет единственного принятого определения для int (delta, 0, b). Проблема здесь заключается не в том, что вы получаете «неправильный» ответ, как тот, который вы хотите каким-либо образом навязать другому соглашению, чем функция дельта, чем то, что было предоставлено Matlab. (Их выбор оправдан, но не уникален.) Если вы оцениваете это в Wolfram Alpha, например, он даст вам theta (0) - который не определен как что-либо в частности. Здесь тета - функция Хевисайда. Если вы хотите навязать свою собственную конвенцию, выполните свою собственную функцию дельта.

EDIT

Я вижу, ты написал комментарий по этому вопросу, пока я писал этот ответ, так .... Имейте в виду, что мера Дирака или дельта-функция Дирака не является функцией на всех , Проблема, с которой вы сталкиваетесь, вместе с тем, что описано ниже, связана с попыткой дать функциональную форму тому, что по своей сути не является функцией. То, что вы делаете, не определено в рамках, которые у вас есть в Matlab.

КОНЕЦ EDIT

Для того, чтобы поставить точку о конвенции в контексте, дельта-функция может быть определена различными свойствами. Один из них состоит в том, что int (delta (x) f (x), a, b) = f (0), когда a b. Это не говорит вам ничего об интеграле, который вы хотите. Другой, который, вероятно, приводит к ответу, поскольку вы получаете от Matlab, заключается в определении его как предела. Один (но не единственный выбор) является пределом нулевого среднего гаусса, когда дисперсия равна 0.

Если вы хотите использовать соглашение int (delta (x) f (x), a, b) = f (0), когда a < = 0 < b, это, вероятно, не вызовет у вас особых проблем, но просто имейте в виду, что это соглашение, которое вы выбрали больше, чем «правый» или «неправильный» ответ к тому, что вы получили от Матлаба.

Как отмечалось, аналогичный выбор делается на ступенчатой ​​функции (функция Хевисайда) при х = 0. Существуют соглашения, в которых is (a) не определено, (b) -1, (c) +1 и (d) 1/2. Никто не ошибается. Это, вероятно, примерно соответствует выбору функции Дирака, поскольку Хевисайд (грубо) является интегралом Дирака.

+0

Это не ответ на мой вопрос (который стоит в последней строке). Мера дирака в терминах вероятностной меры однозначно определена ([здесь] (https://en.wikipedia.org/wiki/Dirac_measure)). Я уточнил свой вопрос, чтобы уточнить его. –

+1

@ Vincent.W. Я попробую еще раз, а потом я уйду. Определение, которое вы ссылаетесь, не дает определения функции вообще. Это уникальное определение * что-то математическое, но что-то не является функцией. Для вашей структуры в Matlab требуется функция. То, чего вы хотите, не существует. – Brick

+2

@ Vincent.W. Возможно, я могу перефразировать комментарий Кирпича следующим образом: то, что вы хотите, является интегральным по отношению к измерению Дирака. Матлаб рассматривает только меру Лебега. Интеграл дельта Дирака относительно меры Лебега не существует, если вы не рассматриваете распределения (а не просто функции). Таким образом, вы должны иметь возможность обрабатывать либо распределения, либо произвольные меры, ни одна из которых, вероятно, не будет возможна с помощью встроенной функции Matlab –

Смежные вопросы