matlab - 如何使用integral2来评估(显然)非向量化函数的积分?
问题描述
我注意到一些关于integral2 的奇怪事实。这些可能是由于我在理解它的工作原理方面存在局限性。当我有特定的功能时,我在整合变量时遇到了一些困难。例如,看下面的代码:
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,或涉及我们的变量 X 的 Prod)。解决办法是什么?
解决方案
推荐阅读
- vue.js - Quasar 扩展项:如何为选择的子菜单赋予不同的颜色?
- powershell - 来自 CSV 导入的多值数组 - 交换权限
- docker - jmxterm:Docker 容器内的“无法创建系统终端”
- java - 使用 Spring Boot LaunchScript 时如何获取当前工作目录
- swift - TextEditor 更改时 UI 不刷新
- html - 更改文本的字体和颜色
- python-3.x - Exec 不会使用在 exec 中定义的变量更新当前命名空间
- python - 在 groupby 函数之后合并两个不同大小的数据帧
- jestjs - 设置 jest 的 moduleNameMapper 时可以使用通配符吗?
- java - 使用 Android 调用 PHP 函数