由于MATLAB自己没有附带贝塞尔函数零点,因此使用起来很不方便,特别是在绘制仿真场量时。
下面给出0~9阶的贝塞尔函数零点的计算公式,其中理论上计算零点个数N在50以内时较为精确:
function rootBessel = besal_pi0(n,N) % 求解n阶贝塞尔函数的零点(-)
% n为贝塞尔函数阶数
% N为要求的零点数量 j = zeros(n+, N); % 贝塞尔函数的根
incr = 4.0;
for v = : n
h = v + 1.9*v^(/)+;
if (v == ) % 0阶贝塞尔函数的第一个零点
j(v+,) = fzero(@(x)besselj(v,x),);
else % 1阶及以上阶贝塞尔函数的第一个零点
j(v+,) = fzero(@(x)besselj(v,x),h);
end
for s = : N % 贝塞尔函数的第2个及后面的零点
j(v+,s) = fzero(@(x)besselj(v,x),j(v+,s-)+incr);
end
end rootBessel = j;