matlab中的双积分实现

double integral implementation in matlab

我很难实现下面的二重积分。积分里面有一个求和,这让事情有点复杂。我做的matlab代码如下,总是出现"Matrix dimensions must agree."这样的错误,有什么实现的提示吗?谢谢

n=3;
nn=1:n;
aa=gamma([1:n])
thre=3;
lapha=4;
r=3;
fun1= @(theta, x) (1-sum( lambda *pi *( (x-r).^2+r^2-(x-r).*r.*cos(theta)).^(nn-1)./aa).*exp(-1*lambda *pi*((x-r).^2+r^2-(x-r).*r.*cos(theta)))).*lambda/n*(1-1/2^n).*thre.*r.^alpha.*(x-r).^(1-alpha) ;
answer=integral2( fun1, 0, 2*pi, 0, inf )

二重积分:

您的问题是您在积分函数中计算总和的方式。 intergal2 的文档说函数参数 必须接受相同大小的数组 X 和 Y 和 return 对应值的数组 。但是函数定义里面的这个表达式:

((x-r).^2 + r^2 - (x-r).*r.*cos(theta)).^(nn-1)./aa

没有按您预期的方式工作,因为是您决定了 nnaa 的大小,而 integral2 决定了向量 [=15] 的大小=] 和 theta;难怪大家对此意见不一