使用嵌套的integral2进行四重集成的输入数组大小错误

时间:2014-03-01 11:10:31

标签: matlab

我需要在matlab中使用integral2函数执行四重积分。代码如下:

Rb = @(rho_1,phi_1) rho_1.*cos(phi_1);
Sb = @(rho_2,phi_2) rho_2.*cos(phi_2);
Tb = @(rho_1,phi_1,rho_2,phi_2) rho_1.*cos(phi_1)-rho_2.*cos(phi_2);
InnerIntegrand = @(rho_1,phi_1,rho_2,phi_2) Rb(rho_1,phi_1).*Sb(rho_2,phi_2).*Tb(rho_1,phi_1,rho_2,phi_2);
InnerIntegral = @(rho_1,phi_1) integral2(@(rho_2,phi_2) InnerIntegrand(rho_1,phi_1,rho_2,phi_2),0,3,0,2*pi);
II = integral2(InnerIntegral,0,3,0,2*pi);

InnerIntegrand (rho_1,phi_1,rho_2,phi_2)是被积函数。 InnerIntegralrho_2phi_2进行评估,该integral2rho_1来自外部phi_1Error using .* Matrix dimensions must agree. Error in @(rho_1,phi_1,rho_2,phi_2)Rb(rho_1,phi_1).*Sb(rho_2,phi_2).*Tb(rho_1,phi_1,rho_2,phi_2) Error in @(rho_2,phi_2)InnerIntegrand(rho_1,phi_1,rho_2,phi_2) Error in integral2Calc>integral2t/tensor (line 238) Z1 = FUN(X(VTSTIDX),Y(VTSTIDX)); NFE = NFE + 1; integral2上的整合)。

我收到错误:

{{1}}

错误是由于两个{{1}}调用的不同数组大小造成的吗?有什么问题?

1 个答案:

答案 0 :(得分:0)

请参阅我对此similar question的回答。 在您的情况下,您可以使用

integral2(@(rho_1,phi_1)arrayfun(InnerIntegral,rho_1,phi_1),0,3,0,2*pi)