矢量化为integral2的函数

时间:2013-03-21 18:53:44

标签: matlab numerical-integration

我想评估形式\ int _ { - \ infty} ^ a \ int _ { - infty} ^ b sum_ {i,j} ^ K a_i * a_j * x ^ i * y ^ j *的双积分exp(-x ^ 2 - y ^ 2 + x * y)dx dy

其中a_i和a_j是常量。由于积分是线性的,我可以交换求和和积分,但在这种情况下,我必须评估K ^ 2积分,它需要太长时间。在这种情况下,我会执行以下操作:

for i = 1:K
   for j = 1:K
       fun = @(x,y) x.^i.*y.^j.*exp(-2.*(x.^2 + y.^2 - 2.*x.*y))
       part(i,j) = alpha(i)*alpha(j)*integral2(fun,-inf,a,-inf,b)
   end
end

这需要太长时间,所以我只想评估一个积分,但我不知道如何矢量化sum_ {i,j} ^ K a_i * a_j * x ^ i * y ^ j * exp(-x ^ 2 - y ^ 2 + x * y),即如何将它提供给integral2。 |非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

怎么样:

I = [1:K]';
J = [1:K]';
funhandle = @(x,y)(sum(sum(...
repmat(alpha(I),1,K)...
.*repmat(alpha(J)',K,1)...
.*repmat(x.^I,1,K)...
.*repmat((y.^J)',K,1)))...
*exp(-x^2-y^2+x*y))

我认为它能够正确地得到你想要的总和......