我想计算这个积分
integral2(function,0,a,0,2*pi)
其中
function = @(R,PHI) (e_r(R,PHI).*E_R(R,PHI) + e_phi(R,PHI).*E_PHI(R,PHI)).*R;
我得到警告
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
我认为该问题位于E_R(R,PHI)
和E_PHI(R,PHI)
函数内部,因为它们是由常量参数以及两个变量R
和PHI
造成的
E_R = @(R,PHI) (Ex*cos(PHI) + Ey*sin(PHI)) .* exp(1i*k*R.*cos(phi_inc-PHI).*sin(theta_inc));
E_PHI = @(R,PHI) (-Ex*sin(PHI) + Ey*cos(PHI)) .* exp(1i*k*R.*cos(phi_inc-PHI).*sin(theta_inc));
这里Ex, Ey
是我选择的复数,k
被赋予phi_inc
,theta_inc
被赋予弧度角。
我不理解该警告,因为我只是在将常量乘以依赖于我要集成的变量的变量。
要解决这个问题,我使用了integral2(function,0,a,0,2*pi,'method','iterated')
甚至是tiled
接缝来工作,但是计算起来太费力了。我想念什么吗?
编辑:实际上,当我更改theta_inc
时就会出现问题,该theta_inc = 0
描述了场对表面的入射角。如果我使用0°
,因为指数的整个指数变为零,就没有问题,但是对于大于predict()
的角度,模拟会给我该警告。
可能是由于我用来描述字段发生率的模型中的错误?