我需要在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)
是被积函数。 InnerIntegral
对rho_2
和phi_2
进行评估,该integral2
和rho_1
来自外部phi_1
(Error 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}}调用的不同数组大小造成的吗?有什么问题?
答案 0 :(得分:0)
请参阅我对此similar question的回答。 在您的情况下,您可以使用
integral2(@(rho_1,phi_1)arrayfun(InnerIntegral,rho_1,phi_1),0,3,0,2*pi)