MATLAB得到贝塞尔函数零点

有时,我们需要求解贝塞尔函数的零点
MATLAB的数值求解函数fzero()可以用来解决这个问题:

clear
besselj1 = @(x)besselj(1,x) %一阶贝塞尔函数的匿名函数形式
for n = 1:10
    z(n) = fzero(besselj1,[(n-1) n]*pi);
end

x = 0:pi/100:10*pi;
y = besselj(1,x);
plot(z,zeros(1,10),'o',x,y,'-');
line([0 10*pi],[0 0],'color','black')
axis([0 10*pi -0.5 1.0])
xlabel('U')
ylabel('J_1(U)')

结果:

 图中贝塞尔函数的零点被圆圈标出,需要注意的是,这里对每一个零点做了一个划分,既假定零点在(n-1)*pi和n*pi之间。

这可以从贝塞尔函数的性质得到解释。

如果需要精确的数值,可以使用如下语句:

[(1:n)' z']

可以得到刚才求出的前十个数值解。

结果:

来源《高等光学仿真——光波导、激光》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值