Интегрирование двумерной логнормальной функции плотности - PullRequest
2 голосов
/ 29 октября 2019
rho = 0.8;

ff = @(x, y) (exp(-(((log(x)-10).^2 - 2.* rho .* (log(x)-10) .* (log(y)-10)+(log(y)-10).^2)./(2 .* (1-rho.^2))))./(2.*pi.*sqrt(1-rho.^2).*x.*y));

syms x y
vpaintegral(vpaintegral(ff, x, [0 inf]), y, [0 inf])

Почему приведенная выше интеграция двумерной логнормальной функции плотности в Matlab не равна 1?

Примечание: логарифмическое преобразование этой логнормальной двумерной случайной величины является двумерной нормальной случайной величинойсо средним (10, 10) и ковариационной матрицей (1, ро, ро, 1).

1 Ответ

3 голосов
/ 29 октября 2019

Используя integral2:

, получаем 0,9994,

% MATLAB R2019a
rho = 0.8;
ff = @(x, y) (exp(-(((log(x)-10).^2-2.*rho.*(log(x)-10).*(log(y)-10)+(log(y)-10).^2)./(2.*(1-rho.^2))))./(2.*pi.*sqrt(1-rho.^2).*x.*y));

area = integral2(ff,0,inf,0,inf)     % area = 0.9994

но корректировка допуска дает желаемый результат.

area = integral2(ff,0,inf,0,inf,'Method','iterated','AbsTol',0,'RelTol',1e-10)

и = 1,0000

format long
area

и = 0,9999999999999998

Не слишком потертый.


Использование vpaintegral из Symbolic Toolbox:

Вы можететакже отрегулируйте допуск для vpaintegral.

С помощью Относительная погрешность из 1e-4 выполнила задание. Этот параметр сильно влияет на время вычислений.

syms x y
area = vpaintegral(vpaintegral(ff, x, [0 inf],'RelTol', 1e-4, 'AbsTol', 0), y, [0 inf],'RelTol', 1e-4, 'AbsTol', 0)

area = 1.0

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