请问关于Bessel简单函数的零点
请问用matlab怎么求 Bessel 函数的零点?比如在0到100范围内mathematica: Plot, {x, 0, 100}]
并且怎么以表的形势列出所有的零点呢?
多谢指教$握手$ 用单句语句,自己是没有想出来。用一段语句,还是可以实现的,关键的是函数是
fzero(inline('besselj(0,x)'),)
这里,函数将返回a1 a2之中的离a1最近的零点。如果f(a1) 和f(a2)符号相同,即使a1 a2中间有零,函数也会出错,所以,用一个范围先粗粗的得到一些值,比如
y=besselj(0,1:0.1:100);
这样可以先得到0 到100之间,间隔为0.1的函数的值,然后判断相邻的符号为负的点
i=find(y(1:1000).*y(2:1001)<0);
然后,循环,得到每一个i对应的范围,求出精确值。
完整的步骤见下面;为了方便,用表示范围,b表示粗算精度:
a=0;c=100;b=0.1;
x=;
y=besselj(0,x);
i=find(y(1 : (c-a)/b).*y(2 : (c-a)/b+1)<0);
for j=1:size(i,2);
r(j) = fzero(inline('besselj(0,x)'),);
end
执行结果:
>>r
r =
Columns 1 through 9
2.4048 5.5201 8.6537 11.7915 14.9309 18.0711 21.2116 24.3525 27.4935
Columns 10 through 18
30.6346 33.7758 36.9171 40.0584 43.1998 46.3412 49.4826 52.6241 55.7655
Columns 19 through 27
58.9070 62.0485 65.1900 68.3315 71.4730 74.6145 77.7560 80.8976 84.0391
Columns 28 through 32
有更好的,欢迎再贴!
87.1806 90.3222 93.4637 96.6053 99.7468
[ 本帖最后由 recbio 于 2007-5-30 00:40 编辑 ] $高$$高$ ganz herzlichen Dank!!:)
页:
[1]