[size=3]我最近在用Matlab做一个关于bessel 函数的积分问题,因为积分上线是无穷,help 里面讲的都是有限的积分,没有help 到无穷的积分.所以想请教一下各位,帮帮忙哦!多谢啦!最近因为这个含有Bessel函数的积分问题都困了好久啦,谢谢高手哦![/size]
[size=4][color=FF0000]理论上的话,besselj函数在上限应该有个值收敛,可现在是积分取得越大,反而值越大,而且quadl求解积分时在上限1600时候会有跳跃点,反而quad没有,为什么呢?[/color][/size]
[/size][color=FF00FF][size=5]程序如下[/size][/color][/size]
syms  a w P A Fai dZ dz K c;

M=[];
N=[];
f=500;

u0=4*pi*1.0e-7;
r1=11e-3;
r2=12e-3;
l1=4.3e-3;
l2=48.3e-3;
N1=50;

K=((pi*u0*N1*N1)/((l2-l1)*(l2-l1)*(r2-r1)*(r2-r1)));

P='(1/2*pi*a*r2*besselj(1,a*r2)*[color=FF0000]StruveH[/color](0,a*r2)-1/2*pi*a*r2*besselj(0,a*r2)*StruveH(1,a*r2)-1/2*pi*a*r1*besselj(1,a*r1)*StruveH(0,a*r1)+1/2*pi*a*r1*besselj(0,a*r1)*StruveH(1,a*r1))';
A='(exp(-2*l2*a)+exp(-2*l1*a)-2*exp(-a*(l2+l1)))';
Fai='((a^2-(a^2+w*j*44.485))*(1-exp(sqrt(a^2+w*j*44.485)*c*2))/((a-sqrt(a^2+w*j*44.485))^2-(a+sqrt(a^2+w*j*44.485))^2*exp(sqrt(a^2+w*j*44.485)*c*2)))';
dz=strcat('j*w*',P,'^2/a^5*(2*(l2-l1)+1/a*(2*exp(-a*(l2-l1))-2+',A,'*',Fai,'))');

dz=strrep(dz,'c','0.52e-003');


 for  n=1:2:99
     w=2*pi*f*n;
     dZ=subs(dz);
     dZ=inline(dZ);
     [color=FF0000]Z=quad(dZ,0,1600); %%%%%%积分上限本来是无穷,现在就是为了近似确定它的上限值[/color]
     M=[M Z];
 end
Zl=K*M;
figure(1);
plot(real(Zl));
figure(2);
plot(imag(Zl));

[color=FF00FF]以下是StruveH函数[/color]
function y=StruveH(v,x)
    
    m=[];
    for k=0:20
    q=(-1)^k*(1/2*x)^(2*k)/(gamma(k+3/2)*gamma(k+v+3/2));
    m=[m,q];
   end
    y=(1/2*x)^(v+1)*sum(m);