Как использовать интеграл2 для оценки интеграла (по-видимому) не векторизованных функций? - PullRequest
1 голос
/ 24 мая 2019

Я заметил некоторые странные факты о интеграле2. Возможно, это связано с моими ограничениями в понимании того, как это работает. У меня есть некоторые трудности в интеграции переменных, когда у меня есть определенные функции. Например, посмотрите на следующий код:

function Output = prova(p,Y)
x = p(1);
y = p(2);
w = p(3);
z = p(4);
F1 = @(Data,eta_1,eta_2,x,y,w,z) F2(eta_1,eta_2,Data) .* normpdf(eta_1,x,y) .* normpdf(eta_2,w,z);
Output = integral2(@(eta_1,eta_2)F1(Y,eta_1,eta_2,0,1,10,2),-5,5,-5,5);
end
function O = F2(pp1,pp2,D)
O = pp1 + pp2 + sum(D);
end

В этом случае нет проблем при оценке интеграла. Но если я изменяю код таким образом, я получаю некоторые ошибки, хотя вывод F2 точно такой же:

function Output = prova(p,Y)
x = p(1);
y = p(2);
w = p(3);
z = p(4);
F1 = @(Data,eta_1,eta_2,x,y,w,z) F2(eta_1,eta_2,Data) .* normpdf(eta_1,x,y) .* normpdf(eta_2,w,z);
Output = integral2(@(eta_1,eta_2)F1(Y,eta_1,eta_2,0,1,10,2),-5,5,-5,5);
end
function O = F2(pp1,pp2,D)
o = sum([pp1 pp2]);
O = o + sum(D);
end

Проблемы возрастают, если, например, F2 имеет некоторое матричное умножение, в которое вовлечены "eta_1" и "eta_2", которые я хочу интегрировать. Эта проблема делает практически невозможным решение вычислений, в которых, например, мы должны интегрировать переменную X, которая находится внутри функции правдоподобия (для вычисления которой может потребоваться некоторый внутренний цикл, или Sum, или Prod с участием нашей переменной X). Какое решение?

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