举报
狂喷
你看看你的被积函数,如果a达到pi/2的话,sec(a)为无穷,这样y中那个exp(0.05*z*sec(a))也会导致无穷。被积函数是奇异的。所以,我没有按你给的上下限计算。我按-1.5到1.5计算的。给你写了函数你参考下: function r = ForLenism(low,up) r = quadgk(@(a) arrayfun(@myfun,a).*((sec(a)).^3) ,low,up); %关于a的被积函数 function y = myfun(a) f = quad2d(@(x,z) -0.004*x.*(1-(z/6.25).^2).*exp(0.05*z*sec(a)).*(cos(0.05*x.*(sec(a)))+1i*sin(0.05*x.*sec(a))),0,100,-6.25,0); y = f*f';%f和f的共轭复数相乘,即I^2+J^2 用法说明: low是a的积分下限,up是上限。r是返回的最终积分结果。譬如下面, >> low = -1.5; >> up = 1.5; >> r = ForLenism(low,up) r = 4.059230653321597e+003 函数中quadgk还有quad2d需要比较新的MATLAB才有,起码应该是2009a以后的吧。 另外上面的代码如果有疑问请参考我的书http://baike.baidu.com/view/3858506.htm 积分的相关章节 当当上面有卖。