Нет единственного принятого определения для 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'.Поэтому я не уверен, как определить интеграл, когда нижний предел интеграции точно равен «0». Вы не можете использовать, например, '-inf' в качестве более низкого предела интеграции? Или, может быть, использовать предел: 'limit (int (dirac (x), x, a, b), a, 0, 'left')' does give '1' –
@Luis Mendo В моем вопросе я указал интервал интеграции быть закрытым. Следовательно, Интеграл дирака будет определяться (он считается только если 0 содержится в интервалах). Предельное решение хорошо, но поскольку я хочу вычислить интегралы для разных плотностей, я не хочу всегда вычислять предел (я, вероятно, все-таки принимаю это решение, если никто не придумает лучшего). –
Позвольте мне немного отступить и принять другой подход. Нет единственного принятого определения для int (delta, 0, b). Проблема здесь заключается не в том, что вы получаете «неправильный» ответ, как тот, который вы хотите каким-либо образом навязать другому соглашению, чем функция дельта, чем то, что было предоставлено Matlab. (Их выбор оправдан, но не уникален.) Если вы оцениваете это в Wolfram Alpha, например, он даст вам theta (0) - который не определен как что-либо в частности. Здесь тета - функция Хевисайда. Если вы хотите навязать свое собственное соглашение здесь, выполните свою собственную функцию дельта. – Brick